限定 NERTC SDK 的访问区域
更新时间: 2024/07/16 17:21:28
为满足应用在非中国大陆地区的访问域名合规性,网易云信支持访问区域限制功能。您可以在初始化 网易云信音视频通话 SDK(简称 NERTC SDK) 时,指定访问区域。
版本要求
请集成 V5.5.10 及以上版本的 RTC SDK,以便更好地限制访问区域。您可以访问 资源下载 获取 NERTC SDK。
技术原理
开启限定访问区域功能后,无论用户身处何地使用 App,SDK 都只会访问指定区域的域名。例如,设置访问区域为除中国大陆以外的全球区域时,有 3 个来自不同国家的用户访问 App,SDK 将会访问海外的域名。
指定的访问区域 | App 用户所在区域 | SDK 实际访问的区域 | 连接后的用户体验 |
---|---|---|---|
除中国大陆以外的全球区域 | 马来西亚 | 其他国家或地区域名 | 正常 |
印尼 | 正常 | ||
中国 | 可能受影响 |
由于指定区域与用户所在区域之间存在跨区域公共互联网,当网络质量较差时,可能会影响音视频体验。
当前 RTC SDK 支持配置的区域包括:
- 中国大陆地区
- 除中国大陆以外的 全球 区域
实现方法
在初始化 RTC SDK 时,通过设置 NERtcOption
中的 areaCodeType
参数,指定访问区域。
NERtcAreaCodeType
参数的枚举如下表所示。
地区 | 枚举值 |
---|---|
中国大陆 | AREA_CODE_TYPE_CN |
除中国大陆以外的 全球 区域 | AREA_CODE_TYPE_OVERSEA_DEFAULT |
(默认)不指定区域 | AREA_CODE_TYPE_DEFAULT |
示例代码如下:
JavaNERtcOption option = new NERtcOption();
// 指定海外
option.areaCodeType = NERtcConstants.NERtcAreaCodeType.AREA_CODE_TYPE_OVERSEA_DEFAULT;
// 其他初始化配置
option.xxx = xxx;
// 初始化 SDK
NERtcEx.getInstance().init(mActivity, appKey, callback, option);
调用 SetUpEngineWithContext
接口创建 RTC 实例时,通过 NERtcAreaCodeType
参数指定访问区域。
NERtcAreaCodeType
参数的枚举如下表所示。
地区 | 枚举值 |
---|---|
中国大陆 | AREA_CODE_TYPE_CN |
除中国大陆以外的 全球 区域 | AREA_CODE_TYPE_OVERSEA_DEFAULT |
(默认)不指定区域 | AREA_CODE_TYPE_DEFAULT |
示例代码如下:
Objective-CNERtcEngineContext *context = [[NERtcEngineContext alloc] init];
context.appkey = 填写 appkey;
context.areaCodeType = 填写 areaCode;
//context 其他设置
[[NERtcEngine sharedEngine] setupEngineWithContext:context];
调用 Initialize 接口初始化 RTC SDK 时,通过设置 NERtcEngineContext 中的 area_code_type 参数,指定访问区域。
NERtcAreaCodeType
参数的枚举如下表所示。
地区 | 枚举值 |
---|---|
中国大陆 | AREA_CODE_TYPE_CN |
除中国大陆以外的 全球 区域 | AREA_CODE_TYPE_OVERSEA_DEFAULT |
(默认)不指定区域 | AREA_CODE_TYPE_DEFAULT |
示例代码如下:
C++NERtcEngineContext rtc_engine_context_;
IRtcEngineEx *rtc_engine_ = (IRtcEngineEx *)createNERtcEngine();
if (rtc_engine_ == nullptr) {
NRTC_LOG_ERROR("Failed to createNERtcEngine\n");
return;
}
rtc_engine_context_.app_key = app_key_.c_str();//填写 appkey
rtc_engine_context_.log_dir_path = log_dir_path_.c_str();//填写日志目录
rtc_engine_context_.log_level = kNERtcLogLevelInfo;
rtc_engine_context_.log_file_max_size_KBytes = 0;
rtc_engine_context_.event_handler = this;//设置一个回调监听对象,需要声明周期大于 SDK 引擎
rtc_engine_context_.area_code_type = kNERtcAreaCodeTypeOverseaDefault;//设置除中国大陆以外的全球区域
if (kNERtcNoError != rtc_engine_->initialize(rtc_engine_context_)) {
NRTC_LOG_ERROR("Failed to initialize NERtc Engine\n");
rtc_engine_->release(true);
destroyNERtcEngine((void *&)rtc_engine_);
return;
}
在初始化 RTC Web SDK 时,通过设置 NERTC.setArea() 方法中的 areaCode
参数指定访问区域。
areaCode
参数的枚举如下表所示。
地区 | 枚举值 |
---|---|
除中国大陆以外的 全球 区域 | OVERSEAS |
(默认)不指定区域 | GLOBAL |
示例代码如下:
TypeScript // 在创建客户端之前,设置访问区域为海外。不调用该接口表示中国大陆。
NERTC.setArea({areaCode: 'OVERSEAS'})
//初始化 SDK 实例
const client = NERTC.createClient(...)