共用方式為


略過應用程式中的設定畫面

Azure 通訊服務 UI 程式庫提供不需通過設定畫面即可加入通話的選項。 可讓開發人員以讓使用者直接加入通話的方式建置通訊應用程式,而不需要任何使用者互動。 此功能也提供在使用者加入通話之前,設定相機和麥克風預設狀態 (開啟或關閉) 的功能。

在本文中,您會了解如何在應用程式中正確設定功能。

必要條件

設定功能

如需詳細資訊,請參閱開放原始碼 Android UI 程式庫範例應用程式程式碼

略過設定畫面的選項

CallCompositeLocalOptions 是選項包裝函式,可設定 UI 程式庫使用布林值略過設定畫面的功能。 根據預設,略過設定畫面的功能會設定為 false。 您必須使用 true 布林值來設定 skipSetupScreen,以提供略過設定畫面的體驗。

建議您以這樣的方式建置應用程式,當使用者嘗試加入通話時已授與麥克風權限,以取得順暢的加入體驗。

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

若要使用此功能,請將布林值與 skipSetupScreen 傳遞至 CallCompositeLocalOptions,並將其插入至 callComposite.launch

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

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

callComposite.launch(callLauncherActivity, remoteOptions, localOptions)

相機和麥克風組態的預設選項

根據預設,設定畫面可讓使用者選擇在加入通話之前設定相機和麥克風設定。 當您設定略過設定畫面以加入通話時,使用者必須等到進入通話才有該選項。

您可以傳遞 cameraOnmicrophoneOn 的布林值,在使用者加入通話之前開啟或關閉相機和麥克風。 如果使用者分別授與每個相機和麥克風的權限,控制相機和麥克風預設狀態的功能不會受到影響。

根據預設,cameraOnmicrophoneOn 都會設定為 false。 您甚至可以搭配 UI 程式庫的預設加入通話體驗來使用此功能。 在此情況下,相機和麥克風會根據您設定的組態,在設定畫面上開啟或關閉。

若要設定相機和麥克風的預設狀態,請將 cameraOnmicrophoneOn 的布林值傳遞至 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
callComposite.addOnErrorEventHandler { callCompositeErrorEvent ->
    println(callCompositeErrorEvent.errorCode)
}

如需詳細資訊,請參閱開放原始碼 iOS UI 程式庫範例應用程式程式碼

略過設定畫面的選項

LocalOptions 是選項包裝函式,可設定 UI 程式庫使用布林值略過設定畫面的功能。 根據預設,略過設定畫面的功能會設定為 false。 您必須使用 true 布林值來設定 skipSetupScreen,以提供略過設定畫面的體驗。

建議您以這樣的方式建置應用程式,當使用者嘗試加入通話時已授與麥克風權限,以取得順暢的加入體驗。

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

若要使用此功能,請將布林值與 skipSetupScreen 傳遞至 LocalOptions,並將其插入至 callComposite.launch

let localOptions = LocalOptions(skipSetupScreen: true)

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

相機和麥克風組態的預設選項

根據預設,設定畫面可讓使用者選擇在加入通話之前設定相機和麥克風設定。 當您設定略過設定畫面以加入通話時,使用者必須等到進入通話才有該選項。

您可以傳遞 cameraOnmicrophoneOn 的布林值,在使用者加入通話之前開啟或關閉相機和麥克風。 如果使用者分別授與每個相機和麥克風的權限,控制相機和麥克風預設狀態的功能不會受到影響。

根據預設,cameraOnmicrophoneOn 都會設定為 false。 您甚至可以搭配 UI 程式庫的預設加入通話體驗來使用此功能。 在此情況下,相機和麥克風會根據您設定的組態,在設定畫面上開啟或關閉。

若要設定相機和麥克風的預設狀態,請將 cameraOnmicrophoneOn 的布林值傳遞至 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

下一步