# Restrict media zones (/en/realtime-media/video/build/manage-connection-and-quality/geofencing/unity)

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

When a user joins a channel, Video SDK automatically connects them to the Agora SDRTN® media zone that is geographically closest to the user. However, to meet the laws and regulations of the user's country, you may need to specify, or filter out connections to a specific geographical zone. Agora enables you to control and customize data routing in your game by specifying the Agora SDRTN® media zone users connect to.

    <CalloutContainer type="info">
      <CalloutDescription>
        This is an advanced feature suitable only for use-cases with access security restrictions.
      </CalloutDescription>
    </CalloutContainer>

    ## Understand the tech [#understand-the-tech-9]

    After you turn on the restricted media zones feature, the SDK only accesses the Agora server in the specified zone(s), irrespective of the geographical location of the user. As an example, the following table shows the outcome if you specify North America as the access zone, and users connect to Agora SDRTN® from North America and China respectively:

    | Designated access zone | User's location | Zone actually accessed by the SDK | User experience         |
    | ---------------------- | --------------- | --------------------------------- | ----------------------- |
    | North America          | North America   | North America                     | Normal                  |
    | North America          | China           | North America                     | Quality may be affected |

    <CalloutContainer type="info">
      <CalloutDescription>
        * If a server in the specified zone is not available, the SDK reports an error.
        * Due to cross-regional public internet between the designated zone and the geographical location where the app user is located, the audio and video experience may be affected.
      </CalloutDescription>
    </CalloutContainer>

    The following figure shows the workflow you implement to restrict access to media zones:

    **Restrict media zones**

    ![Restrict media zones](https://assets-docs.agora.io/images/video-sdk/restrict-media-zones.svg)

    ## Prerequisites [#prerequisites-9]

    Ensure that you have implemented the [SDK quickstart](/en/realtime-media/video/get-started-sdk) in your project.

    ## Implement restricted media zones [#implement-restricted-media-zones-9]

    This section shows you how to restrict access to media zones in your game.

    By default, the SDK connects to the nearest Agora server. Set the `areaCode` property of `RtcEngineContext` when calling the `initialize` method to specify the access zone(s). After setting the access zone, the SDK only connects to Agora servers in the specified zone(s).

    You can set the `areaCode` to:

    * `AREA_CODE_GLOB`: Global (Default)
    * `AREA_CODE_CN` : Mainland China
    * `AREA_CODE_NA` : North America
    * `AREA_CODE_EU` : Europe
    * `AREA_CODE_AS` : Asia except Mainland China
    * `AREA_CODE_JP` : Japan
    * `AREA_CODE_IN` : India

    <CalloutContainer type="info">
      <CalloutDescription>
        Media zones support bitwise operations.
      </CalloutDescription>
    </CalloutContainer>

    ### Include a media zone [#include-a-media-zone-4]

    To limit access to servers in only one media zone, such as North America, set `context.areaCode = AREA_CODE_NA;` before calling the `initialize` method:

    ```csharp
    // Initialize Agora SDK
    RtcEngine = Agora.Rtc.RtcEngine.CreateAgoraRtcEngine();
    RtcEngineContext context = new RtcEngineContext();
    context.appId = _appID;
    context.channelProfile = CHANNEL_PROFILE_TYPE.CHANNEL_PROFILE_LIVE_BROADCASTING;
    context.audioScenario = AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_DEFAULT;
    // Restrict access to servers in North America
    context.areaCode = AREA_CODE.AREA_CODE_NA;
    // Initialize RtcEngineContext
    RtcEngine.Initialize(context);
    ```

    ### Exclude a media zone [#exclude-a-media-zone-4]

    To exclude servers in a region, such as Mainland China, set `context.areaCode = AREA_CODE.AREA_CODE_GLOB ^ AREA_CODE.AREA_CODE_CN;` before calling the `initialize` method:

    ```csharp
    // Initialize Agora SDK
    RtcEngine = Agora.Rtc.RtcEngine.CreateAgoraRtcEngine();
    RtcEngineContext context = new RtcEngineContext();
    context.appId = _appID;
    context.channelProfile = CHANNEL_PROFILE_TYPE.CHANNEL_PROFILE_LIVE_BROADCASTING;
    context.audioScenario = AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_DEFAULT;
    // Exclude Mainland China from access area
    context.areaCode = AREA_CODE.AREA_CODE_GLOB ^ AREA_CODE.AREA_CODE_CN;
    // Initialize RtcEngineContext
    RtcEngine.Initialize(context);
    ```

    ## Reference [#reference-9]

    This section contains content that completes the information on this page, or points you to documentation that explains other aspects to this product.

    ### API reference [#api-reference-9]

    * [`Initialize`](https://api-ref.agora.io/en/video-sdk/unity/4.x/API/class_irtcengine.html#api_irtcengine_initialize)
    * [`RtcEngineContext`](https://api-ref.agora.io/en/video-sdk/unity/4.x/API/class_rtcengineconfig.html)
    * [`AreaCode`](https://api-ref.agora.io/en/video-sdk/unity/4.x/API/enum_areacode.html)
    * [`CreateAgoraRtcEngine`](https://api-ref.agora.io/en/video-sdk/unity/4.x/API/class_irtcengine.html#api_createagorartcengine)

    
  
      
  
