移动网关最佳实践(iOS)
移动网关接入
使用新版配置文件接入网关
前置条件
您已经部署了新版控制台,支持了新版配置文件(tmf-ios-configurations.json)下载。
接入移动网关
具体接入流程请参考接入iOS
切换生产环境与测试环境
集成TMF往往会遇到多套环境并存的情况,如生产环境、测试环境。TMF初始化支持设置不同的配置文件来做环境切换,具体做法如下:
从控制台下载不同环境的配置文件,并修改配置文件名,如:tmf-ios-configurations-uat.json、tmf-ios-configurations-sit.json。
将不同环境配置文件拷贝至工程目录下。
初始化基础库时,根据不同编译变体传入不同的配置文件。
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
实例对象设置customerID
和productID
之后创建。TMFSharkCenterConfiguration
实例对象的其它属性则需要在TMFServerManager
实例对象创建之后进行赋值。
不使用TMFBase接入网关
如果集成并使用TMFBase
SDK,其中的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];
网关接入测试
获取guid,如果成功获取guid则表示接入成功。
[[TMFSharkCenter masterCenter] fetchGUID:^(NSString * _Nullable GUID, NSError * _Nullable error) { NSLog(@"GUID:%@", GUID); if (GUID && GUID.length) { // 获取GUID成功 } else { // 获取GUID失败 } }];
- 参考《移动网关》手册,完成API请求测试。
切换应用配置数据迁移规则
从基线1.8.0起(shark 3.7.x以上版本)TMF支持按照环境隔离框架数据,不同应用配置的框架数据会存储在独立的数据目录中互不影响。由于旧版Shark无法自动检测当前运行环境变化情况,需要您根据实际情况来指定数据迁移规则。具体规则如下:
- 如果您需要保留旧的应用配置信息,那么需要将旧版数据统一迁移到新版数据存储结构中,将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配置地址链接的远程主机是否故障