美文网首页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容器、离线包配置

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