共用方式為


在應用程式的 UI 程式庫中插入自訂資料模型

Azure 通訊服務使用與身分識別無關的模型,開發人員可以在其中 帶來自己的身分識別。 開發人員可以取得其資料模型,並將它連結至 Azure 通訊服務身分識別。 使用者的資料模型很可能包含顯示名稱、個人資料圖片或頭像等資訊,以及其他詳細資料。 開發人員會使用此資訊來建置其應用程式和平台。

UI 程式庫可讓您輕鬆地將使用者資料模型插入 UI 元件。 當您轉譯 UI 元件時,它們會向使用者顯示提供的資訊,而不是來自 Azure 通訊服務的一般資訊。

先決條件

設定注入

如需 Web UI 程式庫的詳細檔和快速入門,請參閱 Web UI 程式庫故事書

若要深入瞭解,請參閱 Web UI 程式庫中的 自訂使用者資料模型

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

本地參與者檢視自訂

UI 程式庫可讓開發人員提供有關參與者資訊的自訂體驗。 啟動時,您可以選擇性地插入本機參與者資料。 此本機資料不會與伺服器共用,您可以使用它來自訂本機使用者的顯示名稱和頭像。

本地選項

CallCompositeLocalOptions 是可以有 CallCompositeParticipantViewDataCallCompositeSetupScreenViewData的資料模型。 它代表當地參與者。

依預設,對於遠端參與者,UI 資源庫會顯示 displayName 中插入的 RemoteOptions 資訊。 此資訊會傳送至 Azure 通訊服務後端伺服器。 如果插入CallCompositeParticipantViewData,則參與者displayNameavatar的資訊會顯示在本地所有虛擬人偶元件中。

同樣地,CallCompositeSetupScreenViewDatatitlesubtitle 分別在CallCompositeSetupScreenViewData中覆寫會議前畫面上導覽列的標題和副標題。 依預設,UI 程式庫會將 「安裝程式」 顯示為標題,而不會顯示任何內容作為副標題。

本地參與者檢視資料

CallCompositeParticipantViewData 是設定 displayNameavatarBitmapscaleType 的類別,用於虛擬形象控制。 這個類別會傳遞到 CallCompositeLocalOptions,以便自訂本地參與者的視圖信息。 此類別存在於物件 CallCompositeLocalOptions 中,該物件代表在呼叫裝置上本地使用的選項。

這個 displayName 執行個體與透過 displayName 傳入的 CallCompositeRemoteOptions 資訊不同:

  • CallCompositeParticipantViewDatadisplayName 執行個體只會在本機作為覆寫使用。
  • CallCompositeRemoteOptionsdisplayName實例會傳遞至伺服器,並與其他參與者共用。

如果您未提供 CallCompositeParticipantViewDatadisplayName實例,應用程式會使用 CallCompositeRemoteOptions 的實例 displayName

設定畫面檢視資料

CallCompositeSetupScreenViewData 是在呼叫設定畫面中為導航列設定titlesubtitle的物件。 如果未定義,則 subtitle 會隱藏副標題。 以下,title 是設定 subtitle 時的必要項目,但設定 subtitletitle 是選用項目。 這個類別會儲存在本機,而且其資訊不會傳送至伺服器。

Usage

若要使用 CallCompositeLocalOptions,請傳遞 CallCompositeParticipantViewData 和/或 CallCompositeSetupScreenViewData 的實例,並將 CallCompositeLocalOptions 注入至 callComposite.launch

val participantViewData: CallCompositeParticipantViewData = CallCompositeParticipantViewData()
    .setAvatarBitmap((Bitmap) avatarBitmap)
    .setScaleType((ImageView.ScaleType) scaleType)
    .setDisplayName((String) displayName)

val setupScreenViewData: CallCompositeSetupScreenViewData = CallCompositeSetupScreenViewData()
    .setTitle((String) title)
    .setSubtitle((String) subTitle)

val localOptions: CallCompositeLocalOptions = CallCompositeLocalOptions()
    .setParticipantViewData(participantViewData)
    .setSetupScreenViewData(setupScreenViewData)

callComposite.launch(callLauncherActivity, remoteOptions, localOptions)
設定視圖 通話體驗檢視
Android 資料自訂模型注入的螢幕擷取畫面。 帶有名稱的 Android 數據自定義模型注入的屏幕截圖。

遠端參與者視圖自訂

在某些情況下,您可能想為遠端參與者提供本地設置,以允許自訂虛擬形象和標題。

此程序與本機參與者程序類似,但資料是在參與者加入通話時設定的。 身為開發人員,您需要在遠端參與者加入通話時新增監聽器,接著呼叫一個方法來為這些遠端使用者設定 CallCompositeParticipantViewData

Usage

若要設定遠端參與者的檢視資料,請設定 setOnRemoteParticipantJoinedHandler。 在遠端參與者加入時,使用 setRemoteParticipantViewData 代替 callComposite 來插入遠端參與者的檢視資料。 參與者識別碼 CommunicationIdentifier 會唯一識別遠端參與者。

setRemoteParticipantViewData 的呼叫將返回一個結果 CallCompositeSetParticipantViewDataResult,其值如下:

  • CallCompositeSetParticipantViewDataResult.SUCCESS
  • CallCompositeSetParticipantViewDataResult.PARTICIPANT_NOT_IN_CALL
callComposite.addOnRemoteParticipantJoinedEventHandler { remoteParticipantJoinedEvent -> 
                remoteParticipantJoinedEvent.identifiers.forEach { identifier ->
                    // get displayName, bitmap for identifier
                    callComposite.setRemoteParticipantViewData(identifier,
                        CallCompositeParticipantViewData().setDisplayName("displayName")) // setAvatarBitmap for bitmap
                }
            }
參與者名單
Android 遠端參與者檢視資料插入的螢幕擷取畫面。

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

本地參與者檢視資料插入

UI 程式庫可讓開發人員提供自訂體驗。 啟動時,您可以插入選用的本機資料選項。 此物件可以包含 UIimage,其代表要轉譯的頭像,以及選擇性顯示的顯示名稱。 這些資訊都不會傳送至 Azure 通訊服務。 它會保留在本機的 UI 程式庫中。

本地選項

LocalOptions是一個由ParticipantViewDataSetupScreenViewData組成的資料模型。

對於 ParticipantViewData,預設情況下,UI 程式庫會顯示 displayName 注入於 RemoteOptions 的資訊。 此資訊會傳送至 Azure 通訊服務後端伺服器。 如果 ParticipantViewData 被注入,則參與者 displayNameavatar 的資訊會顯示在所有頭像元件中。

對於 SetupScreenViewData,依預設,UI 程式庫會將 [設定] 顯示為標題,而不會顯示任何內容作為副標題。 title 中的 subtitleSetupScreenViewData 資訊會分別覆寫導覽列在會議前畫面的標題和副標題。

本地參與者檢視資料

ParticipantViewData 是一種物件,可設定頭像元件的 displayNameavatar UI 影像。 這個類別被注入到UI庫中,以設定頭像資訊。 它儲存在本機,永遠不會傳送到伺服器。

設定畫面檢視資料

SetupScreenViewData 是設定 titlesubtitle 的物件,用於會議前畫面 (也稱為設定檢視) 上的導覽列。 如果您定義 SetupScreenViewData,您也必須提供 title ,因為它是必填欄位。 不過, subtitle 不是必要。

如果你不定義 subtitle,它就會被隱藏。 這個類別會儲存在本機,而且其資訊不會傳送至伺服器。

Usage

// LocalOptions (data not sent to the server)
let localParticipantViewData = ParticipantViewData(avatar: <Some UIImage>,
                                                   displayName: "<DISPLAY_NAME>")
let localSetupScreenViewData = SetupScreenViewData(title: "<NAV_TITLE>",
                                                               subtitle: "<NAV_SUBTITLE>")
let localOptions = LocalOptions(participantViewData: localParticipantViewData, 
                                setupScreenViewData: localSetupScreenViewData)
// RemoteOptions (data sent to the server)
let remoteOptions = RemoteOptions(for: .groupCall(groupId: UUID()),
                                  credential: <Some CommunicationTokenCredential>,
                                  displayName: "<DISPLAY_NAME>")
// Launch
callComposite.launch(remoteOptions: remoteOptions, localOptions: localOptions)
設定視圖 通話體驗檢視
iOS 資料自訂模型注入的螢幕擷取畫面。 帶有名稱的 iOS 數據自定義模型注入的屏幕截圖。

遠端參與者視圖資料注入

在遠端參與者加入時,您可以插入遠端參與者的檢視資料。 此參與者檢視資料可以包含 UI 影像,其代表要轉譯的頭像,以及選擇性顯示的顯示名稱。 這些資訊都不會傳送至 Azure 通訊服務。 它會保留在本機的 UI 程式庫中。

Usage

若要設定遠端參與者檢視資料,請為事件處理常式設定 onRemoteParticipantJoined 完成。 在遠端參與者加入時,使用 set(remoteParticipantViewData:, for:, completionHandler:) 代替 CallComposite 來插入遠端參與者的檢視資料。 參與者識別碼 CommunicationIdentifier 會唯一識別遠端參與者。 您可以使用選用的完成處理常式來傳回設定作業的結果。

callComposite.events.onRemoteParticipantJoined = { [weak callComposite] identifiers in
  for identifier in identifiers {
    // map identifier to displayName
    let participantViewData = ParticipantViewData(displayName: "<DISPLAY_NAME>")
    callComposite?.set(remoteParticipantViewData: participantViewData,
                       for: identifier) { result in
      switch result {
      case .success:
        print("Set participant view data succeeded")
      case .failure(let error):
        print("Set participant view data failed with \(error)")
      }
    }
  }
}
參與者名單
iOS 遠端參與者檢視資料注入的螢幕擷取畫面。

後續步驟