游戏提交苹果审核,被打回。在 bugly 上没有查到崩溃信息,苹果给了 crash 日志也说明。html
拒绝缘由以下:网络
Your app crashed on iPad or iPhone running iOS 11.2.5 connected to an IPv6 network during our review.app
logs 日志也看不出什么,初看像是 IPv6的问题,实际上与IPV6无关。测试
以后同事帮忙搜索文章,有一篇文章说是 AB 的加载方式,不要用 WWW。咱们游戏里没有用过这个方法,先排除掉。后来在知乎上找到一篇文章:日志
最近好多朋友由于这个问题被IOS拒审>>server
依据文章提供的线索,找到 DisplayManager.mm 文件 中的 – (id)init 方法,将监听 AirPlay 的事件注释掉便可。htm
苹果审核环境的模拟:blog
一台 iPhone 或 iPad + 一台 iMac。 Mac 上先安装 AirServer(选择试用版本 http://www.airserver.com/Download)游戏
而后移动设备的 wifi 链接 iMac 的共享网络。这样移动设备启用 屏幕镜像(AirPlay)就能够模拟进行测试了。事件
若是须要开启IPV6,只须要在 Mac 的设置 –> 共享,点击共享的时候,按住 Option 就会出现 IPv6的选项,移动设备链接成功后,能够从 DNS 上看出是否为 IPV6。
IPV6启用的具体步骤和方法,可参考这篇文章:Mac电脑搭建IPv6测试环境>>
移动设备镜像到 iMac 上,若是用数据线,不要求是同一网络,若是不使用数据线,则必须处于同一 Wifi 下。
若是后期预防此问题?
由于 DisplayManager.mm 是 Unity 打包的时候才会生成的,因此只须要替换模板便可。
我根据在 Windows 下的路径
在 Mac 的应用程序中,找到 Unity/PlaybvackEngines/iOSSupport/Trampoline/Classes/Unity/DisplayManager.mm 找到相应的位置,注释掉代码,保存。以后打出来的包就完全解决掉这个问题了。
上面这个 bug 属性 Unity 官方的 bug,2018.1.0b1版本修复掉了,其它版本我不太肯定,能够根据上面的路径本身去排查一下。