遊戲提交蘋果審覈,被打回。在 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版本修復掉了,其它版本我不太肯定,能夠根據上面的路徑本身去排查一下。