mPaaS H5容器、离线包配置

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

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

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

离线包存放位置:

mPaaS H5容器、离线包配置_第1张图片
MPCustomPresetApps.bundle

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

mPaaS H5容器、离线包配置_第2张图片
自定义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容器、离线包配置)