你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

跳过应用程序中的设置屏幕

Azure 通信服务 UI 库提供了在不通过设置屏幕的情况下加入呼叫的选项。 它使开发人员能够以允许用户直接加入呼叫的方式构建通信应用程序,而无需任何用户交互。 此功能还提供在用户加入呼叫之前配置相机和麦克风(开或关)的默认状态的功能。

本文介绍如何在应用程序中正确设置该功能。

先决条件

设置功能

有关详细信息,请参阅 开源 Android UI 库示例应用程序代码

跳过设置屏幕的选项

CallCompositeLocalOptions 是一个选项包装器,用于设置 UI 库使用布尔值跳过设置屏幕的功能。 默认情况下,跳过设置屏幕的功能设置为 false。 必须使用布尔值进行设置skipSetupScreentrue,以提供跳过设置屏幕的体验。

我们建议你以这样的方式生成应用程序,以便在用户尝试加入呼叫时,已授予麦克风权限,以便获得流畅的加入体验。

Screenshot of joining call by skipping the setup screen for Android.

若要使用该功能,请将布尔值传递给skipSetupScreenCallCompositeLocalOptions它并将其注入callComposite.launch其中。

import com.azure.android.communication.ui.calling.models.CallCompositeLocalOptions

val localOptions: CallCompositeLocalOptions = CallCompositeLocalOptions()
    .setSkipSetupScreen(true)

callComposite.launch(callLauncherActivity, remoteOptions, localOptions)

相机和麦克风配置的默认选项

默认情况下,设置屏幕为用户提供在加入呼叫之前配置相机和麦克风设置的选项。 在设置跳过设置屏幕以加入呼叫时,用户直到呼叫处于呼叫状态,才具有该选项。

可以在用户加入呼叫之前传递布尔值 cameraOn ,并在 microphoneOn 用户加入呼叫之前打开或关闭相机和麦克风。 如果用户分别授予每个相机和麦克风的权限,则控制相机和麦克风的默认状态的功能不会受到影响。

默认情况下,两者都cameraOnmicrophoneOn设置为 false。 即使 UI 库的默认呼叫加入体验也也可以使用此功能。 在这种情况下,根据设置的配置,相机和麦克风在设置屏幕上处于打开或关闭状态。

若要设置相机和麦克风的默认状态,请传递cameraOn布尔值并将其microphoneOnCallCompositeLocalOptions注入callComposite.launch其中。

import com.azure.android.communication.ui.calling.models.CallCompositeLocalOptions

val localOptions: CallCompositeLocalOptions = CallCompositeLocalOptions()
    .setMicrophoneOn(true)
    .setCameraOn(true)

callComposite.launch(callLauncherActivity, remoteOptions, localOptions)

权限处理

建议让用户使用麦克风和相机权限加入呼叫,以使用通过麦克风和相机的默认配置 API 跳过设置屏幕的功能。 如果未处理用户的权限,UI 库会尝试为你处理这些权限。

用户必须启用麦克风权限才能加入呼叫。 如果用户在拒绝麦克风权限后尝试加入呼叫,UI 库会在连接阶段中删除呼叫,并引发代码 CallCompositeErrorCode.MICROPHONE_PERMISSION_NOT_GRANTED错误。

但是,即使用户拒绝相机权限,用户也可以加入呼叫。 当拒绝相机权限时,UI 库将禁用相机功能。 因此,相机的默认配置 API 不会影响调用体验。 授予相机权限后,用户可以享受相机的默认配置 API 的效果。

建议处理麦克风权限。 如果用户在默认情况下启用相机加入呼叫,则建议你也处理相机权限。

网络错误

如果在调用或调用中断期间发生网络中断,UI 库将关闭并引发代码 CallCompositeErrorCode.CALL_END_FAILED错误。

如果用户没有网络连接,并且尝试在跳过设置屏幕后加入呼叫,UI 库会在调用连接阶段关闭,并引发代码 CallCompositeErrorCode.NETWORK_CONNECTION_NOT_AVAILABLE错误。 为了避免此错误,我们建议在用户加入呼叫之前将应用程序配置为检查网络可用性。

若要接收错误事件,请使用 CallComposite 调用 setOnErrorHandler

可将以下 error 值发送到错误处理程序:

  • microphonePermissionNotGranted
  • networkConnectionNotAvailable
callComposite.addOnErrorEventHandler { callCompositeErrorEvent ->
    println(callCompositeErrorEvent.errorCode)
}

有关详细信息,请参阅 开源 iOS UI 库示例应用程序代码

跳过设置屏幕的选项

LocalOptions 是一个选项包装器,用于设置 UI 库使用布尔值跳过设置屏幕的功能。 默认情况下,跳过设置屏幕的功能设置为 false。 必须使用布尔值进行设置skipSetupScreentrue,以提供跳过设置屏幕的体验。

我们建议你以这样的方式生成应用程序,以便在用户尝试加入呼叫时,已授予麦克风权限,以便获得流畅的加入体验。

Screenshot of joining call by skipping the setup screen for iOS.

若要使用该功能,请将布尔值传递给skipSetupScreenLocalOptions它并将其注入callComposite.launch其中。

let localOptions = LocalOptions(skipSetupScreen: true)

callComposite.launch(remoteOptions: remoteOptions, localOptions: localOptions)

相机和麦克风配置的默认选项

默认情况下,设置屏幕为用户提供在加入呼叫之前配置相机和麦克风设置的选项。 在设置跳过设置屏幕以加入呼叫时,用户直到呼叫处于呼叫状态,才具有该选项。

可以在用户加入呼叫之前传递布尔值 cameraOn ,并在 microphoneOn 用户加入呼叫之前打开或关闭相机和麦克风。 如果用户分别授予每个相机和麦克风的权限,则控制相机和麦克风的默认状态的功能不会受到影响。

默认情况下,两者都cameraOnmicrophoneOn设置为 false。 即使 UI 库的默认呼叫加入体验也也可以使用此功能。 在这种情况下,根据设置的配置,相机和麦克风在设置屏幕上处于打开或关闭状态。

若要设置相机和麦克风的默认状态,请传递cameraOn布尔值并将其microphoneOnLocalOptions注入callComposite.launch其中。

let localOptions = LocalOptions(cameraOn: true, microphoneOn: true)

callComposite.launch(remoteOptions: remoteOptions, localOptions: localOptions)

权限处理

建议让用户使用麦克风和相机权限加入呼叫,以使用通过麦克风和相机的默认配置 API 跳过设置屏幕的功能。 如果未处理用户的权限,UI 库会尝试为你处理这些权限。

用户必须启用麦克风权限才能加入呼叫。 如果用户在拒绝麦克风权限后尝试加入呼叫,UI 库会在连接阶段中删除呼叫并引发 microphonePermissionNotGranted 错误。

但是,即使用户拒绝相机权限,用户也可以加入呼叫。 当拒绝相机权限时,UI 库将禁用相机功能。 因此,相机的默认配置 API 不会影响调用体验。 授予相机权限后,用户可以享受相机的默认配置 API 的效果。

建议处理麦克风权限。 如果用户在默认情况下启用相机加入呼叫,则建议你也处理相机权限。

网络错误

如果在调用或调用中断期间发生网络中断,UI 库将关闭并引发 callEndFailed 错误。

如果用户没有网络连接并在跳过设置屏幕后尝试加入呼叫,UI 库会在呼叫连接阶段关闭并引发 networkConnectionNotAvailable 错误。 为了避免此错误,我们建议在用户加入呼叫之前将应用程序配置为检查网络可用性。

可以实现闭包,以处理复合事件。 以下示例显示了失败的复合组件的错误事件:

callComposite?.events.onError = { error in
    print("CallComposite failed with error:\(error)")
}

可将以下 error 值发送到错误处理程序:

  • microphonePermissionNotGranted
  • networkConnectionNotAvailable

后续步骤