應對蘋果政策,白鷺引擎助力數十家團隊過審 AppStore 經驗分享

2019年蘋果更新了對HTML5遊戲的政策,要求HTML5遊戲應在 Safari瀏覽器中展示,而不是直接打包爲 ipa 發佈到 AppStore 中,對此,不少 開發者給予關注,並跟咱們諮詢尋求幫助,解決他們在白鷺引擎開發的HTML5遊戲發佈到AppStore的問題。瀏覽器

在咱們白鷺完整的開發工做流產品中,使用Egret Native就能夠解決就能夠解決這個問題。性能優化

在最近幾個月的時間中,咱們引擎團隊幫助數十家開發商成功將其產品順利經過 AppStore 新規審覈,總結了一些實操經驗,今天跟你們分享下, 但願能夠幫助更多的開發者朋友過審AppStore。服務器

必定不要使用 WKWebView 直接打包

這是蘋果如今重點打擊的目標,請開發者必定要採用 Egret Native 提供的打包方式進行打包,而不是使用 WKWebView。具體緣由是,WKWebView發佈的遊戲是一個運行在HTML5環境下的遊戲,不符合最新的開發者規範中的4.7項。而 Egret Native 與WKWebView不一樣,底層運行的是一套純原生的、而且針對白鷺引擎進行了大量定製性能優化的渲染引擎,徹底符合蘋果的開發者規範。微信

此外,咱們強烈建議您開啓 EgretNative的NativeRenderer 模式,採用這種模式不只能夠大幅提高您的遊戲性能,並且通過實際驗證,能夠進一步提高AppStore的過審機率。網絡

遊戲代碼應打包至本地而非遠程下載

蘋果針對應用的熱更新如今提出了更嚴格的要求,您若是收到了蘋果的拒絕郵件,而且其中明確您違反了 Guideline 2.5.2 - Performance 這一項中的 During review, your app contains the ability to download code, which is not permitted on the App Store 這一部份內容,您須要修改現有項目結構,將遊戲代碼應打包至本地而非遠程下載,具體一個簡單的驗證手段以下:app

  1. 將您的測試機關掉WiFi/4G ,保持其處於無網絡環境
  2. 啓動您的遊戲
  3. 確保在無網絡環境下,您的遊戲能夠順利運行,直到遊戲邏輯必須須要鏈接網絡(好比登陸游戲服務器),至少渲染出一個登陸界面,而且該界面是使用白鷺引擎渲染的而非自行添加的 iOS Native控件
  4. 遊戲前30分鐘的資源所有在IPA中加載,而非網絡加載,網絡消息只是用來進行必要的客戶端服務器交互

原生代碼中請不要包含任何 WKWebView

不只遊戲自己不要使用 WKWebView,咱們建議您最好不要在 iOS 原生代碼中包含任何的 WKWebView,由於理論上若是您包含 WKWebView,您就具有了在蘋果審覈後經過更換連接的方式在蘋果未審覈的狀況下在App中添加其餘功能的能力,這就違反了蘋果開發者規範中的 Guideline 2.3.1 - Performance, We discovered that your app contains hidden features.這一部分。ide

針對此問題,咱們建議您能夠從蘋果的角度去思考,這款App從技術實現角度來看,是否具有了繞過蘋果審覈添加新功能的能力。舉個例子,理論上您的代碼裏只要包含一個 WKWebView,而且這個WKWebView能夠被遊戲隨時喚醒,理論上就具有了在蘋果過審後將蘋果支付修改成彈出 WebView並在其中添加微信/支付寶網頁支付的能力。若是您的 App 在技術角度來看具有這樣的潛力(哪怕您無心這樣作),就必定不會過審。性能

確保您的代碼中不包含第三方支付代碼

這點問題與上一條相似,請確保您的代碼(特別是遺留代碼,以及接入的第三方SDK代碼)中不包含第三方支付代碼,不然您就違反了蘋果開發者規範中的 Guideline 3.1.1 - Business - Payments - In-App Purchase We noticed that your app or its metadata enables the purchase of content, services, or functionality in the app by means other than the in-app purchase API, which is not appropriate for the App Store 這一部分。測試

在咱們進行技術支持的客戶中,屢次出現過開發商接入了聚合支付SDK(通常是本身公司的其餘部門編寫的)中包含了微信支付/支付寶支付的代碼,雖然這些代碼並不會真正運行,可是仍然由於該緣由被蘋果拒絕過深。微信支付

總結

從上文能夠看出,蘋果但願開發者作的是:

  • 爲 AppStore 提交優質的內容
  • 確保採用蘋果支付

蘋果禁止開發者作的是:

  • 爲蘋果提供劣質內容
  • 爲蘋果提供虛假內容並後續經過熱更新來進行替換(馬甲包)
  • 任何有可能致使用戶使用第三方支付代替蘋果支付的行爲
注:這些原則只是白鷺引擎團隊根據咱們協助開發者成功過審的經驗而得出的原則,並不是表明蘋果官方觀點。

開發者應隨時審視本身的應用是否符合上述原則。若是您仍然存在問題,能夠與白鷺引擎的技術支持團隊聯繫,咱們能夠爲您提供的蘋果過審技術顧問。

你們能夠掃描文章尾部的二維碼便可聯繫白鷺引擎技術支持團隊,還可參與咱們今天舉辦的抽獎小活動。

後續展望

咱們今天(2020年3月3日)還發布了 Egret Native 1.0.1 版本,修復了多處原生渲染相關的BUG,特別是一個關於 iOS 13.4(蘋果開發者預覽版本)上因爲蘋果的API調整致使EgretNative黑屏的問題,建議全部開發者更新至此版本以防止 iOS 13.4 正式發佈後現有遊戲出現此問題。

除此以外,咱們進一步提高了 EgretNative 的啓動速度,目前一個HelloWorld的啓動時間大約提高了10%左右。咱們後續也會繼續針對 NativeRenderer 的性能和穩定性進行更多的優化。

咱們在2020年1月份收到了蘋果的郵件,蘋果指出目前 Egret Native 底層採用的 OpenGL 在將來有可能被廢棄,推薦咱們採用蘋果的新技術 Metal 做爲其替代品。白鷺團隊正在探索將底層從 OpenGL 切換爲 Metal 的可行性,咱們目前傾向於基於一些業界相對成熟的開源項目進行一些改造,目前已經有了初步方案,咱們將在蘋果蘋果正式廢棄 OpenGL 時作好充分的準備工做,若是有開發者收到相似郵件請無需緊張。

最後,祝你們成功過審AppStore,中間如有其它問題可與我聯繫!

謝謝!

相關文章
相關標籤/搜索