网页游戏
收藏本站 |  充值 |  推荐游戏  全部游戏
当前位置: 主页 >资讯 > 苹果将禁止开发者使用“热更新” 大型游戏将陷更新困局
  • 苹果将禁止开发者使用“热更新” 大型游戏将陷更新困局
  • 2017-05-06 18:41 作者:益力升

苹果的ios系统是重要的应用推广渠道,很多开发者都很重视在这一渠道的经营。但是这一渠道上的乱象频频出现让苹果一次次出台禁令进行规范限制。日前苹果就通知开发者禁止使用“热更新”绕过App Store更新审查,这将对体量大的大型游戏造成困扰。

  苹果日前已经开始通知开发人员,他们将很快开始拒绝使用“HotPatch(热更新)”绕过App Store更新审查的应用程序。在苹果开发者论坛上,一位开发人员透露,他们的公司已经接到消息,称在删除这些“HotPatch”代码之前,苹果将不接受其应用更新。

  热更新技术是目前游戏厂商的标配,它也被称为动态更新。目前在App Store和国内安卓渠道已经非常常见,采用这种方式的好处在于,“绕过渠道审核”快速更新。

  很多时候我们会遇到游戏的BUG,或配置一些东西、活动等,发现配置错了需要马上更新,服务端更新是最快的一种方式,但手游现在可能做不到,那就只能通过客户端的更新把这些资源替换掉,并且可以只替换有问题的代码而保持快速在线更新。

  现阶段大部分厂商采用的都是JSPatch,这并非是很难的技术,仅仅是在项目中加入极小的引擎文件,就可以使用JavaScript调用任何Objective-C的原生接口,替换任何Obj-C原生方法,目前主要用于下发JS脚本替换原生Obj-C代码,实时修复线上BUG。

苹果将禁止开发者使用“热更新” 大型游戏将陷更新困局

  JS等形式代码将被禁止

  从目前各方面反馈来看,苹果此次狠抓的是下发代码,所以JSPatch就被拉出来吃枪子了。2016年WWDC后App Store Review Guide Line更新 2.5.2 条这样描述:

  2.5.2 Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code, including other iOS, watchOS, macOS, or tvOS apps.

JSPatch更新

  JSPatch更新

  本条规定所有执行代码都需要包含在App中,不能下载代码到本地执行,所以OC或者JS形式的代码明显违反了这条规定,但苹果显然没有在过去一年中对这条规定进行贯彻,直到今天才向相关开发者发出了警告。

  对游戏本身有何影响?

  这个问题其实有目共睹,在禁止热更新之后

  1、游戏无法频繁更新功能、修复BUG,厂商在更新版本之前,可得长点心吧!

  2、游戏更新后用户需要重新下载完整游戏,带来了用户流失和活跃度下降,特别是大包体游戏更为严重,用户要是动不动就下载个1G多的游戏,对游戏体验的伤害太大。

  3、游戏更新后整体需重新经过苹果再次审查,造成审核周期增加。

  另外也提醒正在提交游戏审查或被拒的开发者,尽快删除相关代码再进行审查提交。

JSPatch漏洞

  JSPatch漏洞

  是否有规避方法?

  根据目前得到的信息来看,苹果进行审查的方式主要有两种。

  一种是检查特定的类名,如JSPatch和Rollout,苹果会审查APP是否携带了这一类的库。

  另一种是扫描特定的API,有规则将会检查这些 API 的参数是否可能由外部引入。

  相信读者中的程序员大大应该比小编高出好几层楼,通过混淆JSPtach(替换JSPtach内部所有类和方法名),或许是可以绕过审查蒙混过关。虽然苹果尚未明确惩罚方式,但在继续HotPatch和开发者账号被封之间,还是提高点App稳定和Debug上多下功夫,Weex似乎也还有机会。

  结语

  苹果开发者在去年就发现了由于JSPatch所引起的更新漏洞将被黑客利用,从而引起一系列损失,苹果对App Store的优化也从未停止,无论开发者对于此次HotPatch的禁令是否存在各种怨言,按照苹果的以往原则来看:你们尽管骂,最后还不得管我叫爸爸!

  从苹果的角度看,禁止应用使用热更新技术更多是为了保护用户隐私、数据安全以及其全力打造的生态圈。而对于用户来说,出于安全起见,应谨慎授予应用权限;对于开发者来说,为了审核以及长远的用户体验考虑,不要轻易触碰苹果拉的那条红线。