一、概述
4.3.5 以上的版本,SDK 提供新增參數(shù),用以設(shè)定在單個 APP 里面有多個區(qū)域的設(shè)備時,能讓同個 APP 同時訪問多個區(qū)域的設(shè)備。
例如:一個用戶有 2 個設(shè)備,分別位于 CN 區(qū)(中國區(qū)) 或 US 區(qū)(北美區(qū)),使用新版本的機(jī)制,該用戶可在同個 APP 內(nèi)同時訪問和預(yù)覽這 2 個設(shè)備的直播。
二、前期準(zhǔn)備
如果使用公版的 master,只需更換 4.3.3 以上的 SDK,并搭配 SDK License Key 即可啟用多區(qū)域訪問功能。
三、接口設(shè)定
多區(qū)域設(shè)備訪問需分別在 APP 端和設(shè)備端進(jìn)行接口配置,具體操作如下:
3.1 APP 端配置
APP 端需在設(shè)備在線檢測和連接時指定設(shè)備所在區(qū)域,通過以下接口的結(jié)構(gòu)體參數(shù)設(shè)置:
IOTC_Check_Device_OnlineEx():通過IOTCCheckDeviceInput的device_region字段指定區(qū)域IOTC_Connect_ByUIDEx():通過IOTCConnectInput的device_region字段指定區(qū)域
3.1.1 相關(guān)結(jié)構(gòu)體 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;
說明:結(jié)構(gòu)體中
device_region 字段用于指定設(shè)備所在區(qū)域,設(shè)置為 0 時使用默認(rèn)區(qū)域。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); // 填寫設(shè)備所在的區(qū)域
input.timeout = 10;
IOTC_Connect_ByUIDEx(uid, IOTC_Get_SessionID(), &input);
說明:示例中指定設(shè)備區(qū)域為歐盟區(qū)(
REGION_STRING_EU),可根據(jù)實際設(shè)備位置替換為對應(yīng)區(qū)域常量。3.1.3 SDK 默認(rèn)區(qū)域常量定義
參考文件:
TUTKGlobalAPIs.h,SDK 提供以下默認(rèn)區(qū)域常量:static const char REGION_STRING_ALL[] = "all"; // 全部區(qū)域
static const char REGION_STRING_CN[] = "cn"; // 中國區(qū)
static const char REGION_STRING_EU[] = "eu"; // 歐盟區(qū)
static const char REGION_STRING_US[] = "us"; // 北美區(qū)
static const char REGION_STRING_ASIA[] = "asia"; // 亞洲區(qū)
說明:共提供 5 種默認(rèn)區(qū)域常量,覆蓋主流服務(wù)區(qū)域,可直接引用使用。
3.2 設(shè)備端配置
設(shè)備端需通過專用接口設(shè)置區(qū)域編碼,需在設(shè)置 License Key 之后調(diào)用:
3.2.1 核心接口
- 接口名稱:
TUTK_SDK_Set_Region_Code() - 調(diào)用時機(jī):必須在
TUTK_SDK_Set_License_Key接口調(diào)用成功后執(zhí)行
3.2.2 配置示例
// 設(shè)置設(shè)備區(qū)域為中國區(qū)(需在設(shè)置 License Key 后調(diào)用)
TUTK_SDK_Set_Region_Code(REGION_STRING_CN);
說明:示例將設(shè)備區(qū)域設(shè)置為中國區(qū)(
REGION_STRING_CN),區(qū)域常量與 APP 端一致,需根據(jù)設(shè)備實際部署區(qū)域選擇。關(guān)鍵注意事項
1. 版本依賴:多區(qū)域訪問功能需 SDK 4.3.5+,低版本需升級 SDK 才能支持;
2. 區(qū)域一致性:APP 端指定的 device_region 需與設(shè)備端通過 TUTK_SDK_Set_Region_Code() 設(shè)置的區(qū)域一致,否則可能導(dǎo)致連接失??;
3. 接口調(diào)用順序:設(shè)備端必須先調(diào)用 TUTK_SDK_Set_License_Key 并確保調(diào)用成功,再執(zhí)行 TUTK_SDK_Set_Region_Code();
4. 區(qū)域常量引用:APP 端和設(shè)備端需使用 SDK 內(nèi)置的區(qū)域常量(如 REGION_STRING_CN),避免手動輸入字符串導(dǎo)致拼寫錯誤;
