美文网首页mPaaS
mPaaS H5容器、离线包配置

mPaaS H5容器、离线包配置

作者: 山已几孑 | 来源:发表于2019-08-08 15:44 被阅读0次

关于H5容器和离线包,使用mPaaS框架集成的时候,参照文档使用如下配置

// 初始化容器
[MPNebulaAdapterInterface initNebula];

[MPNebulaAdapterInterface shareInstance].nebulaVeiwControllerClass = NSClassFromString(@"H5WebViewController");
[MPNebulaAdapterInterface shareInstance].nebulaNeedVerify = NO;
[MPNebulaAdapterInterface shareInstance].nebulaUserAgent = @"AlipayClient/Portal";
[MPNebulaAdapterInterface shareInstance].nebulaCommonResourceAppList = @[@"77777777"];

离线包存放位置:

MPCustomPresetApps.bundle

当使用CocoaPods集成时,上面代码就不行了,首先,离线包的存放需要自定义bundle放在工程目录下面,

自定义bundle名称

afterDidFinishLaunchingWithOptions中添加H5容器的配置代码(didFinishLaunchingWithOptions 应该也可以)

    // 控件创建:指定H5页面的基类和 webView 的基类
    [NBServiceConfigurationGet() setViewControllerClass:[H5WebViewController class]];
    // 小程序包中H5页面的基类必须是H5WebViewController 的子类

    [NBServiceConfigurationGet() setContentViewClass:[UIWebView class]];
    
    // 包管理服务器配置(没有包管理服务器时不要设置如下项)
    NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"Product Version"];
    [NBServiceConfigurationGet() setClientVersion:version];  // 指定当前应用的版本号,mPaaS框架中,请保持工程 Build Version 与 Product Version 一致
    NSString *bundleId = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"];
    // 指定当前应用的 bundle ID
    [NBServiceConfigurationGet() setClientBundleId:bundleId];
    //指定userAgent
    [NBServiceConfigurationGet() setUserAgent:[NSString stringWithFormat:@"AlipayClient/MPaaSDemo/%@", version]];
    NBServiceConfigurationGet().appConfig.dataRootPath = [NSString stringWithFormat:@"%@/%@",NBServiceConfigurationGet().appConfig.documentDirectoryPath, @"NAMAPP"];
    // 预置包配置(可以脱离包管理服务器)
    [NBServiceConfigurationGet().appConfig setPresetApplistPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"H5AppPresets.bundle/NAMApplist.plist"] ofType:nil]];  // 指定预置离线包的包信息文件路径
    [NBServiceConfigurationGet().appConfig setPresetAppPackagePath:[[NSBundle mainBundle] pathForResource:@"H5AppPresets.bundle" ofType:nil]];   // 指定预置离线包的包路径
    
    // 离线包管理设置(验签公钥、公共资源包、离线包下载器)
    [NBServiceConfigurationGet() setCommonResourceAppList:@[@"66666692"]];  // 设置小程序依赖的公共资源包:66666692(必填);如有普通离线包依赖的公共资源包如77777777,也需设置(可选)
//    NSString *pubpem = [[NSBundle mainBundle] pathForResource:@"public_key" ofType:@"pem"];
//    [NBServiceConfigurationGet().appConfig setSignPublicKey: [NSString stringWithContentsOfFile:pubpem encoding:NSUTF8StringEncoding error:nil]];  // 指定离线包验签的公钥
    // 关闭验签
    [NBServiceConfigurationGet() setIsNeed2VerifyApp:NO];
    //指定离线包的下载器 ---不清楚有什么用
//    [NBServiceConfigurationGet().appConfig setRequestManager:[NARequestManager sharedInctance]];
    
    // 监控委托,添加H5页面的自动化埋点
    NBLogConfigurationGet().shouldInjectSPMJS=YES;
    [NBLogServiceGet() start];
    [[NBMonitor defaultMonitor] setDelegate:NBLogServiceGet()];

    // 最后 启动服务
    [NBServiceGet() start];

值得注意的是:
当使用 [NBServiceGet() start]; 初始化服务的时候,无需再使用[MPNebulaAdapterInterface initNebula];进行初始化! 尤其是先[NBServiceGet() start];[MPNebulaAdapterInterface initNebula];,大概是执行顺序的问题,会使前面设置的属性被更新掉,导致找不到app的问题。

相关文章

  • mPaaS H5容器、离线包配置

    关于H5容器和离线包,使用mPaaS框架集成的时候,参照文档使用如下配置 离线包存放位置: MPCustomPre...

  • mpaas离线包

    一、生成离线包 1、构建前端.zip包 离线包 ID(即下文中的一级目录)必须为数字。 一级目录:一般资源包的 I...

  • 支付宝移动端 Hybrid 解决方案探索与实践

    目前 mPaaS H5 容器 Demo 源码已发布至 GitHub,全新的接入方式让你可以一键集成 mPaaS 环...

  • mPaaS的离线包

    1111

  • 2019-08-01

    猎豹移动开发基础流程 一、开发技能 二、mPaaS知识 三、H5工作内容 1. 业务开发 2. 离线包上架 3. ...

  • mPaas Kylin从环境搭建到项目构建

    Kylin 是 mPaaS H5 容器的无线前端解决方案,封装了VUE,但也有很懂地方和VUE不一样,这篇主要整理...

  • Hybird-App离线缓存系统

    目录 背景接口格式离线资源包格式离线资源下发离线资源缓存 背景 由于线上乐刻客户端 App 第一次打开平台 H5 ...

  • mPaaS H5容器 拦截网络请求

    mPaaS中,拦截网络请求有什么用? 大概说几点: 为请求注入自定义session 为请求单独设置缓存方式 转发 ...

  • iOS swift 接入mpaas h5容器

    前言: 最近因为公司业务需求,需要使用阿里云的mpaas,其实mpaas的是一个具有强大功能的框架,我们包含推...

  • H5离线包的加载优化

    一般对于H5加载优化,最有效的就是离线包了。 那用了离线包之后呢? 还有优化空间吗? 考虑到 WKWebView ...

网友评论

    本文标题:mPaaS H5容器、离线包配置

    本文链接:https://www.haomeiwen.com/subject/ljjxjctx.html