蘋果用一封郵件對“熱更新”下達了最后的通牒,也讓iOS開發者們度過了坐立不安的一天。
“熱更新”也就是動態下發代碼,它可以使開發者在不發布版本的情況下,修復BUG和發布功能。這讓開發者繞開了蘋果的審核機制,避免長時間的審核等待以及多次被拒造成的成本開銷。
但現在,蘋果正在對“熱更新”實行更嚴厲的審查。昨天,不少開發者收到了來自蘋果的郵件。蘋果在郵件中表示,將不再允許使用動態下發代碼的機制。蘋果要求被警告的開發者在下個版本中去除能動態改變應用行為和目標的功能,否則會被拒甚至下架。
蘋果向開發者發出的郵件
看到這里,技術小白們幾乎快要絕望了,到底發生了什么?觸控副總裁、Cocos 引擎創始人王哲用一句話來描述這件事情:蘋果審核對熱更新開刀,國內外廠商中招。
是什么導致了警告?
最開始,王哲在 Cocos 引擎官方微信公眾號上提到的原因是 “蘋果怒懟微軟”:
昨天晚上微軟發布 Visual Studio 2017,自帶基于 React Native 的 iOS 開發功能,鑒于微軟這兩年來開源的力量,發布這一功能似乎是在搶占開發者市場。結果就是有了 VS2017,在非蘋果上開發 iOS 應用更容易了。所以,蘋果在這個節骨眼發出這樣的警告郵件,其實暗地里就是要和微軟互懟。
不過后來王哲也表示,這只不過是一個調侃。大多數開發者也認為一天內的反應動作也太快了,不可能。
而這個事件背后真正的原因,大部分開發者認為是項目中使用了 JSPatch,Weex,Rollout.io 及其 ReactNative 等平臺的熱更新技術。隨著事情的發展,開發者們發現蘋果主要的針對的是 JSPatch,Rollout.io 兩家,原因是 ReactNative,Weex 主要的功能是為開發者跨平臺的解決方案,熱更新只是其附帶功能。
目前有開發者匯總了受到影響的第三方 SDK,開發框架,其中包括高德地圖,BugTags,個推,Bugly,友盟等。
這件事情在開發人員中引起巨大的關注,是因為這關乎到蘋果對于“熱更新”這一功能的態度。這次禁止的是代碼動態下發,也可以認為是蘋果禁止熱更新功能,但是部分平臺如 React Native 的熱更新功能并沒有被禁止。因此還有不少開發者困惑,到底什么是“可以”。
但事實上,在蘋果開發者條款中早就明確,使用腳本進行熱更新,是違反規定的。
蘋果開發者條款
在王哲看來,蘋果過去對這件事的態度是睜一只眼閉一只眼,熱更新也早已成為開發者們青睞的一門技術。王哲介紹到國內絕大多數 iOS 手游,不論是 Cocos 還是Unity,都在用熱更新功能,一些國內大企業也在使用腳本對游戲進行小版本熱更新。
“如果只是為了提高用戶體驗,這點和蘋果的利益出發點是高度一致的。”
王哲認為這是蘋果之前沒有對熱更新痛下殺手的原因。
然而確實也有不少開發者利用這個功能,做一些觸犯蘋果底線的事情。王哲舉例說道:
“熱更新可以用來做任何事情,比如一個好好的應用,可以瞬間更新成一個色情小說的 App,這樣就繞開了蘋果的審核。”
眼下,開發者們還在觀察蘋果的下一步動態,但不論如何大部分開發者認為“跟著規則走”是他們唯一的選擇。ID 為 stormzhang 的業內人士在他的微信公眾號AndroidDeveloper 上提了兩點建議:
國內 App 如果有在使用 JSPatch 的,那么請移除;
更新或者移除一些第三方使用 JSPatch 的 SDK。
王哲認為事件的核心在于:
“ 別干壞事,如果大家只是為了提高用戶體驗,提高運營效率,不作惡,就沒什么原則上的問題了,剩下的只是技術上的小修復而已。”