Responsive image

[iOS] 蘋果全面禁止熱更新?! 答案是:並沒有!


Mar 13th 2017

禁止熱更新?不得使用JSpatch
本月有許多開發商收到了蘋果的警告信,信件內容雖長,但簡單來說,就是蘋果禁止熱更新,也就是禁止開發者使用JSpatch了。送審中的APP會被退審並要求更改,而已上線的則會收到警告信並要求被限時更新。(目前還沒有開發者被強制下架就是了)
IOS--1
從蘋果的角度看,禁止使用熱更新是為了保護使用者隱私、資料安全等。而對User來說,出於安全起見,應謹慎授予應用許可權;對於開發者來說,為了審核以及長遠的用戶體驗考慮,還是不要輕易觸碰蘋果的限制才好啊!
至於JSPatch的作者則針對蘋果警告寫了一篇公告,勸大家先不要用JSPatch。也表達若Apple可以的話,希望由官方能自己提供熱更新服務。
 
若真的禁止熱更新之影響
此舉對許多的遊戲開發商甚至是代理商都產生非常大的影響,特別ipa包或apk包越大的APP受到的影響會越大,因為禁止熱更新後,每改版一次就等於要求User必須重新安裝APP一遍,而這樣會有著什麼影響呢?
1.每次改版就必須重新安裝APP,此行動對玩家來說是不方便的,因為可能造成玩家流失。
2.呈上述,若想對玩家的影響降到最小,那是否表示必須減少改版的次數呢?若改版次數減少了,是否表示著遊戲更新不夠快而造成玩家流失?
除了上述兩點之外,當然還會延伸更多的問題,例如:Bug處理的便利性等等。
 
React Native為何未被禁?!
禁止熱更新的消息一出,也有人在謠傳同樣擁有熱更新能力的React Native也會被下架,雖然後來被證實是誤會一場!所以,目前狀況是使用React Native可以,但不能使用JSpatch。(在這裡也提醒大家,很多開發者是因為用到另一個工具Rollout.io而被警告。)
 
蘋果是不是完全禁止了熱更新?
答案是:並沒有!我們來看看Apple關於熱更新部份,相關規範寫在開發者協議的3.3.2條,內文節錄如下:
3.3.2 Except as set forth in the next paragraph, an Application may not download or install executable code. Interpreted code may only be used in an Application if all scripts, code and interpreters are packaged in the Application and not downloaded. The only exceptions to the foregoing are scripts and code downloaded and run by Apple’s built-in WebKit framework or JavascriptCore, provided that such scripts and code do not change the primary purpose of the Application by providing features or functionality that are inconsistent with the intended and advertised purpose of the Application as submitted to the App Store.
簡單說,在沒有大幅修改App功能表現且在Apple提供的腳本環境下,Apple是允許熱更新的,而React Native使用的是JavascriptCore,或許就是這個原因,所以才React Native未被禁止!所以熱更新並不是完全的禁止使用,只是要使用Apple可接受的方式罷了。若正在開發中的遊戲能照此規範走,應該就能過關,但若是已開發的遊戲,目前是有部份開發者在研究怎麼混淆JSPatch來躲避(但這當然還是有風險在)。
 
參考資料:
Apple iOS 審查與動態更新
App Store禁止热更新 包体越大的产品越悲剧
苹果禁止游戏使用热更新技术?并不影响 Egret-iOS-Support
蘋果禁止遊戲使用熱更新技術?

相關文章