Unity3D游戏AppStore审核因为ASIdentifierManager被拒的解决办法

上周末我们的游戏『铁血战神』提交AppStore审核已经快一周了还木有结果,很是着急啊。周六上午终于有消息了,只可惜不是什么好消息,我们被拒了,被拒绝的原因很简单:

“You and Your Applications (and any third party with whom you have contracted to serve advertising) may use the Advertising Identifier, and any information obtained through the use of the Advertising Identifier, only for the purpose of serving advertising. If a user resets the Advertising Identifier, then You agree not to combine, correlate, link or otherwise associate, either directly or indirectly, the prior Advertising Identifier and any derived information with the reset Advertising Identifier.”

Note: iAd does not use the AdSupport framework, ASIdentifierManager, or the Advertising Identifier. Therefore they are not required for iAd implementations and should not be included in your app for iAd support.

Please check your code – including any third-party libraries – to remove any instances of:

class: ASIdentifierManager

selector: advertisingIdentifier

framework: AdSupport.framework

就是我们的游戏中没有任何广告,同时我们也不帮其他的应用做推广,那么好吧,苹果认为我们不应该使用这个专门为广告而设定的接口(真是尼玛没有道理可以讲啊,据说是为了打击积分墙等类似的推广手段,防止刷榜等等)。

那么好吧,先把我们自己使用到ASIdentifierManager处的代码全部干掉,那么这样是不是就可以重新打包然后再提交呢?

貌似不是滴,咱们还是遍历查找一下整个工程的代码吧,看看还有没有别的地方调用到了这个类的某些方法,最终你会发现,Unity3D编译出来的iOS工程中的部分iOS代码使也用到了这个接口,这部分代码在编译出来的工程下,Classes/Unity/DeviceSettings.mm文件中。

不得不说Unity3D的实现还是比较好的,最起码没有包含AdSupport.framework,没有直接引用头文件,也没有直接调用ASIdentifierManager这个类的advertisingIdentifier方法,而是通过动态的查找这个类库同时动态的找到方法再调用,不过貌似这样也木有办法绕过苹果的审核哦。最终还是会现形的,那么最终如何解决呢?

Unity3D的官方论坛上已经有了Unity3D的开发人员给出的Quick Fix了,大家自行前往查看即可,传送门在这里.

大体的思路还是将使用到的代码都删掉,不过为了避免以后每次重新编译Unity3D项目到Xcode工程时,都得手动修改一次,Unity3D的官方人员也提到最好还是一次性搞定Unity3D使用到的模板文件,这个文件就在/Applications/Unity/Unity.app/Contents/PlaybackEngines/iPhonePlayer/iPhone-Trampoline/Classes/下,找到DeviceSettings.mm文件,按照那个Unity3D官方的Quick Fix来修改,以后每次编译出来的新工程中这个文件就不需要再次手动修改了。

修改完了之后,重新打包测试提交,顺利通过审核,感谢所有TV啊。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据