2024/10/25 15:25:32
限定访问区域
为适应不同国家或地区的法律法规,声网支持限定访问区域功能,实现 SDK 只访问指定区域内的声网服务器,将音视频和消息数据传输限定在某一区域范围内。
信息
该功能为高级设置,适用于有访问安全限制的场景。
技术原理
开启限定访问区域功能后,不论用户在哪个区域使用你的 App,SDK 都只会访问指定区域的声网服务器。
例如你指定了北美为访问区域,假设有两位用户分别从北美和中国连接声网服务器:
指定的访问区域 | App 用户所在区域 | SDK 实际访问的区域 | 连接后的用户体验 |
---|---|---|---|
北美 | 北美 | 北美 | 正常 |
中国 | 可能受到较大影响 |
信息
- 如果指定区域的服务器都不可用,SDK 会直接报错。
- 由于指定区域与 App 用户所在区域之间存在跨区域公共互联网,公共互联网网络质量较差会导致音视频体验受到影响。
前提条件
在进行操作之前,请确保你已经在项目中实现了基本的实时音视频功能。详见实现音视频互动。
实现方法
你需要在调用 sharedEngineWithConfig
方法创建 AgoraRtcEngineKit
实例时,通过设置 AgoraRtcEngineConfig
中的 areaCode
参数来指定访问区域。
AgoraAreaCodeTypeGlobal
:(默认)全球。AgoraAreaCodeTypeCN
:中国大陆。AgoraAreaCodeTypeNA
:北美。AgoraAreaCodeTypeEUR
:欧洲。AgoraAreaCodeTypeAS
:除中国大陆以外的亚洲区域。AgoraAreaCodeTypeJP
:日本。AgoraAreaCodeTypeIN
:印度。
信息
区域码支持位操作。
指定区域
如果要指定仅访问一个区域的服务器(如北美),在创建 AgoraRtcEngineKit
实例之前,添加 config.areaCode = .NA
。
Swift
// 初始化 AgoraEngine
func initializeAgoraEngine() {
let config = AgoraRtcEngineConfig()
// 传入你的 App ID
config.appId = "YourAppId"
// 将频道场景设置为直播
config.channelProfile = .liveBroadcasting
// 指定仅访问北美的服务器
config.areaCode = .NA
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
}
排除区域
如果要排除一个区域的服务器(如中国大陆),在创建 AgoraRtcEngineKit
实例之前,添加 config.areaCode = AgoraAreaCodeType(rawValue: AgoraAreaCodeType.global.rawValue ^ AgoraAreaCodeType.CN.rawValue)!
。
Swift
// 初始化 AgoraEngine
func initializeAgoraEngine() {
let config = AgoraRtcEngineConfig()
// 传入你的 App ID
config.appId = "YourAppId"
// 将频道场景设置为直播
config.channelProfile = .liveBroadcasting
// 在访问区域中排除中国大陆
config.areaCode = AgoraAreaCodeType(rawValue: AgoraAreaCodeType.global.rawValue ^ AgoraAreaCodeType.CN.rawValue)!
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
}