Поделиться через


Внедрение пользовательской модели данных в библиотеку пользовательского интерфейса для приложения

Службы коммуникации Azure использует модель, не зависящая от удостоверений, в которой разработчики могут принести свои собственные удостоверения. Разработчики могут получить свою модель данных и связать ее с Службы коммуникации Azure удостоверениями. Модель данных для пользователя, скорее всего, включает такие сведения, как отображаемое имя, изображение профиля или аватар, а также другие сведения. Разработчики используют эту информацию для создания приложений и платформ.

Библиотека пользовательского интерфейса упрощает внедрение пользовательской модели данных в компоненты пользовательского интерфейса. При отрисовки компонентов пользовательского интерфейса они показывают пользователям предоставленные сведения, а не универсальные сведения из Службы коммуникации Azure.

Необходимые компоненты

Настройка внедрения

Подробную документацию и краткие руководства по библиотеке веб-интерфейса см. в статье " История библиотеки веб-интерфейса".

Дополнительные сведения см. в разделе "Пользовательская модель данных пользователя" в библиотеке веб-пользовательского интерфейса.

Дополнительные сведения см. в библиотеке пользовательского интерфейса Android с открытым исходным кодом и образце кода приложения.

Настройка представления локального участника

Библиотека пользовательского интерфейса предоставляет разработчикам возможность предоставлять настраиваемый интерфейс относительно сведений о участниках. При запуске можно при необходимости внедрить данные локального участника. Эти локальные данные не используются сервером, и его можно использовать для настройки отображаемого имени и аватара локального пользователя.

Локальные параметры

CallCompositeLocalOptions — это модель данных, которая может иметь CallCompositeParticipantViewData и CallCompositeSetupScreenViewData. Он представляет локального участника.

По умолчанию для удаленных участников библиотека пользовательского интерфейса отображает displayName сведения, внедренные в RemoteOptions. Эти сведения отправляются на сервер Службы коммуникации Azure серверной части. При CallCompositeParticipantViewData внедрении участник displayName и avatar информация отображаются во всех компонентах аватара локально.

Аналогичным образом, для CallCompositeSetupScreenViewDataи title subtitle перезаписи CallCompositeSetupScreenViewData заголовка и подзаголовок панели навигации на экране предварительной подготовки соответственно. По умолчанию библиотека пользовательского интерфейса отображает программу установки в качестве заголовка, а подзаголовок — ничего.

Данные представления локальных участников

CallCompositeParticipantViewData— это класс, который задает displayNameи avatarBitmapscaleType для элемента управления аватаром. Этот класс передается CallCompositeLocalOptions для настройки сведений о представлении локальных участников. Этот класс хранится в объекте CallCompositeLocalOptions , который представляет параметры, используемые локально на устройстве, выполняющего вызов.

Этот экземпляр displayName отличается от информации, displayName переданной через CallCompositeRemoteOptions:

  • Экземпляр CallCompositeParticipantViewData displayName используется только локально в качестве переопределения.
  • CallCompositeRemoteOptions Экземпляр displayName передается серверу и предоставляется другим участникам.

Если экземпляр displayNameне указанCallCompositeParticipantViewData, приложение использует CallCompositeRemoteOptions экземпляр displayName.

Настройка данных представления экрана

CallCompositeSetupScreenViewData — это объект, который задает title и subtitle для панели навигации на экране настройки вызова. Если subtitle он не определен, подзаголовок скрыт. Здесь необходимо задатьsubtitle, title но subtitle необязательно, если title задано значение. Этот класс хранится локально, и его сведения не отправляются на сервер.

Использование

Чтобы использовать 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)
Представление установки Представление взаимодействия с вызовами
Screenshot of Android data custom model injection. Screenshot of Android data custom model injection with name.

Настройка представления удаленного участника

В некоторых случаях может потребоваться предоставить локальные переопределения для удаленных участников, чтобы разрешить пользовательские аватары и названия.

Процесс аналогичен локальному процессу участника, но данные задаются при присоединении участников к вызову. Разработчику необходимо добавить прослушиватель при присоединении удаленных участников к вызову, а затем вызвать метод, который будет установлен CallCompositeParticipantViewData для этих удаленных пользователей.

Использование

Чтобы задать данные представления для удаленных участников, задайте.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
                }
            }
Список участников
Screenshot of Android remote participant view data injection.

Дополнительные сведения см. в библиотеке пользовательского интерфейса iOS с открытым исходным кодом и образце кода приложения.

Внедрение данных локального участника

Библиотека пользовательского интерфейса предоставляет разработчикам возможность предоставлять настраиваемый интерфейс. При запуске можно внедрить необязательные локальные параметры данных. Этот объект может содержать изображение пользовательского интерфейса, представляющее аватар для отрисовки и отображаемое имя, которое при необходимости отображается. Ни одна из этих сведений не отправляется в Службы коммуникации Azure. Он хранится локально в библиотеке пользовательского интерфейса.

Локальные параметры

LocalOptions — это модель данных, состоящая из ParticipantViewData и SetupScreenViewData.

Для ParticipantViewDataбиблиотеки пользовательского интерфейса по умолчанию отображаются displayName сведения, внедренные в RemoteOptions. Эти сведения отправляются на сервер Службы коммуникации Azure серверной части. При ParticipantViewData внедрении участник displayName и avatar информация отображаются во всех компонентах аватара.

По SetupScreenViewDataумолчанию библиотека пользовательского интерфейса отображает программу установки в качестве заголовка, а подзаголовок — ничего. subtitle И title информация в SetupScreenViewData перезаписи заголовка панели навигации и подзаголовок на экране предварительной подготовки соответственно.

Данные представления локальных участников

ParticipantViewData — это объект, который задает displayName avatar образ пользовательского интерфейса для компонентов аватара. Этот класс внедряется в библиотеку пользовательского интерфейса для задания сведений аватара. Он хранится локально и никогда не отправляется на сервер.

Настройка данных представления экрана

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)
Представление установки Представление взаимодействия с вызовами
Screenshot of iOS data custom model injection. Screenshot of iOS data custom model injection with name.

Внедрение данных удаленного участника

При присоединении к удаленному участнику можно внедрить данные представления для удаленного участника. Данные представления этого участника могут содержать изображение пользовательского интерфейса, представляющее аватар для отрисовки и отображаемое имя, которое при необходимости отображается. Ни одна из этих сведений не отправляется в Службы коммуникации Azure. Он хранится локально в библиотеке пользовательского интерфейса.

Использование

Чтобы задать данные представления для удаленных участников, задайте 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)")
      }
    }
  }
}
Список участников
Screenshot of iOS remote participants view data injection.

Следующие шаги