蘋果向熱更新下達最後通牒,是什麼導致了這次事件?
蘋果用一封郵件對“熱更新”下達了最後的通牒,也讓 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,友盟等。
隨着事情的發酵,ReactNative,Rollout.io 也對這件事情發出了官方的聲音。
Rollout.io 的首席執行官 Erez Rusovsky 表示,正在與蘋果聯繫,以便進一步查清為什麼 Roluput 不屬於允許開發人員將 JS 推送到實際應用程序的條款。
ReactNative 公司的軟件工程師 Bruno Lemos 也在 Github 網站上表示:ReactNative 與這個問題無關。
(ReactNative 公司的軟件工程師 Bruno Lemos的回覆 )
這件事情在開發人員中引起巨大的關注,是因為這關乎到蘋果對於“熱更新”這一功能的態度。這次禁止的是代碼動態下發,也可以認為是蘋果禁止熱更新功能,但是部分平台如 React Native 的熱更新功能並沒有被禁止。因此還有不少開發者困惑,到底什麼是“可以”。
但事實上,在蘋果開發者條款中早就明確,使用腳本進行熱更新,是違反規定的。
(蘋果開發者條款)
在王哲看來,蘋果過去對這件事的態度是睜一隻眼閉一隻眼,熱更新也早已成為開發者們青睞的一門技術。王哲介紹到國內絕大多數 iOS 手遊,不論是 Cocos 還是Unity,都在用熱更新功能,騰訊和網易也在使用腳本對遊戲進行小版本熱更新。
引用“如果只是為了提高用户體驗,這點和蘋果的利益出發點是高度一致的。”
王哲認為這是蘋果之前沒有對熱更新痛下殺手的原因。
然而確實也有不少開發者利用這個功能,做一些觸犯蘋果底線的事情。王哲舉例説道:
引用“熱更新可以用來做任何事情,比如一個好好的應用,可以瞬間更新成一個色情小説的 App,這樣就繞開了蘋果的審核。”
眼下,開發者們還在觀察蘋果的下一步動態,但不論如何大部分開發者認為“跟着規則走”是他們唯一的選擇。ID 為 stormzhang 的業內人士在他的微信公眾號AndroidDeveloper 上提了兩點建議:
引用國內 App 如果有在使用 JSPatch 的,那麼請移除;
更新或者移除一些第三方使用 JSPatch 的 SDK。
王哲認為事件的核心在於:
引用“ 別幹壞事,如果大家只是為了提高用户體驗,提高運營效率,不作惡,就沒什麼原則上的問題了,剩下的只是技術上的小修復而已。”
資料來源:愛範兒(ifanr)