# 网络及其他 (/zh-CN/api-reference/rtc/harmonyos/network)

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

<a id="toc_network"></a>

<a id="api_irtcengine_enableencryption"></a>

<a id="ariaid-title2"></a>

## enableEncryption [#enableencryption]

开启或关闭内置加密。

<a id="api_irtcengine_enableencryption__prototype"></a>

```ts
public abstract enableEncryption(enabled: boolean, config: EncryptionConfig): number;
```

<a id="api_irtcengine_enableencryption__detailed_desc"></a>

用户离开频道后，SDK 会自动关闭加密。如需重新开启加密，你需要在用户再次加入频道前调用该方法。

<a id="api_irtcengine_enableencryption__scenario"></a>

### 适用场景 [#适用场景]

对安全要求较高的场景。

<a id="api_irtcengine_enableencryption__timing"></a>

### 调用时机 [#调用时机]

该方法需要在加入频道前调用。

<a id="api_irtcengine_enableencryption__restriction"></a>

### 调用限制 [#调用限制]

- 同一频道内的所有用户在调用该方法时，必须设置相同的加密模式和密钥。
- 如果开启了内置加密，则不能使用旁路推流功能。

<a id="api_irtcengine_enableencryption__parameters"></a>

### 参数 [#参数]

<ParameterList>
<a id="enabled"></a>
<Parameter name="enabled">

是否开启内置加密：

- true: 开启内置加密。
- false:（默认）关闭内置加密。

</Parameter>
<a id="config"></a>
<Parameter name="config">

配置内置加密模式和密钥。详见 [EncryptionConfig](/zh-CN/api-reference/rtc/harmonyos/class-encryptionconfig)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_enableencryption__return_values"></a>

### 返回值 [#返回值]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败

  - -2: 调用了无效的参数。需重新指定参数。
  - -4: 设置的加密模式不正确或加载外部加密库失败。需检查枚举值是否正确或重新加载外部加密库。
  - -7: SDK 尚未初始化。需在调用 API 之前已创建 [RtcEngine](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengine) 对象并完成初始化。

### 所属接口类 [#所属接口类]

- [RtcEngine](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengine)

<a id="api_irtcengineex_enableencryptionex"></a>

<a id="ariaid-title3"></a>

## enableEncryptionEx [#enableencryptionex]

开启或关闭内置加密。

<a id="api_irtcengineex_enableencryptionex__prototype"></a>

```ts
public abstract enableEncryptionEx(enabled:boolean,config:EncryptionConfig,connection:RtcConnection):number;
```

<a id="api_irtcengineex_enableencryptionex__detailed_desc"></a>

用户离开频道后，SDK 会自动关闭加密。如需重新开启加密，你需要在用户再次加入频道前调用该方法。

<a id="api_irtcengineex_enableencryptionex__scenario"></a>

### 适用场景 [#适用场景-1]

对安全要求较高的场景。

<a id="api_irtcengineex_enableencryptionex__timing"></a>

### 调用时机 [#调用时机-1]

该方法需要在加入频道前调用。

<a id="api_irtcengineex_enableencryptionex__restriction"></a>

### 调用限制 [#调用限制-1]

- 同一频道内的所有用户在调用该方法时，必须设置相同的加密模式和密钥。
- 如果开启了内置加密，则不能使用旁路推流功能。

<a id="api_irtcengineex_enableencryptionex__parameters"></a>

### 参数 [#参数-1]

<ParameterList>
<a id="enabled-1"></a>
<Parameter name="enabled">

是否开启内置加密：

- true: 开启内置加密。
- false:（默认）关闭内置加密。

</Parameter>
<a id="config-1"></a>
<Parameter name="config">

配置内置加密模式和密钥。详见 [EncryptionConfig](/zh-CN/api-reference/rtc/harmonyos/class-encryptionconfig)。

</Parameter>
<a id="connection"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/harmonyos/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_enableencryptionex__return_values"></a>

### 返回值 [#返回值-1]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

<a id="api_irtcengine_getcallid"></a>

<a id="ariaid-title4"></a>

## getCallId [#getcallid]

获取通话 ID。

<a id="api_irtcengine_getcallid__prototype"></a>

```ts
public abstract getCallId(): string;
```

<a id="api_irtcengine_getcallid__detailed_desc"></a>

<a id="api_irtcengine_getcallid__detail"></a>

客户端在每次加入频道后会生成一个对应的 callId，标识该客户端的此次通话。

<a id="api_irtcengine_getcallid__timing"></a>

### 调用时机 [#调用时机-2]

该方法需要在加入频道后调用。

<a id="api_irtcengine_getcallid__restriction"></a>

### 调用限制 [#调用限制-2]

无。

<a id="api_irtcengine_getcallid__parameters"></a>

### 参数 [#参数-2]

<ParameterList>
<a id="callid"></a>
<Parameter name="callId">

输出参数，当前的通话 ID。

</Parameter>
</ParameterList>

<a id="api_irtcengine_getcallid__return_values"></a>

### 返回值 [#返回值-2]

### 所属接口类 [#所属接口类-1]

- [RtcEngine](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengine)

<a id="api_irtcengineex_getcallidex"></a>

<a id="ariaid-title5"></a>

## getCallIdEx [#getcallidex]

使用连接 ID 获取通话 ID。

<a id="api_irtcengineex_getcallidex__prototype"></a>

```ts
public abstract  getCallIdEx(connection:RtcConnection):string;
```

<a id="api_irtcengineex_getcallidex__detailed_desc"></a>

客户端在每次加入频道后会生成一个对应的 callId，标识该客户端的此次通话。

<a id="api_irtcengineex_getcallidex__timing"></a>

### 调用时机 [#调用时机-3]

该方法需要在加入频道后调用。

<a id="api_irtcengineex_getcallidex__restriction"></a>

### 调用限制 [#调用限制-3]

无。

<a id="api_irtcengineex_getcallidex__parameters"></a>

### 参数 [#参数-3]

<ParameterList>
<a id="connection-1"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/harmonyos/class-rtcconnection)。

</Parameter>
</ParameterList>

### 返回值 [#返回值-3]

### 所属接口类 [#所属接口类-2]

- [RtcEngineEx](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengineex)

<a id="api_irtcengine_getcurrentmonotonictimeinms"></a>

<a id="ariaid-title6"></a>

## getCurrentMonotonicTimeInMs [#getcurrentmonotonictimeinms]

获取 SDK 当前的 Monotonic Time。

<a id="api_irtcengine_getcurrentmonotonictimeinms__prototype"></a>

```ts
public abstract getCurrentMonotonicTimeInMs(): number;
```

<a id="api_irtcengine_getcurrentmonotonictimeinms__detailed_desc"></a>

Monotonic Time 是指一个单调递增的时间序列，它的值会随着时间的推移而增加。单位为毫秒。

在自定义视频采集、自定义音频采集场景中，为确保音视频同步，声网建议你调用该方法获取 SDK 当前的 Monotonic Time 后，将该值传入采集的视频帧（[VideoFrame](/zh-CN/api-reference/rtc/harmonyos/class-videoframe)）、音频帧（[AudioFrame](/zh-CN/api-reference/rtc/harmonyos/class-audioframe)）的时间戳参数。

<a id="api_irtcengine_getcurrentmonotonictimeinms__timing"></a>

### 调用时机 [#调用时机-4]

加入频道前后均可调用。

<a id="api_irtcengine_getcurrentmonotonictimeinms__restriction"></a>

### 调用限制 [#调用限制-4]

无。

<a id="api_irtcengine_getcurrentmonotonictimeinms__return_values"></a>

### 返回值 [#返回值-4]

- ≥ 0: 方法调用成功，返回 SDK 当前的 Monotonic Time（毫秒）。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-3]

- [RtcEngine](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_geterrordescription"></a>

<a id="ariaid-title7"></a>

## getErrorDescription [#geterrordescription]

获取警告或错误描述。

<a id="api_irtcengine_geterrordescription__prototype"></a>

```ts
public static getErrorDescription(error: number): string {
  return RtcEngineImpl.getErrorDescriptionInternal(error);
}
```

<a id="api_irtcengine_geterrordescription__parameters"></a>

### 参数 [#参数-4]

<ParameterList>
<a id="error"></a>
<Parameter name="error">

SDK 报告的错误码。

</Parameter>
</ParameterList>

<a id="api_irtcengine_geterrordescription__return_values"></a>

### 返回值 [#返回值-5]

具体的错误描述。

### 所属接口类 [#所属接口类-4]

- [RtcEngine](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_getnativehandle"></a>

<a id="ariaid-title8"></a>

## getNativeHandle [#getnativehandle]

获取 Native SDK 的 C++ 句柄。

<a id="api_irtcengine_getnativehandle__prototype"></a>

```ts
public abstract getNativeHandle():bigint;
```

<a id="api_irtcengine_getnativehandle__detailed_desc"></a>

### 详情 [#详情]

该方法获取 Native SDK 引擎 的 C++ 句柄，用于包括注册音视频回调在内的特殊场景。

<a id="api_irtcengine_getnativehandle__return_values"></a>

### 返回值 [#返回值-6]

SDK 引擎的 Native 句柄。

### 所属接口类 [#所属接口类-5]

- [RtcEngine](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_getntpwalltimeinms"></a>

<a id="ariaid-title9"></a>

## getNtpWallTimeInMs [#getntpwalltimeinms]

获取当前的 NTP (网络时间协议) 时间。

<a id="api_irtcengine_getntpwalltimeinms__prototype"></a>

```ts
public abstract getNtpWallTimeInMs():bigint;
```

<a id="api_irtcengine_getntpwalltimeinms__detailed_desc"></a>

### 详情 [#详情-1]

在实时合唱的场景中，特别是在各个接收端由于网络原因导致下行链路不一致的情况下，你可以调用该方法来获取当前的 NTP 时间作为基准时间，以对齐多个接收端的歌词和音乐，实现合唱同步。

<a id="api_irtcengine_getntpwalltimeinms__return_values"></a>

### 返回值 [#返回值-7]

当前 NTP 时间的 Unix 时间戳 (毫秒)。

<a id="api_irtcengine_getversion"></a>

<a id="ariaid-title10"></a>

## getSdkVersion [#getsdkversion]

获取 SDK 版本。

<a id="api_irtcengine_getversion__prototype"></a>

```ts
public static getSdkVersion(): string {
  return RtcEngineImpl.getRtcSdkVersion();
}
```

<a id="api_irtcengine_getversion__parameters"></a>

### 参数 [#参数-5]

<a id="api_irtcengine_getversion__return_values"></a>

### 返回值 [#返回值-8]

当前的 SDK 版本号。格式为字符串。

### 所属接口类 [#所属接口类-6]

- [RtcEngine](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setparameters"></a>

<a id="ariaid-title11"></a>

## setParameters [#setparameters]

SDK 的 JSON 配置信息，用于提供技术预览或特别定制功能。

<a id="api_irtcengine_setparameters__prototype"></a>

```ts
public abstract setParameters(parameters: string): number;
```

<a id="api_irtcengine_setparameters__parameters"></a>

### 参数 [#参数-6]

<ParameterList>
<a id="parameters"></a>
<Parameter name="parameters">

JSON 字符串形式的参数。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setparameters__return_values"></a>

### 返回值 [#返回值-9]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-7]

- [RtcEngine](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setremotesubscribefallbackoption"></a>

<a id="ariaid-title12"></a>

## setRemoteSubscribeFallbackOption [#setremotesubscribefallbackoption]

设置弱网环境下订阅的音视频流回退选项。

<a id="api_irtcengine_setremotesubscribefallbackoption__prototype"></a>

```ts
public abstract setRemoteSubscribeFallbackOption(option:Constants.StreamFallbackOptions):number;
```

<a id="api_irtcengine_setremotesubscribefallbackoption__detailed_desc"></a>

### 详情 [#详情-2]

<a id="api_irtcengine_setremotesubscribefallbackoption__desc1"></a>

网络不理想的环境下，实时通信音视频的质量会下降。你可以调用该方法并将 option 设置为 STREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW 或 STREAM_FALLBACK_OPTION_AUDIO_ONLY，SDK 会在下行弱网且音视频质量严重受影响时，将视频流切换为小流或关闭视频流，从而保证音频质量。同时，SDK 会持续监控网络质量，并在网络质量改善时恢复订阅音视频流。

<a id="api_irtcengine_setremotesubscribefallbackoption__desc2"></a>

当订阅流回退为音频流或由音频流恢复为音视频流时，SDK 会触发 onRemoteSubscribeFallbackToAudioOnly 回调。

<a id="api_irtcengine_setremotesubscribefallbackoption__parameters"></a>

### 参数 [#参数-7]

<ParameterList>
<a id="option"></a>
<Parameter name="option">

订阅流的回退选项。

- STREAM_FALLBACK_OPTION_DISABLED (0): 网络条件较差时，不对音视频流作回退处理，但不能保证音视频流的质量。
- STREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW (1):（默认）网络条件较差时，只接收视频小流（低分辨率、低码率视频流）。
- STREAM_FALLBACK_OPTION_AUDIO_ONLY (2): 网络条件较差时，先尝试只接收视频小流；如果因网络环境太差无法显示视频，则再回退到只接收订阅的音频流。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setremotesubscribefallbackoption__return_values"></a>

### 返回值 [#返回值-10]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

<a id="api_irtcengine_startlastmileprobetest"></a>

<a id="ariaid-title13"></a>

## startLastmileProbeTest [#startlastmileprobetest]

开始通话前网络质量探测。

<a id="api_irtcengine_startlastmileprobetest__prototype"></a>

```ts
public abstract startLastmileProbeTest(config: LastmileProbeConfig): number;
```

<a id="api_irtcengine_startlastmileprobetest__detailed_desc"></a>

开始通话前网络质量探测，向用户反馈上下行网络的带宽、丢包、网络抖动和往返时延数据。

<a id="api_irtcengine_startlastmileprobetest__timing"></a>

### 调用时机 [#调用时机-5]

该方法需要在加入频道前调用，且在收到 onLastmileQuality 和 onLastmileProbeResult 回调之前请不要调用其他方法，否则可能会由于 API 操作过于频繁导致此方法无法执行。

<a id="api_irtcengine_startlastmileprobetest__restriction"></a>

### 调用限制 [#调用限制-5]

无。

<a id="api_irtcengine_startlastmileprobetest__related"></a>

### 相关回调 [#相关回调]

成功调用该方法后，SDK 会依次触发如下 2 个回调：

- [onLastmileQuality](/zh-CN/api-reference/rtc/harmonyos/network#callback_irtcengineeventhandler_onlastmilequality)，视网络情况约 2 秒内返回。该回调通过打分反馈上下行网络质量，更贴近用户的主观感受。
- [onLastmileProbeResult](/zh-CN/api-reference/rtc/harmonyos/network#callback_irtcengineeventhandler_onlastmileproberesult)，视网络情况约 30 秒内返回。该回调通过具体数据反馈上下行网络质量，更加客观。

<a id="api_irtcengine_startlastmileprobetest__parameters"></a>

### 参数 [#参数-8]

<ParameterList>
<a id="config-2"></a>
<Parameter name="config">

Last mile 网络探测配置，详见 [LastmileProbeConfig](/zh-CN/api-reference/rtc/harmonyos/class-lastmileprobeconfig)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_startlastmileprobetest__return_values"></a>

### 返回值 [#返回值-11]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-8]

- [RtcEngine](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_stoplastmileprobetest"></a>

<a id="ariaid-title14"></a>

## stopLastmileProbeTest [#stoplastmileprobetest]

停止通话前网络质量探测。

<a id="api_irtcengine_stoplastmileprobetest__prototype"></a>

```ts
public abstract stopLastmileProbeTest(): number;
```

<a id="api_irtcengine_stoplastmileprobetest__return_values"></a>

### 返回值 [#返回值-12]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-9]

- [RtcEngine](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengine)

<a id="callback_irtcengineeventhandler_onconnectionlost"></a>

<a id="ariaid-title15"></a>

## onConnectionLost [#onconnectionlost]

网络连接中断，且 SDK 无法在 10 秒内连接服务器回调。

<a id="callback_irtcengineeventhandler_onconnectionlost__prototype"></a>

```ts
onConnectionLost?:() => void;
```

<a id="callback_irtcengineeventhandler_onconnectionlost__detailed_desc"></a>

### 详情 [#详情-3]

SDK 在调用 joinChannelWithOptions 后，无论是否加入成功，只要 10 秒和服务器无法连接就会触发该回调。如果 SDK 在断开连接后，20 分钟内还是没能重新加入频道，SDK 会停止尝试重连。

### 所属接口类 [#所属接口类-10]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onconnectionstatechanged"></a>

<a id="ariaid-title16"></a>

## onConnectionStateChanged [#onconnectionstatechanged]

网络连接状态已改变回调。

<a id="callback_irtcengineeventhandler_onconnectionstatechanged__prototype"></a>

```ts
onConnectionStateChanged ? : ( state: Constants.ConnectionState, reason: Constants.ConnectionChangedReason ) => void
```

<a id="callback_irtcengineeventhandler_onconnectionstatechanged__detailed_desc"></a>

### 详情 [#详情-4]

<a id="callback_irtcengineeventhandler_onconnectionstatechanged__desc"></a>

该回调在网络连接状态发生改变的时候触发，并告知用户当前的网络连接状态和引起网络状态改变的原因。

<a id="callback_irtcengineeventhandler_onconnectionstatechanged__parameters"></a>

### 参数 [#参数-9]

<ParameterList>
<a id="state"></a>
<Parameter name="state">

<a id="callback_irtcengineeventhandler_onconnectionstatechanged__connectionstate"></a>

当前网络连接状态。详见 [ConnectionState](/zh-CN/api-reference/rtc/harmonyos/enum-connectionstatetype)。

</Parameter>
<a id="reason"></a>
<Parameter name="reason">

引起当前网络连接状态改变的原因。详见 [ConnectionChangedReason](/zh-CN/api-reference/rtc/harmonyos/enum-connectionchangedreasontype)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-11]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onencryptionerror"></a>

<a id="ariaid-title17"></a>

## onEncryptionError [#onencryptionerror]

内置加密出错回调。

<a id="callback_irtcengineeventhandler_onencryptionerror__prototype"></a>

```ts
onEncryptionError?:(errorType:Constants.EncryptionError) => void;
```

<a id="callback_irtcengineeventhandler_onencryptionerror__detailed_desc"></a>

### 详情 [#详情-5]

调用 [enableEncryption](/zh-CN/api-reference/rtc/harmonyos/network#api_irtcengine_enableencryption) 开启加密后， 如果发流端、收流端出现加解密出错，SDK 会触发该回调。

<a id="callback_irtcengineeventhandler_onencryptionerror__parameters"></a>

### 参数 [#参数-10]

<ParameterList>
<a id="errortype"></a>
<Parameter name="errorType">

错误类型，详见 [EncryptionError](/zh-CN/api-reference/rtc/harmonyos/enum-encryptionerrortype)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-12]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onlastmileproberesult"></a>

<a id="ariaid-title18"></a>

## onLastmileProbeResult [#onlastmileproberesult]

通话前网络上下行 Last mile 质量探测报告回调。

<a id="callback_irtcengineeventhandler_onlastmileproberesult__prototype"></a>

```ts
onLastmileProbeResult? : (result:LastmileProbeResult) => void;
```

<a id="callback_irtcengineeventhandler_onlastmileproberesult__detailed_desc"></a>

### 详情 [#详情-6]

在调用 [startLastmileProbeTest](/zh-CN/api-reference/rtc/harmonyos/network#api_irtcengine_startlastmileprobetest) 之后，SDK 会在约 30 秒内返回该回调。

<a id="callback_irtcengineeventhandler_onlastmileproberesult__parameters"></a>

### 参数 [#参数-11]

<ParameterList>
<a id="result"></a>
<Parameter name="result">

上下行 Last mile 质量探测结果。详见 [LastmileProbeResult](/zh-CN/api-reference/rtc/harmonyos/class-lastmileproberesult)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-13]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onlastmilequality"></a>

<a id="ariaid-title19"></a>

## onLastmileQuality [#onlastmilequality]

网络上下行 last mile 质量报告回调。

<a id="callback_irtcengineeventhandler_onlastmilequality__prototype"></a>

```ts
onLastmileQuality? : (quality:Constants.QualityType) => void;
```

<a id="callback_irtcengineeventhandler_onlastmilequality__detailed_desc"></a>

### 详情 [#详情-7]

该回调描述本地用户在加入频道前的 last mile 网络探测的结果，其中 last mile 是指设备到声网边缘服务器的网络状态。

加入频道前，调用 [startLastmileProbeTest](/zh-CN/api-reference/rtc/harmonyos/network#api_irtcengine_startlastmileprobetest) 之后，SDK 触发该回调报告本地用户在加入频道前的 last mile 网络探测的结果。

<a id="callback_irtcengineeventhandler_onlastmilequality__parameters"></a>

### 参数 [#参数-12]

<ParameterList>
<a id="quality"></a>
<Parameter name="quality">

Last mile 网络质量。详见 [NetworkQuality](/zh-CN/api-reference/rtc/harmonyos/enum-qualitytype)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-14]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onnetworkquality"></a>

<a id="ariaid-title20"></a>

## onNetworkQuality [#onnetworkquality]

通话中每个用户的网络上下行 last mile 质量报告回调。

<a id="callback_irtcengineeventhandler_onnetworkquality__prototype"></a>

```ts
onNetworkQuality? : (uid: number, txQuality: Constants.NetworkQuality, rxQuality: Constants.NetworkQuality) => void;
```

<a id="callback_irtcengineeventhandler_onnetworkquality__detailed_desc"></a>

### 详情 [#详情-8]

<a id="callback_irtcengineeventhandler_onnetworkquality__desc1"></a>

该回调描述每个用户在通话中的 last mile 网络状态，其中 last mile 是指设备到声网边缘服务器的网络状态。

<a id="callback_irtcengineeventhandler_onnetworkquality__desc2"></a>

该回调每 2 秒触发一次。如果远端有多个用户，该回调每 2 秒会被触发多次。

该回调通过频道内的广播包反馈网络质量。过多的广播包可能引发广播风暴。为防止广播风暴导致频道内大量数据传输，该回调默认支持同时反馈最多 4 个远端主播的网络质量。

:::note
注： 用户不发流时，txQuality 为 `UNKNOWN`；用户不收流时，rxQuality 为 `UNKNOWN`。
:::

<a id="callback_irtcengineeventhandler_onnetworkquality__parameters"></a>

### 参数 [#参数-13]

<ParameterList>
<a id="uid"></a>
<Parameter name="uid">

用户 ID。表示该回调报告的是持有该 ID 的用户的网络质量。如果当 uid 为 0 时，返回的是本地用户的网络质量。

</Parameter>
<a id="txquality"></a>
<Parameter name="txQuality">

该用户的上行网络质量，基于发送码率、上行丢包率、平均往返时延和网络抖动计算。 该值代表当前的上行网络质量，帮助判断是否可以支持当前设置的视频编码属性。 假设上行码率是 1000 Kbps，那么支持直播场景下 640 × 480 的分辨率、15 fps 的帧率没有问题，但是支持 1280 × 720 的分辨率就会有困难。详见 [NetworkQuality](/zh-CN/api-reference/rtc/harmonyos/enum-qualitytype)。

</Parameter>
<a id="rxquality"></a>
<Parameter name="rxQuality">

该用户的下行网络质量，基于下行网络的丢包率、平均往返延时和网络抖动计算。详见 [NetworkQuality](/zh-CN/api-reference/rtc/harmonyos/enum-qualitytype)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-15]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onpermissionerror"></a>

<a id="ariaid-title21"></a>

## onPermissionError [#onpermissionerror]

获取设备权限出错回调。

<a id="callback_irtcengineeventhandler_onpermissionerror__prototype"></a>

```ts
onPermissionError?:(permission:Constants.PermissionType) => void;
```

<a id="callback_irtcengineeventhandler_onpermissionerror__detailed_desc"></a>

### 详情 [#详情-9]

无法获取设备权限时，SDK 会触发该回调，报告哪个设备的权限无法获取。

<a id="callback_irtcengineeventhandler_onpermissionerror__parameters"></a>

### 参数 [#参数-14]

<ParameterList>
<a id="permission"></a>
<Parameter name="permission">

设备权限类型。详见 [PermissionType](/zh-CN/api-reference/rtc/harmonyos/enum-permissiontype)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-16]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/harmonyos/rtc-interface-class#class_irtcengineeventhandler)
