文/腾讯数码 苏扬
日前,有报道称开发者收到苹果通知,要求“当前含有热更新功能的 App,在 6 月 12 日前移除相关代码,否则这些 App 可能会下架。”
事实上3月份苹果就曾对部分应用程序的开发者发出了相关通知。
多轮通知足够反映出苹果对采用热更新应用程序潜在安全风险的关注,这也使得外界猜测,苹果要对热更新动刀子了,以至于传出了“王者荣耀、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 热更新方案?”这个话题中,一位来自白鹭时代的开发者王铎的回答中也找到了相应的答案。
“截止目前为止,我们也没有收到使用白鹭引擎打包游戏的开发者收到了苹果警告邮件的消息。”
对于那些受到警告邮件的开发者,王铎的解释如下,
“目前为止收到警告邮件的开发者绝大部分使用了 JS-Patch 或 Rollout 类库,剩下未直接使用这些类库的开发者,目前初步估计很可能是在集成的第三方SDK 中使用了上述框架。而未采用上述框架的热更新技术,目前为止并未收到影响。而绝大部分游戏引擎由于并没有调用这些类库,也自然没有受到影响。
所以苹果确实对于采用热更新机制提出了严格的要求,但如果解读为禁用封杀热更新,并不准确。
苹果为何要这么做?
苹果禁止滥用热更新机制,和iOS封闭的做法本质上是一致的,为了应用生态的安全可控和体验的一致性,毕竟App Store堪称是苹果最大的现金牛之一。
数据显示,到目前为止App Store给开发者的收入分成高达700亿美元,去年就达到了200亿美元。
市场研究公司Macquarie的分析师Ben Schachter在报告中这样写道,“App Store是有史以来最好的商业模式之一,苹果的投资者不需要依赖于苹果的创新来驱动该模式的前进。”
任何一个小细节都有可能搞砸App Store这块大蛋糕,尤其是采用JSPatch热更新这种苹果无法把控的应用更新机制。
据了解,今年二月份网络安全公司Fire Eye发现JSPatch存在安全漏洞,一旦黑客发现和利用这个后门,他们就能够访问到设备中的照片、麦克风和剪贴板数据以及其他涉及个人隐私的功能,App Store中有1220款应用程序可能会受此影响。
所以,苹果有必要对采用这类机制的开发者提出了“移除所有相关代码、框架或 SDK,并且重新提交版本”的要求。
总结下来,苹果的禁止了部分热更新的函数、框架和代码,但未禁用热更新机制,所以那些关于王者荣耀、12306等产品被下架的内容,可能是对苹果开发者条款的误读,只能说你被骗了。
精彩视频推荐
自动播放
【黑榜】不缺货? 那你还算国产手机吗?
正在加载...
>>上一篇:新Mac评测:处理器升级意料之中亦有惊喜