# 限定访问区域 (/zh-CN/realtime-media/rtc/build/security-and-auth/region/macos)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

为适应不同国家或地区的法律法规，声网支持限定访问区域功能，实现 SDK 只访问指定区域内的声网服务器，将音视频和消息数据传输限定在某一区域范围内。

:::info[信息]
该功能为高级设置，适用于有访问安全限制的场景。
:::

## 技术原理 [#技术原理-2]

开启限定访问区域功能后，不论用户在哪个区域使用你的 App，SDK 都只会访问指定区域的声网服务器。

例如你指定了北美为访问区域，假设有两位用户分别从北美和中国连接声网服务器：

<DocsTable>
<thead>
<tr>
<th scope="col">指定的访问区域</th>
<th scope="col">App 用户所在区域</th>
<th scope="col">SDK 实际访问的区域</th>
<th scope="col">连接后的用户体验</th>
</tr>
</thead>
<tbody>
<tr>
<td rowSpan={2}>北美</td>
<td>北美</td>
<td rowSpan={2}>北美</td>
<td>正常</td>
</tr>
<tr>
<td>中国</td>
<td>可能受到较大影响</td>
</tr>
</tbody>
</DocsTable>

:::info[信息]
- 如果指定区域的服务器都不可用，SDK 会直接报错。
- 由于指定区域与 App 用户所在区域之间需要经过跨区域公共互联网，若公网网络质量较差，音视频体验会受到影响。
:::

## 前提条件 [#前提条件-2]

在进行操作之前，请确保你已经在项目中实现了基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-2]

你需要在调用 `sharedEngineWithConfig` 方法创建 `AgoraRtcEngineKit` 实例时，通过设置 `AgoraRtcEngineConfig` 中的 `areaCode` 参数来指定访问区域。

- `AgoraAreaCodeTypeGlobal`：（默认）全球。
- `AgoraAreaCodeTypeCN`：中国大陆。
- `AgoraAreaCodeTypeNA`：北美。
- `AgoraAreaCodeTypeEUR`：欧洲。
- `AgoraAreaCodeTypeAS`：除中国大陆以外的亚洲区域。
- `AgoraAreaCodeTypeJP`：日本。
- `AgoraAreaCodeTypeIN`：印度。

:::info[信息]
区域码支持位操作。
:::

### 指定区域 [#指定区域-2]

如果要指定仅访问一个区域的服务器（如北美），在创建 `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)
}

```

### 排除区域 [#排除区域-2]

如果要排除一个区域的服务器（如中国大陆），在创建 `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)
}
```

## 参考信息 [#参考信息-2]

### API 参考 [#api-参考-2]

[`sharedEngineWithConfig`](/zh-CN/api-reference/rtc/ios/initialize#api_irtcengine_initialize)








