應對iOS政策,白鷺引擎助力數十家團隊過審 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 這一部分內容,您需要修改現有項目結構,將遊戲代碼應打包至本地而非遠程下載,具體一個簡單的驗證手段如下:

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

原生代碼中請不要包含任何 WKWebView
不僅遊戲本身不要使用 WKWebView,我們建議您最好不要在 iOS 原生代碼中包含任何的 WKWebView,因爲理論上如果您包含 WKWebView,您就具備了在蘋果審覈後通過更換鏈接的方式在蘋果未審覈的情況下在App中添加其他功能的能力,這就違反了蘋果開發者規範中的 Guideline 2.3.1 - Performance, We discovered that your app contains hidden features.這一部分。

針對此問題,我們建議您可以從蘋果的角度去思考,這款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 時做好充分的準備工作,如果有開發者收到類似郵件請無需緊張。

最後,今天我們搞了一個小活動:

爲感謝諸多開發者朋友的長期支持,也希望開發者朋友和家人可以平安度過疫情,我們今天發起了1個小小的抽獎活動,獎品是一次性醫療口罩,數量不多,只是我們的一點點心意!祝願大家平安健康!

爲更好的擴散這條信息,我們就參與抽獎設置了一個小小門檻,希望您動動手指把這篇文章轉發到朋友圈,告知下身邊的開發者,將截圖發送給-白鷺引擎(見下),即可參與!謝謝大家!
應對iOS政策,白鷺引擎助力數十家團隊過審 AppStore 經驗分享

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