这段时间刚入职新公司,在弄着app更新,但是事情却不顺利,审核被拒了,返回信息如下:
Guideline 2.5.2 - Performance - Software Requirements
During review, your app installed or launched executable code, which is not permitted on the App Store. Specifically, your app uses the itms-services URL scheme to install an app.
Please note that while educational apps designed to teach, develop, or allow students to test executable code may, in limited circumstances, download code, such code may not be used for other purposes and such apps must make the source code completely viewable and editable by the user.
The next submission of this app may require a longer review time, and this app will not be eligible for an expedited review until this issue is resolved.
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.
Guideline 4.0 - Design
Your app includes an update button or alerts the user to update the app, but the update button or alert does not link directly to the app’s page on the App Store.
Next Steps
To resolve this issue, please ensure that tapping the update button takes the user directly to the app’s page on the App Store to update the app.
大概意思就是我的app会通过url进行安装其他app,应用程序中或者框架中使用了苹果禁止的私有方法,或者热修复。大概就是这2个原因导致上架被拒了。
1.应用程序中或者框架中使用了苹果禁止的私有方法,或者热修复。
各种百度 Google,询问各位网友关于Guideline 2.5.2的信息,许多网友说是第三方SDK里面含有一些苹果禁止的dlopen()、dlsym()、responseToSelector等私有方法。
按照网友的方法(打印第三方.a文件所需命令行命令)
1️⃣ cd进入 .a上级文件夹目录 (找到.a文件的目录)
2️⃣ 执行命令 nm -n xxx.a >> xxx.txt (将 静态库名.a 所用的函数名保存到 xxx.txt 文件中)
打开xxx.txt 文件搜索dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchangeImplementations()函数名,这些函数如果有用到的恭喜你中奖了,需要将第三方库更新(有的第三方库最新版本可能不行反而老版本的可以,是否更新那就自己斟酌了)。
靠着网友传授的“神功”,我在txt寻找着dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchangeImplementations()等函数,但是都没有发现,不是因为第三方SDK导致上架被拒的。
2.app会通过url进行安装其他app
怀疑是app的更新提示导致的,我的这个app是电商类型的,之前有做过强制更新的功能,所以我把app更新相关的代码都屏蔽了,重新上架审核。
但是过了几天,又被拒了。ㄟ( ▔, ▔ )ㄏ 无奈了,拒绝的理由还是Guideline 2.5.2,苹果爸爸真厉害。失败了一次,只能重新查看代码中是否还有其他问题。既然上次没有在app中发现应用程序中或者框架中使用了苹果禁止的私有方法,或者热修复的相关代码,那就只能app会通过url进行安装其他app导致的被拒。
好吧,运行代码。电商类型app是需要支付的,此项目中接入了微信与支付宝支付。那么是不是因为支付的问题才被拒的呢?突然想到,苹果审核那边的手机可能没有支付宝或者微信app,这个居然没想到,测试的时候也不曾设置过没有支付宝或者微信的测试环境,玩大发了 =_=!
把手机里面的支付宝,微信都删除了,运行app,下单支付。 果然,问题出现了 /(ㄒoㄒ)/~~ 此时,我的手机是没有安装支付宝与微信的,下单支付的时候,选择微信支付,没有什么反应,不会跳转网页或app。下一个,选择支付宝支付,支付宝居然会跳转一个网页,在这个网页中会要求下载支付宝app,基于AppStore的审核,我肯定不想下载支付宝啦,然而,我被支付宝大佬打脸了 ( ̄ε(# ̄)☆╰╮( ̄▽ ̄///) 当我点击离开网页的时候,居然没法退出网页,我的天啊,不下载就别想离开这个网页了,支付宝大佬的态度真是强硬!!!对于这种强硬的操作,我是相当的服气,相当的服气,相当的服气!重要的事情说3遍。 我在想之前这个app是怎么成功上架几次的?是苹果审核没有发现这个问题吗? 我终于明白我的app被拒的原因了 /(ㄒoㄒ)/~~
应对措施:在下单支付的Controller中,要判断是否安装微信与支付宝,如果没有安装app,就隐藏对应的支付方式。
以下是我的判断代码:
if (![WXApi isWXAppInstalled]) {
self.weixinView.hidden = YES;
}
self.aliPayView.hidden = ![[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"alipay:"]];
好了,打包,重新上传到App Store等待审核。
苹果爸爸虐我千百遍,我待苹果爸爸如初恋。 /(ㄒoㄒ)/~~