Tabris.js App补丁

向app store发布新的app版本可能需要一些时间。Tabris.js允许直接向你的用户发布热更新,而无需等待app store更新。

:point_right:为了符合Apple App Store的规则,修补程序必须“[…] not change the primary purpose of the app by providing features or functionality that are inconsistent with the intended and advertised purpose”(iOS开发者计划许可协议第3.3.2节)

补丁格式

补丁是一个zip文件,其中包含要修改或添加的app文件,以及名为patch.json的可选描述文件。 有关patch.json描述文件的更多信息,请参见下文。

你可以修改app中的任何文件,包括脚本、图片,甚至nodemodules文件夹中的模块。 zip文件的根目录对应于Tabris.js项目的根目录。例如,要更新文件_app.js并添加另一个文件img/image.jpg,修补程序可以如下所示:

示例项目结构

  1. src
  2. ├── app.js
  3. └──
  4. package.json

相应的补丁zip内容

  1. src
  2. └── app.js
  3. img
  4. └── image.jpg
  5. patch.json
:point_right:如果你有本地的cordova版本,在将源文件复制到文件夹cordova/www中之前,你可能已经进行了预处理。在这种情况下,补丁必须对应于最终在cordova/www中的文件。

发现补丁

创建补丁后,你必须在你选择的URL上使其可以下载。然后,应用程序可以发现补丁并下载。

你可以用适合你的方式实现补丁检测。例如,可以设置一个REST服务,为给定的应用程序、平台和版本提供可用的补丁信息。 应用程序可以定期检查此服务。你还可以使用推送通知来通知app可用的补丁。

安装补丁

要安装修补程序,需要调用app.installPatch方法,并传递补丁文件的URL和具有两个参数的回调函数(errorpatch)作为参数。补丁文件会在后台下载并安装,但在app重新加载之前不会有影响。

:point_right:Tabris.js支持cache-control header。 如果Tabris.js没有找到新的更新,请检查HTTP服务器的缓存无效设置。

在出现错误的情况下,使用Error对象作为第一个参数来调用回调函数。error.message字段会包含错误消息。如果补丁成功安装,则第二个参数将包含补丁文件中的patch.json文件的解析内容(如果有的话)。

Tabris.js不强制要求patch.json描述文件的格式和内容。你可以使用它来包含补丁的详细信息,例如要显示的版本号或确认消息。

在下一次app启动时,补丁中存在的文件将覆盖app文件。你可以使用回调来确认并重新加载app。这是一个简单的例子:

  1. app.installPatch(patchUrl, (error, patch) => {
  2. if (error) {
  3. // show error dialog
  4. } else {
  5. // confirm reload
  6. app.reload();
  7. }
  8. });

多个补丁可以彼此覆盖。如果app已经打好补丁了,则后续的补丁会覆盖以前的补丁。

:point_right:此功能是临时性的,并且此处的API说明可能会在将来的版本中进行调整。

原文:

https://youjingyu.github.io/Tabris-Documention/?folderName=guide&pageName=patch.html