导语:
关于《王者荣耀》、12306 等产品被下架的内容,可能是我们对苹果开发者条款的误读了。
此文已通过授权转载,来源自:腾讯科技——苏杨
很多人都在猜测,苹果要对热更新动刀子了,甚至还传出了“《王者荣耀》、12306 等大批使用热更新机制的游戏和应用不执行就会被下架”的传闻。
但事实真的是这样吗?
先做一个科普:什么是热更新,为何要热更新?
热更新简而言之,服务器在不关闭的情况下,用户打开应用即可下载安装更新的代码运行,这是目前移动游戏更新的主流方式之一。
举个例子,主流的游戏都会根据不同的节假日做大型的活动运营,这种运营基本都是即时性的,热更新是满足这种需求最有效的方式之一。
而如果通过提交 App Store 审核的方式下发更新,考虑到 Android 和 iOS 同步,大型游戏可能需要 1 个月甚至更长的审核周期,这一点苹果也应该心知肚明。
再说全文重点:热更新并未被禁止!热更新并未被禁止!热更新并未被禁止!
接着来看看苹果最新通知是怎么说的:以下是通知原文:
Dear Developer,
In March of this year we notified you that your app contains code designed explicitly with the capability to change your app’s behavior or functionality after App Store Review approval, which is not in compliance with section 3.3.2 of the Apple Developer Program License Agreement and App Store Review Guideline 2.5.2. We requested that you remove any code, frameworks, or SDKs that fall in line with the functionality described above before submitting the next update for your app for review.
As of this message, we have not received a compliant update for your app.
To ensure there is no interruption of the availability of your app, please submit an update by June 12th, 2017. If we do not receive an update by that date, your app may be removed from the App Store.
以下是对应的翻译:
亲爱的开发者
在今年 3 月我们已经发过消息提醒,你的 App 内有一些热更新(即绕过 App Store 审核的更新)的代码,这些代码违反了苹果开发者协议的 3.3.2 条款与 App Store 审核指南的 2.5.2 条款。我们曾要求你移除所有相关代码、框架或 SDK,并且重新提交版本。
在这条消息推送时,我们还没有收到过你进行过相应的调整。
为了确保你的 App 在 App Store 内的正常运行,请在 2017/6/12 之前提交一次更新。如果不做调整的话,你的 App 可能会从 App Store 下架。
围观苹果热更新政策的正确姿势
苹果官方给开发者发出的通知,关键就在这句话:
我们曾要求你移除所有相关代码、框架或 SDK,并且重新提交版本。
我们从一位匿名开发者那里找到了这样的答案:
不符合 2.5.2 条款, App 包含热更新代码,特别提到了 dlopen(),dlsym()
respondingToSelector:,performSelector:,method_exchangeImplementations()这些函数,但是苹果没有禁用热更新,只是禁用了几种热更新框架和技术,而 JSPatch 等苹果不让使用的原因是,能够直接修改代码,可以修改到功能,这样其实绕过了苹果的审核,其他的苹果禁止使用的框架也是如此。
关于应对措施,这位开发者的方案是这样的:
后期提交的版本,要么没有热更新,要么只能用 React Native 框架热更新,其他如 JSPatch、RolloutIO、TriggerIO、WAX(Lua) 等都不能用。
也就是说,
要求移除相关代码、框架和 SDK 只是为了规范开发者的代码,这会冲击到部分热更新解决方案,但不等于封杀热更新,合理采用热更新机制的产品,不存在也没理由被下架。
这一点,我们从“如何看待苹果禁止 JSPatch 等 iOS APP 热更新方案?”这个话题中,一位来自白鹭时代的开发者
@王泽
的回答中也找到了相应的答案。
截止目前为止,我们也没有收到使用白鹭引擎打包游戏的开发者收到了苹果警告邮件的消息。