移动网关最佳实践(iOS)

移动网关接入

使用新版配置文件接入网关

前置条件

您已经部署了新版控制台,支持了新版配置文件(tmf-ios-configurations.json)下载。

接入移动网关

具体接入流程请参考接入iOS

切换生产环境与测试环境

集成TMF往往会遇到多套环境并存的情况,如生产环境、测试环境。TMF初始化支持设置不同的配置文件来做环境切换,具体做法如下:

  1. 从控制台下载不同环境的配置文件,并修改配置文件名,如:tmf-ios-configurations-uat.json、tmf-ios-configurations-sit.json。

  2. 将不同环境配置文件拷贝至工程目录下。

  3. 初始化基础库时,根据不同编译变体传入不同的配置文件。

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"tmf-ios-configurations-uat" ofType:@"json"];
    ///NSString *filePath = [[NSBundle mainBundle] pathForResource:@"tmf-ios-configurations-sit" ofType:@"json"];
    TMFServerManager *serverManager = [TMFServerManager shareServerManagerWithConfigPath:filePath];
    [serverManager activate];
    

调整内置shark实例参数

基础库初始化时根据指定配置文件创建了内置TMFSharkCenter实例,如果您需要调整内置shark配置进行个性化设定,可以参照如下方法进行:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"tmf-ios-configurations" ofType:@"json"];
TMFServerManager *serverManager = [TMFServerManager shareServerManagerWithConfigPath:filePath];
TMFSharkCenterConfiguration *sharkConfig = [TMFSharkCenterConfiguration masterConfiguration];
sharkConfig.HTTPURL             = ...;
sharkConfig.productKey         = ...;
sharkConfig.RSAPublicKey     = ...;
sharkConfig.SM2PublicKey     = ...;
[serverManager activate];

使用旧版配置文件接入网关

使用TMFBase接入网关

如果您还没有部署新版控制台,只能下载到旧版配置文件.h, 那么请参考如下流程接入移动网关:

// 引入头文件
#import "TMFConfigurations.h"

// 初始化
TMFSharkCenterConfiguration *sharkConfig = [TMFSharkCenterConfiguration masterConfiguration];
sharkConfig.customerID = TMF_CUSTOM_ID;
sharkConfig.productID = TMF_PID;
// 创建TMFServerManager实例对象
TMFServerConfiguration *serverConfig = [TMFServerConfiguration serverConfigurationWithSharkConfiguration:sharkConfig];
TMFServerManager *serverManager = [TMFServerManager shareServerManagerWithConfiguration:serverConfig];
// 补充TMFSharkCenterConfiguration其他属性值
sharkConfig.HTTPURL = TMF_GW_HTTP_URL;
sharkConfig.productKey = TMF_APP_KEY;
sharkConfig.RSAPublicKey = TMF_GW_RKEY;
sharkConfig.SM2PublicKey = TMF_GW_SKEY;
[serverManager activate];

注意:TMFServerManager实例对象的创建时机。它需要在TMFSharkCenterConfiguration实例对象设置customerIDproductID之后创建。TMFSharkCenterConfiguration实例对象的其它属性则需要在TMFServerManager实例对象创建之后进行赋值。

不使用TMFBase接入网关

如果集成并使用TMFBaseSDK,其中的TMFServerManager会负责创建TMFSharkCenter单例对象。如果不集成TMFBase,则需要显式调用TMFSharkCenter的初始化方法创建单例对象。

// 引入头文件
#import "TMFConfigurations.h"

// 创建TMFSharkCenterConfiguration单例masterConfiguration
TMFSharkCenterConfiguration *sharkConfig = [TMFSharkCenterConfiguration masterConfiguration];
sharkConfig.customerID = TMF_CUSTOM_ID;
sharkConfig.productID = TMF_PID;
sharkConfig.HTTPURL = TMF_GW_HTTP_URL;
sharkConfig.productKey = TMF_APP_KEY;
sharkConfig.RSAPublicKey = TMF_GW_RKEY;
sharkConfig.SM2PublicKey = TMF_GW_SKEY;
// TMFSharkCenter会隐式使用masterConfiguration创建masterCenter
[[TMFSharkCenter masterCenter] initialize];

网关接入测试

  1. 获取guid,如果成功获取guid则表示接入成功。

    [[TMFSharkCenter masterCenter] fetchGUID:^(NSString * _Nullable GUID, NSError * _Nullable error) {
        NSLog(@"GUID:%@", GUID);
        if (GUID && GUID.length) {
            // 获取GUID成功
        } else {
            // 获取GUID失败
        }
    }];
    
  2. 参考《移动网关》手册,完成API请求测试。

切换应用配置数据迁移规则

从基线1.8.0起(shark 3.7.x以上版本)TMF支持按照环境隔离框架数据,不同应用配置的框架数据会存储在独立的数据目录中互不影响。由于旧版Shark无法自动检测当前运行环境变化情况,需要您根据实际情况来指定数据迁移规则。具体规则如下:

  1. 如果您需要保留旧的应用配置信息,那么需要将旧版数据统一迁移到新版数据存储结构中,将sharkConfig的enforceCheckMasterEvent设置为NO。您更换配置文件,需要重新生成GUID等信息,则需要将sharkConfig的enforceCheckMasterEvent设置为YES。默认值为NO

Shark单例设置方法

TMFSharkCenterConfiguration *sharkConfig = [TMFSharkCenterConfiguration masterConfiguration];
sharkConfig.enforceCheckMasterEvent = NO;  // or YES

// [[TMFSharkCenter masterCenter] initialize]; 或 [serverManager activate];
...

网关报错问题排查

1049

  • 描述

    SashimiServer 服务生成,sashimi层返回码。http 方式请求时,需要把apiName转换成cmd,这里出现cmd转换失败。

  • 排查项

    • apiName是否在控制台进行了API注册,拼写是否正确

    • 是否存在多环境情况使用其他环境的配置文件

1038

  • 描述

    SashimiServer 服务生成,sashimi层返回码。httpServer 内部超时。

  • 排查项

    • 控制台API配置地址是否正确
    • 控制台API配置地址链接的远程主机是否故障
Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""