Azure 通訊服務使用與身分識別無關的模型,開發人員可以在其中 帶來自己的身分識別。 開發人員可以取得其資料模型,並將它連結至 Azure 通訊服務身分識別。 使用者的資料模型很可能包含顯示名稱、個人資料圖片或頭像等資訊,以及其他詳細資料。 開發人員會使用此資訊來建置其應用程式和平台。
UI 程式庫可讓您輕鬆地將使用者資料模型插入 UI 元件。 當您轉譯 UI 元件時,它們會向使用者顯示提供的資訊,而不是來自 Azure 通訊服務的一般資訊。
先決條件
- 具有有效訂閱的 Azure 帳戶。 免費建立帳戶。
- 已部署通訊服務資源。 建立通訊服務資源。
- 啟用呼叫用戶端的使用者存取令牌。 取得使用者存取權杖。
- 選擇性:完成 快速入門,以開始使用 UI 程式庫組合元件。
設定注入
如需 Web UI 程式庫的詳細檔和快速入門,請參閱 Web UI 程式庫故事書。
若要深入瞭解,請參閱 Web UI 程式庫中的 自訂使用者資料模型 。
如需詳細資訊,請參閱 開放原始碼 Android UI 程式庫 和 範例應用程式程式碼。
本地參與者檢視自訂
UI 程式庫可讓開發人員提供有關參與者資訊的自訂體驗。 啟動時,您可以選擇性地插入本機參與者資料。 此本機資料不會與伺服器共用,您可以使用它來自訂本機使用者的顯示名稱和頭像。
本地選項
CallCompositeLocalOptions 是可以有 CallCompositeParticipantViewData 和 CallCompositeSetupScreenViewData的資料模型。 它代表當地參與者。
依預設,對於遠端參與者,UI 資源庫會顯示 displayName 中插入的 RemoteOptions 資訊。 此資訊會傳送至 Azure 通訊服務後端伺服器。 如果插入CallCompositeParticipantViewData,則參與者displayName和avatar的資訊會顯示在本地所有虛擬人偶元件中。
同樣地,CallCompositeSetupScreenViewData、title 和 subtitle 分別在CallCompositeSetupScreenViewData中覆寫會議前畫面上導覽列的標題和副標題。 依預設,UI 程式庫會將 「安裝程式」 顯示為標題,而不會顯示任何內容作為副標題。
本地參與者檢視資料
CallCompositeParticipantViewData 是設定 displayName、 avatarBitmap和 scaleType 的類別,用於虛擬形象控制。 這個類別會傳遞到 CallCompositeLocalOptions,以便自訂本地參與者的視圖信息。 此類別存在於物件 CallCompositeLocalOptions 中,該物件代表在呼叫裝置上本地使用的選項。
這個 displayName 執行個體與透過 displayName 傳入的 CallCompositeRemoteOptions 資訊不同:
-
CallCompositeParticipantViewData的displayName執行個體只會在本機作為覆寫使用。 -
CallCompositeRemoteOptions的displayName實例會傳遞至伺服器,並與其他參與者共用。
如果您未提供 CallCompositeParticipantViewData 的 displayName實例,應用程式會使用 CallCompositeRemoteOptions 的實例 displayName。
設定畫面檢視資料
CallCompositeSetupScreenViewData 是在呼叫設定畫面中為導航列設定title和subtitle的物件。 如果未定義,則 subtitle 會隱藏副標題。 以下,title 是設定 subtitle 時的必要項目,但設定 subtitle 時 title 是選用項目。 這個類別會儲存在本機,而且其資訊不會傳送至伺服器。
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)
| 設定視圖 | 通話體驗檢視 |
|---|---|
|
|
遠端參與者視圖自訂
在某些情況下,您可能想為遠端參與者提供本地設置,以允許自訂虛擬形象和標題。
此程序與本機參與者程序類似,但資料是在參與者加入通話時設定的。 身為開發人員,您需要在遠端參與者加入通話時新增監聽器,接著呼叫一個方法來為這些遠端使用者設定 CallCompositeParticipantViewData。
Usage
若要設定遠端參與者的檢視資料,請設定 setOnRemoteParticipantJoinedHandler。 在遠端參與者加入時,使用 setRemoteParticipantViewData 代替 callComposite 來插入遠端參與者的檢視資料。 參與者識別碼 CommunicationIdentifier 會唯一識別遠端參與者。
對 setRemoteParticipantViewData 的呼叫將返回一個結果 CallCompositeSetParticipantViewDataResult,其值如下:
CallCompositeSetParticipantViewDataResult.SUCCESSCallCompositeSetParticipantViewDataResult.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
}
}
| 參與者名單 |
|---|
|
如需詳細資訊,請參閱 開放原始碼 iOS UI 程式庫 和 範例應用程式程式碼。
本地參與者檢視資料插入
UI 程式庫可讓開發人員提供自訂體驗。 啟動時,您可以插入選用的本機資料選項。 此物件可以包含 UIimage,其代表要轉譯的頭像,以及選擇性顯示的顯示名稱。 這些資訊都不會傳送至 Azure 通訊服務。 它會保留在本機的 UI 程式庫中。
本地選項
LocalOptions是一個由ParticipantViewData和SetupScreenViewData組成的資料模型。
對於 ParticipantViewData,預設情況下,UI 程式庫會顯示 displayName 注入於 RemoteOptions 的資訊。 此資訊會傳送至 Azure 通訊服務後端伺服器。 如果 ParticipantViewData 被注入,則參與者 displayName 和 avatar 的資訊會顯示在所有頭像元件中。
對於 SetupScreenViewData,依預設,UI 程式庫會將 [設定] 顯示為標題,而不會顯示任何內容作為副標題。
title 中的 subtitle 和 SetupScreenViewData 資訊會分別覆寫導覽列在會議前畫面的標題和副標題。
本地參與者檢視資料
ParticipantViewData 是一種物件,可設定頭像元件的 displayName 和 avatar UI 影像。 這個類別被注入到UI庫中,以設定頭像資訊。 它儲存在本機,永遠不會傳送到伺服器。
設定畫面檢視資料
SetupScreenViewData 是設定 title 和 subtitle 的物件,用於會議前畫面 (也稱為設定檢視) 上的導覽列。 如果您定義 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)
| 設定視圖 | 通話體驗檢視 |
|---|---|
|
|
遠端參與者視圖資料注入
在遠端參與者加入時,您可以插入遠端參與者的檢視資料。 此參與者檢視資料可以包含 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)")
}
}
}
}
| 參與者名單 |
|---|
|