源码

首页 » 归档 » 源码 » 苹果热更新条款要让大批应用下架?-ios学习从入门到精通尽在姬长信

苹果热更新条款要让大批应用下架?-ios学习从入门到精通尽在姬长信

分享最热门的资讯

日前,有报道称开发者收到苹果通知,要求“当前含有热更新功能的App,在6月12日前移除相关代码,否则这些App可能会下架。”

事实上3月份苹果就曾对部分应用程序的开发者发出了相关通知。

多轮通知足够反映出苹果对采用热更新应用程序潜在安全风险的关注,这也使得外界猜测,苹果要对热更新动刀子了,以至于传出了“王者荣耀、12306等大批使用热更新机制的游戏和应用不执行就会被下架”的传闻。

事实真的是这样吗?

先做一个科普:什么是热更新,为何要热更新。

热更新简而言之,服务器在不关闭的情况下,用户打开应用即可下载安装更新的代码运行,这是目前移动游戏更新的主流方式之一。

举个例子,主流的游戏都会根据不同的节假日做大型的活动运营,这种运营基本都是即时性的,热更新是满足这种需求最有效的方式之一,而如果通过提交AppStore审核的方式下发更新,考虑到Android和iOS同步,大型游戏可能需要1个月甚至更长的审核周期,这一点苹果也应该心知肚明。

再说全文重点:

热更新并未被禁止!热更新并未被禁止!热更新并未被禁止!

接着来看看苹果最新通知是怎么说的:

以下是通知原文:

DearDeveloper,

InMarchofthisyearwenotifiedyouthatyourappcontainscodedesignedexplicitlywiththecapabilitytochangeyourapp’sbehaviororfunctionalityafterAppStoreReviewapproval,whichisnotincompliancewithsection3.3.2oftheAppleDeveloperProgramLicenseAgreementandAppStoreReviewGuideline2.5.2.Werequestedthatyouremoveanycode,frameworks,orSDKsthatfallinlinewiththefunctionalitydescribedabovebeforesubmittingthenextupdateforyourappforreview.

Asofthismessage,wehavenotreceivedacompliantupdateforyourapp.

Toensurethereisnointerruptionoftheavailabilityofyourapp,pleasesubmitanupdatebyJune12th,2017.Ifwedonotreceiveanupdatebythatdate,yourappmayberemovedfromtheAppStore.

以下是对应的翻译:

亲爱的开发者

在今年3月我们已经发过消息提醒,你的App内似乎有一些热更新(即绕过AppStore审核的更新)的代码,这些代码违反了苹果开发者协议的3.3.2条款与AppStore审核指南的2.5.2条款。以及,我们曾要求你移除所有相关代码、框架或SDK,并且重新提交版本。

在这条消息推送时,我们还没有收到过你进行过相应的调整。

为了确保你的App在AppStore内的正常运行,请在2017/6/12之前提交一次更新。如果不做调整的话,你的App可能会从AppStore下架。

围观苹果热更新政策的正确姿势

苹果官方给开发者发出的通知,关键就在这句话:我们曾要求你移除所有相关代码、框架或SDK,并且重新提交版本。

我们从一位匿名开发者那里找到了这样的答案:

“不符合2.5.2条款,App包含热更新代码,特别提到了dlopen(),dlsym(),respondingToSelector:,performSelector:,method_exchangeImplementations()这些函数,但是苹果没有禁用热更新,只是禁用了几种热更新框架和技术,而JSPatch等苹果不让使用的原因是,能够直接修改代码,可以修改到功能,这样其实绕过了苹果的审核,其他的苹果禁止使用的框架也是如此。”

关于应对措施,这位开发者的方案是这样,

“后期提交的版本,要么没有热更新,要么只能用ReactNative框架热更新,其他如JSPatch、RolloutIO、TriggerIO、WAX(Lua)等都不能用”。

也就是说,要求移除相关代码、框架和SDK只是为了规范开发者的代码,此举会冲击到部分热更新解决方案,但不等于封杀热更新,合理采用热更新机制的产品,不存在也没理由被下架。

这一点,我们从知乎“如何看待苹果禁止JSPatch等iOSAPP热更新方案?”这个话题中,一位来自白鹭时代的开发者王铎的回答中也找到了相应的答案。

“截止目前为止,我们也没有收到使用白鹭引擎打包游戏的开发者收到了苹果警告邮件的消息。”

对于那些受到警告邮件的开发者,王铎的解释如下,

641.jpg

“目前为止收到警告邮件的开发者绝大部分使用了JS-Patch或Rollout类库,剩下未直接使用这些类库的开发者,目前初步估计很可能是在集成的第三方SDK中使用了上述框架。而未采用上述框架的热更新技术,目前为止并未收到影响。而绝大部分游戏引擎由于并没有调用这些类库,也自然没有受到影响。

所以苹果确实对于采用热更新机制提出了严格的要求,但如果解读为禁用封杀热更新,并不准确。

苹果为何要这么做?

641 (1).jpg

苹果禁止滥用热更新机制,和iOS封闭的做法本质上是一致的,为了应用生态的安全可控和体验的一致性,毕竟AppStore堪称是苹果最大的现金牛之一。

数据显示,到目前为止AppStore给开发者的收入分成高达700亿美元,去年就达到了200亿美元。

市场研究公司Macquarie的分析师BenSchachter在报告中这样写道,“AppStore是有史以来最好的商业模式之一,苹果的投资者不需要依赖于苹果的创新来驱动该模式的前进。”

任何一个小细节都有可能搞砸AppStore这块大蛋糕,尤其是采用JSPatch热更新这种苹果无法把控的应用更新机制。

据了解,今年二月份网络安全公司FireEye发现JSPatch存在安全漏洞,一旦黑客发现和利用这个后门,他们就能够访问到设备中的照片、麦克风和剪贴板数据以及其他涉及个人隐私的功能,AppStore中有1220款应用程序可能会受此影响。

所以,苹果有必要对采用这类机制的开发者提出了“移除所有相关代码、框架或SDK,并且重新提交版本”的要求。

总结下来,苹果的禁止了部分热更新的函数、框架和代码,但未禁用热更新机制,所以那些关于王者荣耀、12306等产品被下架的内容,可能是对苹果开发者条款的误读,只能说你被骗了。

ios学习从入门到精通尽在姬长信

(1)

本文由 姬長信 创作,文章地址:https://blog.isoyu.com/archives/2312.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:6 月 11, 2017 at 12:01 上午

热评文章

发表回复

[必填]

我是人?

提交后请等待三秒以免造成未提交成功和重复