一、前言
对于苹果商店的iOS的应用更新,一直以来都是由开发者提交App应用包给苹果,苹果审核通过后,方可在iTunesConnect进行发布,这中间往往要经过一到两周的时间。
对于一些严重问题的修复,虽然你可以提交加急审核,但这也最少需要一到两天的时间,往往做不到十分的及时。
基于这个痛点,一些提供动态更新来进行紧急问题修复的三方库或者三方服务也就应运而生了。
二、开源库还是三方服务,这是个问题
方案对比
如果你想要给自己的App添加动态更新的功能,那并不困难,现在可以实现动态更新的方案有不少,比如以JSPatch、WaxPatch为代表的一些github开源库,还有rollout和JSPatch作者官方动态更新服务等一些三方服务,这些基本都能满足基于严重bug fix为目标的需求。
那么到底是使用开源库还是三方服务呢,又该如何选择呢?不如我们来对比一下这两种方式的优缺点:
- 开源库(以JSPatch为例)
-
工程配置
只需要下载项目源码或者指定pod依赖,然后添加少量配置代码即可。
-
更新实现
按照文档规范编写JS文件,在适当的时机,通过自己约定的服务端接口下载相应文件,然后使用开源库API执行JS文件。
-
安全机制
必须自己对JS文件和接口本身做一些校验工作,较繁琐。
-
灰度发布
需要自己设计灰度发布方案。
-
版本控制策略
需要自己设计版本控制的策略,较繁琐。
-
功能扩展
你可以在开源项目的基础上进行封装和拓展,根据自己App实现定制化需求。(例如统计、版本控制等要求)
-
开源库本身BUG修复
如果开源库存在一些问题,可以提问题给开源库作者,等待修复,紧急情况下,也可以直接fork一份代码,依靠自己及时进行BUG修复,较为灵活。
- 三方服务(以JSPatch作者官方动态更新服务为例)
-
工程配置
在官方网站下载SDK加入工程,然后添加少量配置代码即可。
-
更新实现
按照文档规范编写JS文件,在指定的应用管理页面上传到对应版本的App即可。
-
安全机制
官方服务会对文件下载和获取会有接口和文件的校验,不需要我们关心这部分内容。
-
灰度发布
官方服务提供灰度发布和条件发布。
-
版本控制策略
官方服务有对App版本和Patch版本进行版本控制。
-
功能扩展
不易拓展。
-
SDK的BUG修复
如果官方SDK存在问题,需要联系服务提供者,只能等待修复后使用。
结论
如果你想***快速便利***的对自己的App接入动态更新服务,且不用考虑依赖本身存在的问题,那使用***三方服务***是个很不错的选择,安全策略、版本控制策略以及灰度发布等都不需要自己关心。
如果你想随时掌控依赖对自己App产生的影响,随时可以***解决依赖对工程造成的影响***,那么你可以使用***开源库***,不过这就需要花费较大的时间做一些其它工作。