限定 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 支持配置的区域包括:

  • 中国大陆地区
  • 除中国大陆以外的 全球 区域

实现方法

Android

在初始化 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);
iOS

调用 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];
Windows/macOS

调用 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;
}
Web

在初始化 RTC Web SDK 时,通过设置 NERTC.setArea() 方法中的 areaCode 参数指定访问区域。

areaCode 参数的枚举如下表所示。

地区 枚举值
除中国大陆以外的 全球 区域 OVERSEAS
(默认)不指定区域 GLOBAL

示例代码如下:

TypeScript  // 在创建客户端之前,设置访问区域为海外。不调用该接口表示中国大陆。
  NERTC.setArea({areaCode: 'OVERSEAS'})
  //初始化 SDK 实例
  const client = NERTC.createClient(...)
此文档是否对你有帮助?
有帮助
去反馈
  • 版本要求
  • 技术原理
  • 实现方法