一、概述
4.3.5 以上的版本,SDK 提供新增参数,用以设定在单个 APP 里面有多个区域的设备时,能让同个 APP 同时访问多个区域的设备。
例如:一个用户有 2 个设备,分别位于 CN 区(中国区) 或 US 区(北美区),使用新版本的机制,该用户可在同个 APP 内同时访问和预览这 2 个设备的直播。
二、前期准备
如果使用公版的 master,只需更换 4.3.3 以上的 SDK,并搭配 SDK License Key 即可启用多区域访问功能。
三、接口设定
多区域设备访问需分别在 APP 端和设备端进行接口配置,具体操作如下:
3.1 APP 端配置
APP 端需在设备在线检测和连接时指定设备所在区域,通过以下接口的结构体参数设置:
IOTC_Check_Device_OnlineEx():通过IOTCCheckDeviceInput的device_region字段指定区域IOTC_Connect_ByUIDEx():通过IOTCConnectInput的device_region字段指定区域
3.1.1 相关结构体 SDK 定义
typedef struct IOTCConnectInput {
uint32_t cb; //!< Check byte for structure size
IOTCAuthenticationType authentication_type;
char auth_key[IOTC_AUTH_KEY_LENGTH]; //!< allow '0'~'9' & 'A'~'Z' & 'a'~'z'
char device_region[MAX_REGION_LENGTH + 1]; //!< use default region if set 0
uint32_t timeout; //!< set 0 as default behavior
} IOTCConnectInput;
typedef struct IOTCCheckDeviceInput {
uint32_t cb; //!< Check byte for structure size
IOTCAuthenticationType authentication_type;
char auth_key[IOTC_AUTH_KEY_LENGTH];
char device_region[MAX_REGION_LENGTH + 1];
} IOTCCheckDeviceInput;
说明:结构体中
device_region 字段用于指定设备所在区域,设置为 0 时使用默认区域。3.1.2 配置示例
// IOTC 连线
IOTCConnectInput input;
memset(&input, 0, sizeof(input));
input.cb = sizeof(input);
input.authentication_type = AUTHENTICATE_BY_KEY;
strcpy(input.auth_key, "00000000");
strcpy(input.device_region, REGION_STRING_EU); // 填写设备所在的区域
input.timeout = 10;
IOTC_Connect_ByUIDEx(uid, IOTC_Get_SessionID(), &input);
说明:示例中指定设备区域为欧盟区(
REGION_STRING_EU),可根据实际设备位置替换为对应区域常量。3.1.3 SDK 默认区域常量定义
参考文件:
TUTKGlobalAPIs.h,SDK 提供以下默认区域常量:static const char REGION_STRING_ALL[] = "all"; // 全部区域
static const char REGION_STRING_CN[] = "cn"; // 中国区
static const char REGION_STRING_EU[] = "eu"; // 欧盟区
static const char REGION_STRING_US[] = "us"; // 北美区
static const char REGION_STRING_ASIA[] = "asia"; // 亚洲区
说明:共提供 5 种默认区域常量,覆盖主流服务区域,可直接引用使用。
3.2 设备端配置
设备端需通过专用接口设置区域编码,需在设置 License Key 之后调用:
3.2.1 核心接口
- 接口名称:
TUTK_SDK_Set_Region_Code() - 调用时机:必须在
TUTK_SDK_Set_License_Key接口调用成功后执行
3.2.2 配置示例
// 设置设备区域为中国区(需在设置 License Key 后调用)
TUTK_SDK_Set_Region_Code(REGION_STRING_CN);
说明:示例将设备区域设置为中国区(
REGION_STRING_CN),区域常量与 APP 端一致,需根据设备实际部署区域选择。关键注意事项
1. 版本依赖:多区域访问功能需 SDK 4.3.5+,低版本需升级 SDK 才能支持;
2. 区域一致性:APP 端指定的 device_region 需与设备端通过 TUTK_SDK_Set_Region_Code() 设置的区域一致,否则可能导致连接失败;
3. 接口调用顺序:设备端必须先调用 TUTK_SDK_Set_License_Key 并确保调用成功,再执行 TUTK_SDK_Set_Region_Code();
4. 区域常量引用:APP 端和设备端需使用 SDK 内置的区域常量(如 REGION_STRING_CN),避免手动输入字符串导致拼写错误;
