共计 2451 个字符,预计需要花费 7 分钟才能阅读完成。
传统的小程序技术容易受到网络环境影响,当网络品质不佳时可能导致拉取不到小程序包的状况。通过预置小程序,即可躲避该问题。本文介绍了预置小程序的原理和预置小程序的实现过程。
什么是预置小程序
预置小程序是指将小程序的渲染、逻辑、配置等动态资源打包在一个压缩包内,客户端事后下载小程序包到本地、间接从本地加载资源的过程。预置小程序能够最大水平地解脱网络环境对 mPaaS 小程序页面的影响。应用预置包可能为客户端带来以下劣势:
- 晋升用户体验
通过预置包的形式把页面内动态资源嵌入到利用中并随利用一起公布,能够使用户第一次开启利用时即无需依赖网络环境下载资源,能够间接开始应用。 - 实现动静更新
在推出新版本或紧急公布的时候,能够在小程序 IDE 中进行迭代开发,通过 mPaaS 控制台公布,客户端中集成的小程序 SDK 会主动将小程序更新到最新的版本。这种公布无需通过利用商店审核,能够让用户及早接管到更新。
预置小程序的实现原理
本文从以下方面介绍了预置小程序的实现原理:
- 小程序预置包的构造
- 小程序预置包的应用过程
小程序预置包的构造
小程序预置包是一个 .amr
格局的压缩文件,将后缀 amr
改成 zip
解压缩后,能够看到其中蕴含的 HTML 资源和 JavaScript 代码等。待小程序容器加载后,这些资源和代码能在 UC 内核渲染。
以 Android 零碎为例,下图显示了个别资源包的目录构造:
- 一级目录:个别为资源包的 ID,如 2020121620201216_1.0.1.0.zip。
- 二级目录及往后即为业务自定义的资源文件。并设定以后预置包默认关上的主入口文件,如
/index.html
。
小程序预置包的应用过程
应用小程序预置包的过程能够分为以下三个步骤:
- 申请包信息
从服务端申请小程序包,并将小程序包信息存储到本地数据库的过程。包信息蕴含了小程序包的下载地址、小程序包版本号等。 - 下载小程序包
把小程序包从服务端下载到手机。 - 装置小程序包
下载目录,拷贝到手机装置目录。
前提条件
- 已接入小程序组件。更多对于小程序组件的接入信息,请参见 疾速开始应用小程序。
- 已接入 H5 容器 组件。更多对于 H5 容器的接入信息,请参见 疾速开始应用 H5 容器。
操作步骤 -Android
预置小程序包。
- 在 mPaaS 控制台公布小程序包并下载 AMR 文件和配置文件。
- 将下载到的 AMR 文件和配置文件搁置在 mPaaS 我的项目的 assets 目录下。
- 在工程中增加预置代码,以在利用启动时调用预置代码装置利用。预置代码示例如下:
阐明:
- 此办法为阻塞调用,请不要在主线程上调用内置预置包办法。
- 此办法仅能调用一次。若屡次调用,仅第一次调用无效。所以须要一次性传入所有需预置预置包信息。
- 如果内置多个 AMR 包,须要要确保文件已存在;如不存在,会造成其余内置预置包失败。
启动小程序。启动小程序的示例代码如下。
更新小程序
默认状况下,每次关上利用,小程序 SDK 都会尝试查看是否有可更新的版本。出于服务端压力思考,该查看有工夫距离限度,默认为 30 分钟。如果想立刻查看最新可用版本,调用下方的代码来申请更新。个别状况下,能够在利用启动或者用户登录后调用。
校验平安签名
小程序具备签名校验机制,避免恶意程序篡改下载到设施的小程序包。通过调用 MPNebula
接口设置验签参数即可开启此机制。如果您应用的基线是 10.1.60 或以上版本,须要额定开启容器配置,详情参见 H5 容器配置。
阐明:
- 请在第一次关上离线包前调用
MPNebula
接口,否则将会导致公钥初始化失败。对于公钥与私钥,参见 配置离线包 > 密钥治理。 - 无论客户端是否开启签名校验,在被判断为 root 的手机上都会强制进行签名校验。
删除本地小程序
Nebula 提供了删除本地利用信息的接口。当本地利用信息被删除后,再次关上利用时会从新申请服务端下载、更新本地小程序的信息。
阐明:此 API 在 10.1.68 系列和 10.1.60 系列反对的最低基线版本别离为 10.1.68.8 和 10.1.60.14。
操作步骤 -iOS
预置小程序包。
a. 在 mPaaS 控制台公布小程序包并下载 AMR 文件和配置文件。
b. 新建一个独立的 bundle,如 DemoCustomPresetApps.bundle
,将从公布平台下载的 .amr
离线包和 h5_json.json
文件增加到此 bundle 中。
重要:目前公布平台仅反对下载单个离线包的 h5_json.json
配置文件。当预置多个小程序包时,须要将不同 h5_json.json 中的 data 数据手动合并到一个配置文件中。
c. 在初始化小程序时, 在initNebulaWithCustomPresetApplistPath
接口,设置预置小程序离线包门路为上一步中创立的 bundle。
启动小程序
与非预置小程序相似,进入对应的页面时,调用 Nebula 容器提供的接口办法加载小程序。
更新小程序。
默认状况下,每次关上利用,小程序 SDK 都会尝试查看是否有可更新的版本。出于缩小服务端压力的思考,该查看有工夫距离限度,默认为 30 分钟。如果想立刻查看最新可用版本,可调用下方的代码来申请更新。个别状况下,能够在利用启动或者用户登录后调用。
校验平安签名。
小程序具备签名校验机制,避免恶意程序篡改下载到设施的小程序包。通过调用 小程序 接口设置验签参数即可开启此机制。
阐明:
- 请在第一次关上小程序包前调用 MPNebulaAdapterInterface 接口,否则将会导致公钥初始化失败。对于公钥与私钥,请参见 配置小程序包 > 密钥治理。
- 开启验签
删除本地小程序。
Nebula 提供了删除本地利用信息的接口。当本地利用信息被删除后,再次关上利用时会从新申请服务端下载、更新本地小程序的信息。
结语
mPaaS 小程序 源自于支付宝小程序框架,亿级线上业务体量的锻炼,安全性媲美支付宝原生能力。不仅面向自有 App 投放小程序,更可疾速构建打包,笼罩支付宝、淘宝、钉钉等利用。
通过应用上述预置小程序的计划,预置小程序不仅能够最大水平地解脱网络环境对 mPaaS 小程序页面的影响,还能深度体验用户体验、实现动静更新。
撰文:刘启洋、滕宏才
- END –
- *