版本被苹果拒绝邮件内容如下:
发件人 Apple
2. 5 Performance: Software Requirements
Guideline 2.5.2 - Performance - Software Requirements
Your app, extension, 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.
The next submission of this app may require a longer review time.
Next Steps
- Review the Software Requirements section of the App Store Review Guidelines.
- Ensure your app is compliant with all sections of the App Store Review Guidelines and the Terms & Conditions of the Apple Developer Program.
- Once your app is fully compliant, resubmit your app for review.
Submitting apps designed to mislead or harm customers or evade the review process may result in the termination of your Apple Developer Program account. Review the Terms & Conditions of the Apple Developer Program to learn more about our policies regarding termination.
If you believe your app is compliant with the App Store Review Guidelines, you may submit an appeal. Alternatively, you may provide additional details about your app by replying directly to this message.
解决方案:
首先根据邮件内容定位到了项目中包含热修复的代码,然后将热修复相关模块删除。除此之外,检查了项目中用到的所有三方库中是否包含dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchangeImplementations()等方法。检查采用终端命令的方式进行,以微信为例终端下执行nm -u libWeChatSDK.a >> wechat.txt 。 wechat.txt这个文档中包含了微信SDK中用到的所有方法,全局搜索可以看到有没有用到苹果被拒邮件中的一些方法等。用此种方式可以看出百度统计、个推、高德地图等用到了热更新的方法等,需要将这些包进行删除或者更新到最新包。其他三方库可用同样的方式进行查询,涉及到热更新方法的三方库需要更新到最新库,或者删除此库。