「iOS」熱更新審核被拒的解決方法

最近很多人提交到App Store審核被拒,樓主也不列外,提交了好幾個版本,都一一被打回了,而且你去問他們的審核團隊什么地方有問題,他們也只會搪塞幾句,說等他們要再復(fù)查下,基本沒下文了,所以做人還得靠自己。

這是蘋果的答復(fù):

Thank you for your response. Your application is still in review but is requiring additional time. We will provide further status as soon as we are able. Thank you for your continued patience.

尼瑪這就是連發(fā)好幾封郵件,追著客服問的結(jié)果,扎心

好了廢話扯多了,進入正題,本人的項目中沒有引入jspath,所以我想到應(yīng)該不是我這邊的問題,而且網(wǎng)上都說是第三方的問題,于是樓主就從第三方的sdk入手。以下是樓主接入的第三方:jpush,bugly,百度地圖,百度導航,訊飛語音。度娘下看到bugly有熱更新,說更新到最新版本就沒問題了,但是他們的技術(shù)論壇中有人說道最新的2.4.7也有問題,查看公告。 慎重起見,算了就直接用jpush的崩潰日志了,滿心歡喜提交,結(jié)果:

發(fā)件人 Apple

  1. 5 Performance: Software Requirements (iOS)
    Performance - 2.5.2

Your app, extension, and/or linked framework appears to contain code designed explicitly with the capability to change your app’s behavior or functionality after App Review approval, which is not in compliance with App Store Review Guideline 2.5.2 and section 3.3.2 of the Apple Developer Program License Agreement.

This code, combined with a remote resource, can facilitate significant changes to your app’s behavior compared to when it was initially reviewed for the App Store. While you may not be using this functionality currently, it has the potential to load private frameworks, private methods, and enable future feature changes. This includes any code which passes arbitrary parameters to dynamic methods such as dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchangeImplementations(), and running remote scripts in order to change app behavior and/or call SPI, based on the contents of the downloaded script. Even if the remote resource is not intentionally malicious, it could easily be hijacked via a Man In The Middle (MiTM) attack, which can pose a serious security vulnerability to users of your app.

Next Steps

Perform an in-depth review of your app and remove any code, frameworks, or SDKs that fall in line with the functionality described above and resubmit your app’s binary for review.

對,又被拒了,當時就有點搞不懂了,難道還有那些第三方有問題,但是樓主其它的sdk在網(wǎng)上都沒有沒說涉及熱更新的,但沒辦法繼續(xù)查,度娘+google,結(jié)果發(fā)現(xiàn)有人說訊飛語音以前的framework涉及到一些私有方法,算了死馬當活馬醫(yī)把,更新提交,焦急等待,結(jié)果。。。。。。。懵逼了,同樣的理由被拒。

最后我在技術(shù)交流群里溝通了下,了解到可以打印下第三方的.a文件看看,看有沒有 dlopen(), dlsym(),命令行:

nm -u libwechaat.a >> xxx.txt 

生成的txt文件在finder中查找下。

終于我在百度導航的.a文件中看見了 _dlopen _dlsym,一看有戲,應(yīng)該就是百度導航的鍋(我的百度導航的版本2.0.7),馬上更新到最新版本3.1.0,再次提交,審核通過,萬歲 (前前后后提交了10個版本,終于過了,這幾天被項目經(jīng)理追著問進度,不說了都是淚)

最后附上樓主在集成百度地圖和百度導航的遇到的問題,大家可以參考下(最新的地圖sdk3.3.1和最新的導航sdk3.1.0,發(fā)現(xiàn)編譯是OK的,但一調(diào)用百度地圖,項目就奔潰了,連個日志都沒有,在他們的論壇查看了下,也有人遇到了問題,最后我用百度地圖V3.0.0和導航3.1的編譯ok,運行ok,這個問題可能大家不一定會遇到,可能是樓主自己的問題,大家參考下就行了)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容