预置小程序包

本文介绍了预置小程序的原理和实现过程。

什么是预置小程序

预置小程序是指将小程序的渲染、逻辑、配置等静态资源打包在一个压缩包内,并集成到客户端 App,小程序容器可直接从本地加载资源的过程。预置小程序可以最大程度地摆脱网络环境对 mPaaS 小程序页面的影响。使用预置包可带来以下优势:

  • 提升用户体验 通过预置包的方式把页面内静态资源嵌入到应用中并随应用一起发布,可使用户第一次打开应用时无需依赖网络环境去下载资源,可直接开始使用。

  • 实现动态更新 在推出新版本或紧急发布时,可以在小程序 IDE 中进行迭代开发,通过 mPaaS 控制台发布,客户端中集成的小程序 SDK 会自动将小程序更新到最新的版本。这种发布无需通过应用商店审核,可以让用户及早接收到更新。

前提条件

您已接入小程序组件。更多关于小程序组件的接入信息,请参见 快速开始

操作步骤

  1. 在 mPaaS 控制台发布小程序包并下载 AMR 文件和配置文件。

    image.png

  2. 新建一个独立的 bundle,如 DemoCustomPresetApps.bundle,将从发布平台下载的 AMR 离线包和 h5_json.json 文件添加到此 bundle 中。

    image.png

    说明

    目前发布平台仅支持下载单个离线包的 h5_json.json 配置文件。当预置多个小程序包时,需要将不同 h5_json.json 中的 data 数据手动合并到一个配置文件中。

  3. 初始化小程序时指定预置小程序包的路径。使用 initNebulaWithCustomPresetApplistPath 初始化容器,并接口中设置预置小程序离线包路径为上一步中创建的 bundle。

    - (void)application:(UIApplication *)application beforeDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    	// 初始化 rpc
    	[MPRpcInterface initRpc];
      
      // 初始化容器,自定义预置小程序包信息
    	NSString *presetApplistPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"DemoCustomPresetApps.bundle/h5_json.json"] ofType:nil];
    	NSString *appPackagePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"DemoCustomPresetApps.bundle"] ofType:nil];
    	[MPNebulaAdapterInterface initNebulaWithCustomPresetApplistPath:presetApplistPath customPresetAppPackagePath:appPackagePath customPluginsJsapisPath:@""];
    }
  4. 启动小程序。与非预置小程序类似,进入对应的页面时,调用容器提供的接口方法加载小程序即可。

    [MPNebulaAdapterInterface startTinyAppWithId:@"2020121720201217" params:nil];