一、概述:
TUTK P2P SDK从3.1.10版本开始,新增了区域设定的API,用以限制APP或者设备只访问指定区域的服务器。目前TUTK支持的分区设定为:
- 中国CN
- 北美US
- 欧洲EU
- 亚洲ASIA
默认的全区架构:
全区架构下,APP或者设备将访问到各个区域的服务器。
分区后的架构:
分区下,APP或者设备只会访问到指定区域的服务器。
如需要符合GDPR规则,则需要将P2P服务器,APP,设备端的P2P 区域设定为欧洲区。
二、P2P服务器的分区设定
通过配置P2P服务器的启动脚本中的P2P_SERVICE_REGION字段进行设定:
#!/bin/bash export P2P_LICENSE_KEY= #填写申请好的P2P License Key export P2P_SERVER_KEY= #填写申请好的Server Key export P2P_SERVICE_REGION=all #设定需要服务的区域,可以填写的值为 'asia', 'us', 'eu', 'cn' and 'all' export P2P_LOCAL_REGION=non-cn #P2P服务器所在的物理区域,可以填写的值为 'cn' or 'non-cn' CUR_DIR=$(cd `dirname $0`; pwd) #用以获取程序运行目录,进行开机重启的路径配置 s=1 while [ "$s" != "0" ] do if [ $(ps -A | grep -c 'IOTC_Server') == "0" ]; then ${CUR_DIR}/IOTC_Server --config=${CUR_DIR}/config.db -gP:G -p10001 & fi sleep 5 done
三、APP和设备端
API定义:
//4.3.3以下的版本的API定义,APP端跟设备端都使用此接口设定为同个区域。 #include "TUTKGlobalAPIs.h" TUTK_GLOBAL_APIs int32_t TUTK_SDK_Set_Region_Code(const char * region); //4.5.0以上版本的API定义 #include "IOTCAPIs.h" APP端: int32_t IOTC_Connect_ByUIDEx(const char * cszUID,int32_t SID,IOTCConnectInput* connectInput); 设备端: TUTK_GLOBAL_APIs int32_t TUTK_SDK_Set_Region_Code(const char * region);
例子:
- 设备端:
TUTK_SDK_Set_Region_Code(REGION_STRING_EU);//指定区域为EU,必须在IOTC_Initialize2之前设定。
APP端:
- 4.3.3以下版本:
TUTK_SDK_Set_Region_Code(REGION_STRING_EU);//指定区域为EU,必须在IOTC_Initialize2之前设定。此方法为全局设定,任何设备都默认使用此分区进行连线
- 4.5.0以上版本:
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);