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

跳过设置屏幕

此功能使选项无需通过设置屏幕即可加入呼叫。 它使开发人员能够使用 UI 库生成其通信应用程序,让用户无需进行任何用户交互即可直接加入呼叫。 此功能还提供配置相机和麦克风默认状态的功能。 我们提供了用于打开或关闭相机和麦克风的 API,以便开发人员可以在加入呼叫之前配置相机和麦克风的默认状态。

了解如何在应用程序中正确设置跳过设置屏幕功能。

先决条件

可在此处找到适用于 Android 的 Azure 通信 UI 开源库和示例应用程序代码

跳过设置屏幕选项

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

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

Diagram of joining call 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)

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

默认情况下,设置屏幕为用户提供在加入呼叫之前配置相机和麦克风设置的选项。 尝试跳过设置屏幕以加入呼叫时,除非用户已加入呼叫,否则用户没有该选项。 我们提供了更多选项来设置相机和麦克风的默认行为,以便开发人员能够更好地控制相机和麦克风的默认状态。 可以传递一个布尔值, cameraOnmicrophoneOn 打开相机和麦克风 ON 或 OFF。 这些属性使开发人员能够在加入呼叫之前控制相机和麦克风控件。 如果用户分别授予每个相机和麦克风状态控制功能的权限,则不会影响默认相机和麦克风状态控制功能。

默认情况下,这两者都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 的 Azure 通信 UI 开源库和示例应用程序代码

跳过设置屏幕选项

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

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

Diagram of joining call skipping the setup screen for Android.

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

let localOptions = LocalOptions(skipSetupScreen: true)

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

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

默认情况下,设置屏幕为用户提供在加入呼叫之前配置相机和麦克风设置的选项。 尝试跳过设置屏幕以加入呼叫时,除非用户已加入呼叫,否则用户没有该选项。 我们提供了更多选项来设置相机和麦克风的默认行为,以便开发人员能够更好地控制相机和麦克风的默认状态。 可以传递一个布尔值, cameraOnmicrophoneOn 打开相机和麦克风 ON 或 OFF。 这些属性使开发人员能够在加入呼叫之前控制相机和麦克风控件。 如果用户分别授予每个相机和麦克风状态控制功能的权限,则不会影响默认相机和麦克风状态控制功能。

默认情况下,这两者都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 错误。

建议通过检查网络可用性加入呼叫,以避免此类错误。

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

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

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

后续步骤