iOS App Store使用私有API被拒接收錄

一、被拒接郵件

準則2.5.1 -性能-軟件需求

您的應用程序使用或引用以下非公共api:

[UIApplication statusBar], [UIApplication statusBarWindow], [UITextField _clearButton], [WKWebView browsingContextController], __NSArrayI, __NSArrayM, __NSCFConstantString, __NSCFString, __nsnsdictionarym, __NSPlaceholderArray, __NSSingleObjectArrayI, _UIStatusBarStringView, _UIStatusBarWifiSignalView, LSApplicationWorkspace, ns具結屬性tedstring, ns具結屬性tedstring, UIScrollViewPanGestureRecognizer, UIStatusBarDataNetworkItemView

應用程序商店不允許使用非公共api,因為如果這些api發(fā)生變化,可能會導致糟糕的用戶體驗。

在未來提交本應用時,繼續(xù)使用或隱藏非公開api可能會導致您的蘋果開發(fā)者賬號被終止,并從app Store中刪除所有相關應用。

下一個步驟

如果您正在使用第三方庫,請更新到這些庫的最新版本。如果無法訪問庫的源代碼,則可以使用“string”或“otool”命令行工具搜索編譯后的二進制文件?!皊trings”工具可以輸出庫調用的方法列表,“otool -ov”將輸出Objective-C類結構及其定義的方法。這些工具可以幫助您縮小問題代碼所在的范圍。您還可以使用“nm”工具來驗證是否有第三方庫調用這些api。

資源

如果無法提供應用程序所需的功能,可以提交增強請求。

二、私有庫被拒接解決方案

iOS私有API檢測

蘋果推薦用郵件中提及,可以通過strings、otool、nm等命令行工具來定位調用私有API的第三方類,下面來簡單總結一下幾種工具的用法。

1、preg檢測

在終端:
(1)cd 項目目錄下

//比如蘋果檢測出來的私有庫是:UIStatusBarStringView,那就用下面方法檢查,會列出私有庫所在類下面。
(2)grep UIStatusBarStringView -r .

上面(2)命令會查找根目錄以及多級目錄以下的所有文件,包括.framework和.a庫,找到匹配結果的話,會打印出來。
-r參數(shù)表示會遍歷多級目錄下的文件。
注意:-r和.之間有個空格

2、otool Xcode自帶工具

(1)工程中獲取Unix執(zhí)行文件
a、在Xcode文件樹中搜索“.app”
b、找到對應文件,右鍵“Show in Finder”
c、選中.app文件,右鍵“顯示包內容”
d、下拉可找到一個跟app名字一致的Unix執(zhí)行文件,【這個文件是黑的的,名字就是APP的中文名字】

(2)在終端命令執(zhí)行

otool -L (Unix可執(zhí)行文件的路徑,直接拖入文件到終端)

12、libGDTMobSDK廣點通私有庫(已刪除)
Binary file ./YueZhuan/Resource/3rd/DKAdSetSDK_1.4.3_171114/DKADSetLibs/GDT_iOS_SDK_4.6.4_171031/lib/libGDTMobSDK.a matches

3、全局搜索(建議使用)

這個方法是我認為最直接最有效的方法!
1、 cd 到你的工程目錄

比如要檢測私有庫:AmazonFling.framework
2、使用全局搜索命令(注意最后要加一個點):

grep -r lockcomplete .

這個方法直接定位到這個私有api出現(xiàn)在 AmazonFling.framework 中。

到這里,解決上述第三方庫的私有API的問題,就是直接替換掉新的SDK,當然如果新的第三方庫也有私有API的話,那就只能舍棄了,否則基本無解。

4、strings檢測

(1)首先你有個可以提交審核的ipa,就是需要提交到蘋果審核的包,不是測試的release
(2)將ipa重命名為zip格式,也可以直接使用解壓工具解壓, 如果有兩個文件夾Payload、Symbols,就OK
(3)cd到Payload里面的app

(4)命令如下:canOpenUrl為你要搜索的私有API.

strings - -a -arch armv7 "全民頭條" | grep canOpenUrl


三、蘋果私有API收錄--持續(xù)更新中

1、LSApplicationWorkspace

2、UIScrollViewPanGestureRecognizer

3、[WKWebView browsingContextController]

4、__NSArrayI, __NSArrayM, 
__NSCFConstantString,__NSCFString,
 __NSDictionaryM, __NSPlaceholderArray, 
__NSSingleObjectArrayI  __NSCFBoolean (AvoidCrash防崩潰三方庫不能再使用)

5、_UIStatusBarStringView

6、_UIStatusBarWifiSignalView

7、UIStatusBarDataNetworkItemView

8、[UIApplication statusBar]

9、 [UIApplication statusBarWindow]

10、 [UITextField _clearButton] (已完成)

11、NSConcreteAttributedString

12、

目前還沒有通過審核,后續(xù)更新-----

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容