概述
4.3.5 以上的版本,SDK有提供新增参数,用以设定在单个APP里面有多个区域的设备的时候,能让同个APP同时访问多个区域的设备。
比如一个用户,有2个设备,分别位于CN区(中国区)或者US区(北美区),那使用新版本的机制,这个用户就可以在同个APP内同时访问和预览这2个设备的直播。
前期准备
如果是使用公版的master,则只要更换4.3.3以上的SDK,然后搭配SDK License Key就行了。
接口设定
- APP端
IOTC_Check_Device_OnlineEx()时填至IOTCCheckDeviceInput的device_region。
IOTC_Connect_ByUIDEx()时填至IOTCConnectInput的device_region。
相关结构体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;
例子:
//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);
SDK默认的region code定义(参考文件:TUTKGlobalAPIs.h):
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";
*如果是单机版的master,对应的region code将由TUTK生成和提供;
比如客户自架2组master,分别服务于AB两个区域。那么TUTK将根据用户提供的A,B区域的服务器的域名,生成两个region code(code_a,code_b),APP再通过设定code_a或者code_b分别去访问这两个区域的设备。
- 设备端
请直接使用TUTK_SDK_Set_Region_Code()更改,需在TUTK_SDK_Set_License_Key后调用。
例子:
TUTK_SDK_Set_Region_Code(REGION_STRING_CN);
*如果是单机版的master,对应的region code将由TUTK生成和提供。