全部产品

管理离线包

更新时间:2020-03-25 22:22:49

传统的在线 H5 技术容易受到网络环境影响,从而影响 H5 页面的性能。为此,您可以将不同的业务封装打包成一个离线包,通过发布平台下发对客户端资源进行更新。

本文将引导您管理离线包:

前置条件

您需要确保完成 SDK 添加后,客户端工程已集成 NebulamPaaSBiz.framework

生成离线包

为了生成 .amr 离线包, 您需要构建前端 .zip 包并在线生成 .amr 包。具体的操作步骤,请参见文档 生成离线包

加载离线包

根据是否在客户端预置离线包,分为以下两种方式:

预置离线包

不管网络情况如何,首页或登录页等页面都需快速加载。因此,可以将这部分资源打包为离线包、提前预置在工程中,以保证在离线情况下资源也能快速加载。

具体步骤如下:

  1. 将从发布平台下载的 .amr 离线包和 h5_json.json 文件添加到工程 MPCustomPresetApps.bundle 目录下:

    h5_off_pkg

    重要:目前发布平台仅支持下载单个离线包的 h5_json.json 配置文件;当预置多个离线包时,需要手动合并 JSON 文件中 data 数组。
  2. 进入对应的页面时,调用 Nebula 容器提供的接口方法加载离线包。

    • 代码示例

      1. - (void)openPresetPackage {
      2. [[MPNebulaAdapterInterface shareInstance] startH5ViewControllerWithNebulaApp:@{@"appId":@"20180910"}];
      3. }
    • 接口方法

      1. @interface MPNebulaAdapterInterface : NSObject
      2. /**
      3. * 基于传入的离线包信息,创建一个 H5 容器,并自动 push 打开
      4. *
      5. * @param params H5容器的启动参数,必填参数:appId,其他可选参数参考文档 https://tech.antfin.com/docs/2/85001
      6. *
      7. */
      8. - (void)startH5ViewControllerWithNebulaApp:(NSDictionary *)params;
      9. @end

加载远程离线包

除将离线包预置在客户端外,您还可以通过发布平台动态发布一个离线包。此时,客户端直接加载远程离线包,可以避免因预置大量离线包而使得客户端包体积过大。

具体步骤如下:

  1. 在应用启动完成后,可以预加载获取包信息并下载离线包,防止打开离线包时白屏。

    • 代码示例

      1. [[MPNebulaAdapterInterface shareInstance] requestAllNebulaApps:^(NSDictionary *data, NSError *error) {
      2. NSLog(@"[mpaas] nebula rpc data :%@", data);
      3. }];
    • 接口方法

      1. @interface MPNebulaAdapterInterface : NSObject
      2. /**
      3. * 全量更新本地离线包信息
      4. *
      5. * @param finish 完成回调
      6. *
      7. */
      8. - (void)requestAllNebulaApps:(NAMRequestFinish)finish;
      9. /**
      10. * 单个应用请求
      11. *
      12. * @param params 请求列表,格式为{appid:version}。可传多个 appid。版本号最长 4 位,如 1.0.0.1;不指定 version 时传空,默认取最高版本;支持版本号模糊匹配,如: '*' 匹配最高版本号、'1.*' 匹配以 1 开头的版本号中最高的版本号
      13. * @param finish 完成回调
      14. */
      15. - (void)requestNebulaAppsWithParams:(NSDictionary *)params finish:(NAMRequestFinish)finish;
      16. @end
  2. 客户端配置完成后,您可以通过发布平台下发一个离线包,具体的操作步骤,请参见 实时发布 > 离线包管理 > 发布离线包

  3. 进入对应的页面时,调用 Nebula 容器提供的接口方法加载离线包,即可看到您在发布平台下发的离线包。

    • 代码示例

      1. - (void)openPresetPackage {
      2. [[MPNebulaAdapterInterface shareInstance] startH5ViewControllerWithNebulaApp:@{@"appId":@"20180910"}];
      3. }
    • 接口方法

      1. @interface MPNebulaAdapterInterface : NSObject
      2. /**
      3. * 基于传入的离线包信息,创建一个 H5 容器,并自动 push 打开
      4. *
      5. * @param params H5 容器的启动参数,必填参数:appId,其他可选参数参考文档 https://tech.antfin.com/docs/2/85001
      6. *
      7. */
      8. - (void)startH5ViewControllerWithNebulaApp:(NSDictionary *)params;
      9. @end

动态更新离线包

mPaaS 提供强大的动态更新能力,您可以通过发布平台下发一个新版本的离线包,来更新客户端的对应页面。具体的操作步骤,请参见 实时发布 > 离线包管理 > 发布离线包

相关链接