近期 Unity 提交蘋果審覈被拒的問題

遊戲提交蘋果審覈,被打回。在 bugly 上沒有查到崩潰信息,蘋果給了 crash 日誌也說明。

拒絕原因如下:

Your app crashed on iPad or iPhone running iOS 11.2.5 connected to an IPv6 network during our review.

logs 日誌也看不出什麼,初看像是 IPv6的問題,實際上與IPV6無關。

之後同事幫忙搜索文章,有一篇文章說是 AB 的加載方式,不要用 WWW。我們遊戲裏沒有用過這個方法,先排除掉。後來在知乎上找到一篇文章:

最近好多朋友因爲這個問題被IOS拒審>>

依據文章提供的線索,找到 DisplayManager.mm 文件 中的 – (id)init 方法,將監聽 AirPlay 的事件註釋掉即可。

蘋果審覈環境的模擬:

一臺 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版本修復掉了,其它版本我不太確定,可以根據上面的路徑自己去排查一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章