你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
跳过应用程序中的设置屏幕
Azure 通信服务 UI 库提供了在不通过设置屏幕的情况下加入呼叫的选项。 它使开发人员能够以允许用户直接加入呼叫的方式构建通信应用程序,而无需任何用户交互。 此功能还提供在用户加入呼叫之前配置相机和麦克风(开或关)的默认状态的功能。
本文介绍如何在应用程序中正确设置该功能。
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 已部署的通信服务资源。 创建通信服务资源。
- 用于启用通话客户端的用户访问令牌。 获取用户访问令牌。
- 可选:完成 快速入门以开始使用 UI 库复合。
设置功能
有关详细信息,请参阅 开源 Android UI 库 和 示例应用程序代码。
跳过设置屏幕的选项
CallCompositeLocalOptions
是一个选项包装器,用于设置 UI 库使用布尔值跳过设置屏幕的功能。 默认情况下,跳过设置屏幕的功能设置为 false
。 必须使用布尔值进行设置skipSetupScreen
true
,以提供跳过设置屏幕的体验。
我们建议你以这样的方式生成应用程序,以便在用户尝试加入呼叫时,已授予麦克风权限,以便获得流畅的加入体验。
若要使用该功能,请将布尔值传递给skipSetupScreen
CallCompositeLocalOptions
它并将其注入callComposite.launch
其中。
import com.azure.android.communication.ui.calling.models.CallCompositeLocalOptions
val localOptions: CallCompositeLocalOptions = CallCompositeLocalOptions()
.setSkipSetupScreen(true)
callComposite.launch(callLauncherActivity, remoteOptions, localOptions)
相机和麦克风配置的默认选项
默认情况下,设置屏幕为用户提供在加入呼叫之前配置相机和麦克风设置的选项。 在设置跳过设置屏幕以加入呼叫时,用户直到呼叫处于呼叫状态,才具有该选项。
可以在用户加入呼叫之前传递布尔值 cameraOn
,并在 microphoneOn
用户加入呼叫之前打开或关闭相机和麦克风。 如果用户分别授予每个相机和麦克风的权限,则控制相机和麦克风的默认状态的功能不会受到影响。
默认情况下,两者都cameraOn
microphoneOn
设置为 false
。 即使 UI 库的默认呼叫加入体验也也可以使用此功能。 在这种情况下,根据设置的配置,相机和麦克风在设置屏幕上处于打开或关闭状态。
若要设置相机和麦克风的默认状态,请传递cameraOn
布尔值并将其microphoneOn
CallCompositeLocalOptions
注入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
有关详细信息,请参阅 开源 iOS UI 库 和 示例应用程序代码。
跳过设置屏幕的选项
LocalOptions
是一个选项包装器,用于设置 UI 库使用布尔值跳过设置屏幕的功能。 默认情况下,跳过设置屏幕的功能设置为 false
。 必须使用布尔值进行设置skipSetupScreen
true
,以提供跳过设置屏幕的体验。
我们建议你以这样的方式生成应用程序,以便在用户尝试加入呼叫时,已授予麦克风权限,以便获得流畅的加入体验。
若要使用该功能,请将布尔值传递给skipSetupScreen
LocalOptions
它并将其注入callComposite.launch
其中。
let localOptions = LocalOptions(skipSetupScreen: true)
callComposite.launch(remoteOptions: remoteOptions, localOptions: localOptions)
相机和麦克风配置的默认选项
默认情况下,设置屏幕为用户提供在加入呼叫之前配置相机和麦克风设置的选项。 在设置跳过设置屏幕以加入呼叫时,用户直到呼叫处于呼叫状态,才具有该选项。
可以在用户加入呼叫之前传递布尔值 cameraOn
,并在 microphoneOn
用户加入呼叫之前打开或关闭相机和麦克风。 如果用户分别授予每个相机和麦克风的权限,则控制相机和麦克风的默认状态的功能不会受到影响。
默认情况下,两者都cameraOn
microphoneOn
设置为 false
。 即使 UI 库的默认呼叫加入体验也也可以使用此功能。 在这种情况下,根据设置的配置,相机和麦克风在设置屏幕上处于打开或关闭状态。
若要设置相机和麦克风的默认状态,请传递cameraOn
布尔值并将其microphoneOn
LocalOptions
注入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