你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 通信服务使用与标识无关的模型,在其中开发人员可以自带标识。 开发人员可以获取其数据模型并将其链接到 Azure 通信服务标识。 用户的数据模型最有可能包括以下信息:显示名称、个人资料图片或虚拟形象和其他详细信息。 开发人员使用此信息来构建其应用程序和平台。
UI 库让你可以轻松地将用户数据模型注入到 UI 组件。 当你呈现 UI 组件时,这些组件会向用户显示提供的信息,而不是来自 Azure 通信服务的常规信息。
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 已部署的通信服务资源。 创建通信服务资源。
- 用于启用通话客户端的用户访问令牌。 获取用户访问令牌。
- 可选:完成开始使用 UI 库复合项的快速入门。
设置注入
有关 Web UI 库的详细文档和快速入门,请参阅 Web UI 库 Storybook。
有关详细信息,请参阅 Web UI 库中的自定义用户数据模型。
有关详细信息,请参阅开源 Android UI 库 和示例应用程序代码。
本地参与者视图自定义
现在,UI 库使开发人员能够提供自定义的关于参与者信息的体验。 启动时,你可以选择性地注入本地参与者数据。 此本地数据不与服务器共享,可用于自定义本地用户的显示名称和虚拟形象。
本地选项
CallCompositeLocalOptions
是可以使用 CallCompositeParticipantViewData
和 CallCompositeSetupScreenViewData
的数据模型。 它表示本地参与者。
默认情况下,对于远程参与者,UI 库会显示 RemoteOptions
中注入的 displayName
信息。 此信息将发送到 Azure 通信服务后端服务器。 如果注入了 CallCompositeParticipantViewData
,则参与者 displayName
和 avatar
的信息将在本地的所有虚拟形象组件中显示。
同样,对于 CallCompositeSetupScreenViewData
,CallCompositeSetupScreenViewData
中的 title
和 subtitle
将分别覆盖会前屏幕中导航栏的标题和副标题。 默认情况下,UI 库会显示“设置”作为标题,但不显示任何内容作为副标题。
本地参与者视图数据
CallCompositeParticipantViewData
是用于设置虚拟形象控件的 displayName
、avatarBitmap
和 scaleType
的类。 此类将传递给 CallCompositeLocalOptions
以自定义本地参与者视图信息。 此类保存在 CallCompositeLocalOptions
对象中,该对象表示在发起通话的设备上本地使用的选项。
此 displayName
实例与通过 CallCompositeRemoteOptions
传递的 displayName
信息不同:
displayName
的CallCompositeParticipantViewData
实例仅在本地用作重写。displayName
的CallCompositeRemoteOptions
实例传递给服务器并与其他参与者共享。
如果你不提供 displayName
的 CallCompositeParticipantViewData
实例,应用程序将使用 displayName
的 CallCompositeRemoteOptions
实例。
设置屏幕视图数据
CallCompositeSetupScreenViewData
是一个对象,用于设置通话设置屏幕上的导航栏的 title
和 subtitle
。 如果未定义 subtitle
,则会隐藏副标题。 此处,title
是用于设置 subtitle
的必需项,但在设置 title
时,subtitle
是可选的。 此类存储在本地,其信息不会发送到服务器。
用法
若要使用 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
。
用法
若要设置远程参与者的视图数据,请设置 setOnRemoteParticipantJoinedHandler
。 在远程参与者加入时,使用 callComposite
的 setRemoteParticipantViewData
为远程参与者注入视图数据。 参与者标识符 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
}
}
参与者列表 |
---|
![]() |
有关详细信息,请参阅开源 iOS UI 库 和示例应用程序代码。
本地参与者视图数据注入
UI 库使开发人员能够提供自定义的体验。 在启动时,你可以注入可选的本地数据选项。 此对象可以包含 UI 图像(表示要呈现的虚拟形象)和根据需要显示的显示名称。 这些信息都不会发送到 Azure 通信服务。 它们保存在 UI 库本地。
本地选项
LocalOptions
是由 ParticipantViewData
和 SetupScreenViewData
组成的数据模型。
对于 ParticipantViewData
,UI 库默认会显示 RemoteOptions
中注入的 displayName
信息。 此信息将发送到 Azure 通信服务后端服务器。 如果注入了 ParticipantViewData
,则参与者 displayName
和 avatar
的信息将在所有虚拟形象组件中显示。
对于 SetupScreenViewData
,UI 库默认会显示“设置”作为标题,但不显示任何内容作为副标题。 SetupScreenViewData
中的 title
和 subtitle
信息将分别覆盖会前屏幕中导航栏的标题和副标题。
本地参与者视图数据
ParticipantViewData
是一个对象,用于设置虚拟形象组件的 displayName
和 avatar
UI 图像。 此类将注入到 UI 库以设置虚拟形象信息。 它存储在本地,永远不会发送到服务器。
设置屏幕视图数据
SetupScreenViewData
是一个对象,用于设置会前屏幕(也称为“设置”视图)上的导航栏的 title
和 subtitle
。 如果定义了 SetupScreenViewData
,则还必须提供 title
,因为它是必需的字段。 但是,subtitle
不是必需的。
如果未定义 subtitle
,则会将它隐藏。 此类存储在本地,其信息不会发送到服务器。
用法
// 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 库本地。
用法
若要为远程参与者设置视图数据,请为事件处理程序设置 onRemoteParticipantJoined
完成。 在远程参与者加入时,使用 CallComposite
的 set(remoteParticipantViewData:, for:, completionHandler:)
为远程参与者注入视图数据。 参与者标识符 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)")
}
}
}
}
参与者列表 |
---|
![]() |