10.1.32基线下如何使用H5容器SDK_移动开发平台 mPaaS(mPaaS)-深圳网站优化推广公司

使用 SDK(版本 = 10.1.32)

本文将向您介绍在 10.1.32 基线下 H5 容器 SDK 的使用。

重要

自 2020 年 6 月 28 日起,mPaaS 停止维护 10.1.32 基线。请参考 使用 SDK(版本 ≥ 10.1.60)使用 10.1.60 或 10.1.68 基线。

初始化容器

启动容器

  • 为了使用 Nebula 容器,您需要在程序启动完成后调用 SDK 接口并对容器进行初始化。初始化必须在 DTFrameworkInterface- (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中进行。

      - (void)application:(UIApplication *)application beforeDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
      {
          // 初始化容器
          [MPNebulaAdapterInterface initNebula];
      }
  • 若您需要使用 预置离线包自定义 JSAPIPlugin 等功能,需将上述功能的相关信息分别存储在以下默认的 bundle 中,否则功能将无法生效。

    名称

    含义

    MPCustomPlugins.bundle

    自定义的 JSAPI 和 Plugin 路径。

    MPCustomPresetApps.bundle

    预置的离线包和包信息路径。

定制容器

  • 如有需要,您可以通过设置 MPNebulaAdapterInterface 的属性值来定制容器配置。必须在 DTFrameworkInterface- (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中设置,否则会被容器默认配置覆盖。

      - (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
      {
          // 初始化容器
          [MPNebulaAdapterInterface initNebula];
    
          // 定制容器
          [MPNebulaAdapterInterface shareInstance].nebulaVeiwControllerClass = [MPH5WebViewController class];
          [MPNebulaAdapterInterface shareInstance].nebulaNeedVerify = NO;
          [MPNebulaAdapterInterface shareInstance].nebulaUserAgent = @"mPaaS/Portal";
          [MPNebulaAdapterInterface shareInstance].nebulaCommonResourceAppList = @[@"77777777"];
      }
  • 属性含义如下:

    名称

    含义

    备注

    nebulaVeiwControllerClass

    H5 页面的基类

    默认为 UIViewController。若需指定所有 H5 页面的基类,可直接设置此接口。

    nebulaUserAgent

    设置应用的 UserAgent

    设置的 UserAgent 会作为后缀添加到容器默认的 UA 上。

    nebulaNeedVerify

    是否验签,默认为 YES

    若 配置离线包 时未上传私钥文件,此值需设为 NO,否则离线包加载失败。

    nebulaPublicKeyPath

    离线包验签的公钥路径

    与 配置离线包 时上传的私钥相对应的公钥路径。

    nebulaCommonResourceAppList

    公共资源包的 appId 列表

    -

    errorHtmlPath

    当 H5 页面加载失败时展示的 HTML 错误页路径

    默认读取 MPNebulaAdapter.bundle/error.html

更新离线包

启动完成后,全量请求所有离线包信息,检查服务端是否有更新包。为了不影响应用启动速度,建议在 (void)application:(UIApplication \*)application afterDidFinishLaunchingWithOptions:(NSDictionary \*)launchOptions 之后调用。

- (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // 初始化容器
    [MPNebulaAdapterInterface initNebula];

    // 定制容器
    [MPNebulaAdapterInterface shareInstance].nebulaVeiwControllerClass = [MPH5WebViewController class];
    [MPNebulaAdapterInterface shareInstance].nebulaNeedVerify = NO;
    [MPNebulaAdapterInterface shareInstance].nebulaUserAgent = @"mPaaS/Portal";
    [MPNebulaAdapterInterface shareInstance].nebulaCommonResourceAppList = @[@"77777777"];

    // 全量更新离线包
    [[MPNebulaAdapterInterface shareInstance] requestAllNebulaApps:^(NSDictionary *data, NSError *error) {
        NSLog(@"");
    }];
}

初始化完成后,效果如下:

afetr

唤起容器

容器初始化完成后,就可以唤起一个 H5 容器。分为以下三种情况:

  • 基于在线 URL 或本地 HTML 文件,创建一个 H5 容器。 示例代码如下:

    // 打开在线 URL
    [[MPNebulaAdapterInterface shareInstance] startH5ViewControllerWithParams:@{@"url": @"https://tech.antfin.com/products/MPAAS"}];
    // 打开本地 HTML 页面
    NSString *path = [[NSBundle mainBundle].bundlePath stringByAppendingFormat:@"/%@/%@", @"MPH5Demo.bundle", @"H52Native.html"];
    if ([path length] > 0) {
    [[MPNebulaAdapterInterface shareInstance] startH5ViewControllerWithParams:@{@"url": path}];
    }
  • 基于传入的离线包信息,创建一个 H5 容器,并自动 push 打开。示例代码如下:

      [[MPNebulaAdapterInterface shareInstance] startH5ViewControllerWithNebulaApp:@{@"appId":@"90000000"}];
  • 基于传入的离线包信息,创建一个 H5 容器,并返回创建的 H5 容器实例(一般用在首页 tab 页面)。示例代码如下:

      [[MPNebulaAdapterInterface shareInstance] createH5ViewControllerWithNebulaApp:@{@"appId":@"90000000"}];

实现 H5 与 Native 双向通信

您可以通过调用 JSAPI 和监听特定事件来实现 H5 与 Native 双向通信。

在 H5 页面调用 Native 功能

您可以通过调用 JSAPI 来实现 H5 到 Native 的通信。

Nebula 容器支持的 JSAPI 及相关参数说明,请参见 内置 JSAPI。

示例

例如,您可以调用 JSAPI 接口 pushWindow,以实现“在 H5 页面单击某个按钮时,加载一个新页面”的需求:

AlipayJSBridge.call('pushWindow', {
    url: 'https://tech.antfin.com',
    param: {
    readTitle: true,
    defaultTitle: true,
    // ...
    }
}, function(data) {alert('调用结果'+JSON.stringify(data)); });

AlipayJSBridge 说明

AlipayJSBridge 是 Nebula 容器自动注入的 JSBridge。在 Window.onload 以后,容器会生成一个全局变量 AlipayJSBridge,然后触发 AlipayJSBridgeReady 事件。AlipayJSBridge 注入是一个异步过程,因此需要先监听 AlipayJSBridgeReady 事件再调用接口。

示例代码如下:

<h1>bridge 使用方法</h1>

<script>
function ready(callback) {
  if (window.AlipayJSBridge) {
    callback && callback();
  } else {
    document.addEventListener('AlipayJSBridgeReady', callback, false);
  }
}

ready(function(){
  alert('bridge ready');
});
</script>

在 Native 页面调用 H5 功能

您可以通过监听特定事件来实现 Native 到 H5 的通信。Nebula 容器支持的事件列表,参见 事件扩展。

document.addEventListener('back', function (e) {
    if(confirm('back已拦截,是否确定返回?')) {
        // do something;
    }
}, false);

除了 Nebula 容器默认支持的事件外,您还可以在 Native 端通过以下方式自定义事件让前端来监听:

// self: 当前 H5 页面所在的 VC
// data:native 传递给前端的参数
// callBack:前端收到事件后的回调
[self callHandler:@"customEvent" data:@{@"key":@"value"} responseCallback:^(id responseData) {
        NSLog(@"前端收到事件后的回调: %@", responseData);
    }];

扩展 Nebula 容器能力

如果 Nebula 容器提供的基础 H5 页面双向通信能力无法满足需求,您可以对 Nebula 进行扩展开发:

  • JSAPI:如果要从 H5 页面发起 Native 功能调用(如显示一个 ActionSheet 或显示联系人对话框),那么需要扩展 JSAPI。JSAPI 可以通过 handler 方法,很方便地增加 H5 页面的 Native 功能调用来实现特定功能。具体的自定义方法,请参见 自定义 JSAPI。

  • Plugin:如果您需要在某个时机(如进入页面、收到请求等)做某些事情(如记录埋点、修改返回数据等),那么需要开发一个插件 (Plugin)。在插件中订阅相应的事件后,即可在 handler 中对事件所携带的数据进行加工处理。具体的自定义方法参见 自定义插件。

加载离线包

传统的在线 H5 技术容易受到网络环境影响,从而影响 H5 页面的性能。为了最大程度摆脱网络对 H5 页面加载的影响,您可以将不同的业务封装打包成为一个离线包,通过发布平台下发到客户端,对客户端资源进行更新。更多信息,参见 离线包简介 和 使用离线包。

H5 容器埋点

在 H5 页面加载时,Nebula 容器会自动监控加载性能,并捕获相关的行为数据和异常报错数据。更多信息,参见 H5 容器埋点。

    相关内容推荐

    网上商城网站设计网站设计案例分析班服设计网站株洲互联网网站设计咨询热线家纺设计网站简单的电影网站制作工艺品网站设计成都手机网站设计网站标题字体设计高端大气网站设计制作邯郸低价网站制作推广优秀企业网站设计欣赏寻亲网站制作奶茶靖安企业网站制作网站设计之路网站设计规格旅游网站设计毕业论文蝴蝶网站制作奶茶甘肃网站制作公司在哪里北京 高端网站设计设计新颖的网站台湾设计家具网站高端设计公司网站网站设计的基本原则郑州设计网站科技感的网站设计青岛网站制作案例广州外贸网站制作推广评价建筑设计师常用网站临沂网站建设设计网站设计文档90设计素材网站简单网站设计模板网站设计与制作 pdf公司网站制作设计扁平化设计风格的网站怎么设计手机网站优秀企业网站设计欣赏廊坊地产行业网站制作购物网站设计ppt云浮网站设计杯子网站设计公司网站设计北京企业网站设计公司拍图logo制作网站网站后台页面设计植物设计网站网站设计岗位职责ui设计界面网站设计癖网站网站设计 软件海参网站制作视频网站设计 精品课程普利策设计公司网站闵行网站设计公司国外最好的设计网站阿里巴巴网站设计风格图片制作模板网站汽车行业网站设计微信h5网站制作 深圳国外装饰设计网站网站时间轴设计企业网站设计策划书bbs网站设计零蛋韩剧网站制作国外设计感强的网站长沙企业网站设计网站设计公司推荐新闻网站设计制作方法辽阳网站设计网站ui设计分析佛山设计网站一套网站设计多少钱校园网站设计方案房地产网站设计欣赏营销型网站设计制作高端室内设计网站上海勘察设计协会网站天津 网站设计优秀网站设计图片绍兴专注海报设计网站网站注册页面设计中国最好的网站设计公司网站设计分析案例mac 设计软件下载网站网站设计实验报告包装设计网站大全最简单做网站设计的语言顶尖设计网站小说网站如何设计数据库信宜网站设计公司不好的设计网站宝安网站设计公司设计师常用素材网站设计网站海报手机网站网页设计三门峡网站设计平面设计网站推荐网站开发设计文档日本好的设计网站旅游网站设计说明静态网站设计ui界面设计网站网站快速设计调兵山制作网站公司台山网站设计单页设计网站设计非常好的网站蒙古语网站制作表情包帮客户制作网站引流经典网站设计欣赏网站设计个人国外优秀的室内设计网站网站设计 兼职服装图案设计网站家居产品设计网站潍坊租房网站制作农村别墅设计网站网站设计项目安康网站设计设计艺术网站聊天网站制作表情包ps设计网站主页网站的结构设计设计图案网站韩国设计师看什么网站国际工业设计网站扁平化设计风格的网站室内装潢设计网站网站设计师职责购物网站设计目标设计网站合集签名设计网站源码服装设计公司网站pcb设计网站网站详细设计说明书金安区学平面设计网站网站设计 html5设计传单的网站找设计师的网站学习服装设计的网站学习ps平面设计网站卫浴网站设计主题网站设计网页设计 参考网站企业网站设计服务网站上的网页设计胶南营销型网站制作网站安全架构设计网站设计需要哪些技能日本设计素材网站网站设计常识陈幼坚设计公司网站制作网站与数据库的连接design 设计网站公司企业网站设计网站设计软件有哪些淘宝网站设计公司中国传统文化网站设计国外高质量的设计网站评价一个网站设计的好坏国外ui设计网站大全上海微网站设计app制作网站那个好设计网站penriest网页设计和网站设计泰州公司网站制作海报设计网站有哪些视频网站 设计科技网站设计购物网站页面设计日本的好设计网站荆门网站设计吴忠网站设计济南高端网站设计现在手机网站设计高端网站设计制作礼品网站设计天龙八部背景音乐网站制作优秀网站设计案例网站设计遇到的问题家具设计师网站园林设计网站网站设计价钱设计网站川房地产网站制作设计电子商务网站设计asp.net 网站设计工作网站设计大足网站设计音响设计网站网站设计课程设计报告网站页面设计分析电子商务网站设计与制作卖设计图的网站国外画册排版设计网站环境保护网站设计模板手机网站设计规范学习网站平面设计网站国外展台设计网站

    合作伙伴

    深圳网站优化推广公司

    龙岗网络公司
    深圳网站优化
    龙岗网站建设
    坪山网站建设
    百度标王推广
    天下网标王
    SEO优化按天计费
    SEO按天计费系统