Краткое руководство. Начало работы с библиотекой пользовательского интерфейса
Начните работу с библиотекой пользовательского интерфейса Службы коммуникации Azure, чтобы быстро интегрировать взаимодействие с приложениями. В этом кратком руководстве описано, как интегрировать составные компоненты библиотеки пользовательского интерфейса в приложение и настроить интерфейс для пользователей приложения.
Библиотека пользовательского интерфейса служб коммуникации отображает полный интерфейс взаимодействия в приложении. Он заботится о подключении к вызову, и он настраивает участие пользователя в вызове за кулисами. Разработчику нужно беспокоиться о том, где в пользовательском интерфейсе приложения вы хотите запустить взаимодействие. Составной компонент помогает пользователю настроить устройства, присоединиться к вызову и принять участие в нем и подготовиться к просмотру других участников.
Просмотрите это видео для обзора:
Примечание.
Подробные документацию и краткие руководства по библиотеке веб-пользовательского интерфейса см. в статье "История библиотеки веб-интерфейса".
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Развернутый ресурс Служб коммуникации. Создайте ресурс Служб коммуникации.
- Маркер Служб коммуникации Azure. Ознакомьтесь с этим примером.
Вы можете получить доступ к следующим кратким руководствам.
Получите пример приложения Android для этого краткого руководства в библиотеке пользовательского интерфейса открытый код Службы коммуникации Azure для Android.
Необходимые компоненты
- Учетная запись Azure и активная подписка Azure. Создайте учетную запись бесплатно .
- ОС, в которой выполняется Android Studio.
- Развернутый Службы коммуникации Azure ресурс.
- Маркер доступа Службы коммуникации Azure.
Настройка проекта
Выполните следующие разделы, чтобы настроить проект быстрого запуска.
Создание нового проекта Android
В Android Studio создайте проект:
В меню "Файл" выберите "Создать>проект".
В новом проекте выберите шаблон проекта "Пустое действие ".
Выберите Далее.
В поле "Пустое действие" назовите project UILibraryQuickStart. Для языка выберите Java/Kotlin. Для минимального пакета SDK выберите API 26: Android 8.0 (Oreo) или более поздней версии.
Выберите Готово.
Установка пакетов
Выполните следующие разделы, чтобы установить необходимые пакеты приложений.
Добавление зависимости
В файле UILibraryQuickStart/app/build.gradle (в папке приложения) добавьте следующую зависимость:
dependencies {
...
implementation 'com.azure.android:azure-communication-ui-calling:+'
...
}
Добавление репозиториев Maven
Для интеграции библиотеки требуются два репозитория Maven:
- MavenCentral
- Репозиторий пакетов Azure
Чтобы добавить репозитории, выполните следующие действия.
В скриптах проекта Gradle убедитесь, что добавлены следующие репозитории. Для Android Studio (2020.*)
repositories
находится вsettings.gradle
разделеdependencyResolutionManagement(Gradle version 6.8 or greater)
. Для более ранних версий Android Studio (4.*)repositories
находится на уровнеbuild.gradle
проекта в разделеallprojects{}
.// dependencyResolutionManagement repositories { ... mavenCentral() maven { url "https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1" } ... }
Синхронизируйте проект с файлами Gradle. Чтобы синхронизировать проект, в меню "Файл " выберите "Синхронизировать проект с файлами Gradle".
Добавление кнопки для Activity_main.xml
В файле макета app/src/main/res/layout/activity_main.xml добавьте следующий код, чтобы создать кнопку, чтобы запустить составной элемент:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/startButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Launch"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Инициализация составного
Чтобы инициализировать составной элемент, выполните следующие действия.
Переход к
MainActivity
.Добавьте следующий код, чтобы инициализировать составные компоненты для вызова. Замените
"GROUP_CALL_ID"
идентификатор группы для вызова. Замените"DISPLAY_NAME"
собственным именем. Замените"USER_ACCESS_TOKEN"
маркером.
package com.example.uilibraryquickstart
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import com.azure.android.communication.common.CommunicationTokenCredential
import com.azure.android.communication.common.CommunicationTokenRefreshOptions
import com.azure.android.communication.ui.calling.CallComposite
import com.azure.android.communication.ui.calling.CallCompositeBuilder
import com.azure.android.communication.ui.calling.models.CallCompositeGroupCallLocator
import com.azure.android.communication.ui.calling.models.CallCompositeJoinLocator
import java.util.UUID
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val startButton: Button = findViewById(R.id.startButton)
startButton.setOnClickListener { l -> startCallComposite() }
}
private fun startCallComposite() {
val communicationTokenRefreshOptions = CommunicationTokenRefreshOptions({ fetchToken() }, true)
val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)
val locator: CallCompositeJoinLocator = CallCompositeGroupCallLocator(UUID.fromString("GROUP_CALL_ID"))
val callComposite: CallComposite = CallCompositeBuilder()
.applicationContext(this.applicationContext)
.credential(communicationTokenCredential)
.displayName("DISPLAY_NAME").build()
callComposite.launch(this, locator)
}
private fun fetchToken(): String? {
return "USER_ACCESS_TOKEN"
}
}
Выполнение кода
В Android Studio создайте и запустите приложение:
- Нажмите кнопку "Запустить".
- Примите разрешения, а затем выберите параметры устройства, микрофона и видео.
- Выберите Присоединиться к звонку.
Объектная модель
Следующие классы и интерфейсы обрабатывают некоторые ключевые функции пользовательского интерфейса Службы коммуникации Azure Android:
Имя | Описание |
---|---|
CallComposite | Составной компонент, который отображает интерфейс вызова с коллекцией участников и элементами управления |
CallCompositeBuilder | Построитель, который строится с параметрами CallComposite |
CallCompositeJoinMeetingLocator | Переданный CallComposite запуск для запуска группового вызова |
CallCompositeTeamsMeetingLinkLocator | Передано для запуска для присоединения к собранию CallComposite Microsoft Teams |
CallCompositeLocalizationOptions | Внедрено как необязательное для CallCompositeBuilder задания языка составного |
Функциональность библиотеки пользовательского интерфейса
Получите код для создания ключевых функций связи для приложения Android.
Настройка проверки подлинности
Чтобы настроить проверку подлинности, в startCallComposite
функции инициализировать CommunicationTokenCredential
экземпляр. Замените "USER_ACCESS_TOKEN"
маркер доступа.
val callComposite: CallComposite = CallCompositeBuilder().build()
val communicationTokenRefreshOptions = CommunicationTokenRefreshOptions(this::fetchToken, true)
val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)
Создание CallComposite
Чтобы создать CallComposite
startCallComposite
функцию, инициализировать CallCompositeBuilder
экземпляр с помощью контекста приложения, учетных данных и отображаемого имени.
val callComposite: CallComposite = CallCompositeBuilder()
.applicationContext(this.applicationContext)
.credential(communicationTokenCredential)
.displayName("DISPLAY_NAME").build()
Настройка группового вызова
Чтобы настроить групповой вызов, инициализировать .CallCompositeGroupCallLocator
Подключение к собранию Teams
Вы можете присоединиться к собранию Teams с помощью двух механизмов:
- URL-адрес собрания Teams или короткий URL-адрес собрания Teams
- Идентификатор собрания Teams и секретный код
Ссылку на собрание Teams можно получить с помощью API Graph, который подробно описан в документации по Graph.
Пакет SDK вызовов Служб коммуникации принимает полную ссылку на собрание Teams. Эта ссылка возвращается как часть ресурса onlineMeeting
, доступного в свойстве joinWebUrl
. Кроме того, вы можете получить необходимые сведения о собрании, воспользовавшись URL-адресом для участия в собрании в самом приглашении на собрание Teams.
Присоединение через URL-адрес собрания Teams
Чтобы присоединиться к собранию Microsoft Teams, инициализировать CallCompositeTeamsMeetingLinkLocator
.
Присоединение с помощью идентификатора собрания Teams и секретного кода
Он CallCompositeTeamsMeetingLinkLocator
находит собрание с помощью идентификатора собрания и секретного кода. Их можно найти в разделе сведений о присоединении к собранию Teams.
Идентификатор собрания Teams длиной 12 символов и состоит из числовых цифр, сгруппированных в три (т. е. 000 000 000 000
).
Секретный код состоит из 6 символов алфавита (т. е. aBcDeF
). Секретный код учитывает регистр.
val locator = CallCompositeTeamsMeetingIdLocator("TEAMS_MEETING_ID", "TEAMS_MEETING_PASSCODE")
Настройка звонка в номерах
Чтобы настроить вызов Службы коммуникации Azure комнат, инициализируйте CallCompositeRoomLocator
номер с идентификатором комнаты.
В то время как на экране CallComposite
установки включает камеру и микрофон для всех участников с любой ролью комнаты. Текущая роль и возможности участника извлекаются из Службы коммуникации Azure после подключения.
Дополнительные сведения о комнатах см. в кратком руководстве по созданию комнат и управлению ими
Настройка push-уведомлений для исходящих вызовов и входящих вызовов 1:N
Библиотека пользовательского интерфейса поддерживает один к одному вызову VoIP для абонентов по идентификатору связи. Для получения входящего пользовательского интерфейса вызова также поддерживается регистрация для push-уведомлений. Дополнительные сведения об интеграции для платформы Android и iOS и использовании API см. в статье "Как сделать один к одному" и получать push-уведомления.
Запуск составного
Чтобы запустить пользовательский интерфейс вызова, в startCallComposite
функции вызовите launch
CallComposite
экземпляр.
Подписка на события ошибок CallComposite
Чтобы получить события ошибок, вызовите setOnErrorHandler
с CallComposite
помощью .
errorCode
Следующие значения могут быть отправлены обработчику ошибок:
CallCompositeErrorCode.CALL_JOIN_FAILED
CallCompositeErrorCode.CALL_END_FAILED
CallCompositeErrorCode.TOKEN_EXPIRED
CallCompositeErrorCode.CAMERA_FAILURE
CallCompositeErrorCode.MICROPHONE_PERMISSION_NOT_GRANTED
CallCompositeErrorCode.NETWORK_CONNECTION_NOT_AVAILABLE
В следующем примере показано событие ошибки для неудачного составного события.
callComposite.addOnErrorEventHandler { callCompositeErrorEvent ->
println(callCompositeErrorEvent.errorCode)
}
Применение конфигурации темы
Чтобы изменить основной цвет составного, создайте новый стиль темы в src/main/res/values/themes.xml и src/main/res/values-night/themes.xml с помощью AzureCommunicationUICalling.Theme
родительской темы. Чтобы применить тему, внесите идентификатор темы в CallCompositeBuilder
:
<style name="MyCompany.CallComposite" parent="AzureCommunicationUICalling.Theme">
<item name="azure_communication_ui_calling_primary_color">#27AC22</item>
<item name="azure_communication_ui_calling_primary_color_tint10">#5EC65A</item>
<item name="azure_communication_ui_calling_primary_color_tint20">#A7E3A5</item>
<item name="azure_communication_ui_calling_primary_color_tint30">#CEF0CD</item>
</style>
val callComposite: CallComposite =
CallCompositeBuilder()
.theme(R.style.MyCompany_CallComposite)
.build()
Применение конфигурации локализации
Чтобы изменить язык составного, используйте CallCompositeSupportedLocale
для создания CallCompositeLocalizationOptions
с Locale
помощью . Чтобы применить язык, внесите конфигурацию локализации CallCompositeBuilder
. По умолчанию все текстовые метки используют строки английского языка (en
). Можно использовать CallCompositeLocalizationOptions
для задания другого значения language
. По умолчанию библиотека пользовательского интерфейса содержит набор значений language
, которые можно использовать с компонентами пользовательского интерфейса. CallCompositeSupportedLocale
предоставляет поддерживаемые языковые стандарты. Например, для доступа к языковому стандарту английского языка можно использовать CallCompositeSupportedLocale.EN
. CallCompositeSupportedLocale.getSupportedLocales()
предоставляет список объектов языкового стандарта для поддерживаемых языков.
import com.azure.android.communication.ui.calling.models.CallCompositeLocalizationOptions
import com.azure.android.communication.ui.calling.models.CallCompositeSupportedLocale
// CallCompositeSupportedLocale provides list of supported locale
val callComposite: CallComposite =
CallCompositeBuilder().localization(
CallCompositeLocalizationOptions(CallCompositeSupportedLocale.EN)
).build()
Подписка на измененное событие состояния вызова CallComposite
Чтобы получать события изменения состояния вызова, вызовите addOnCallStateChangedEventHandler
с CallComposite
помощью .
В следующем примере показано событие изменения состояния вызова.
callComposite.addOnCallStateChangedEventHandler { callStateChangedEvent ->
println(callStateChangedEvent.code)
}
Закрытие CallComposite и подписка на отклоненное событие
Чтобы получить увольнение, вызовите addOnDismissedEventHandler
с CallComposite
. Чтобы закрыть CallComposite, вызовите dismiss
.
В следующем примере показано событие изменения состояния вызова.
callComposite.addOnDismissedEventHandler { callCompositeDismissedEvent ->
println(callCompositeDismissedEvent.errorCode)
}
callComposite.dismiss()
Дополнительные компоненты
Список вариантов использования содержит подробные сведения о дополнительных функциях.
Добавление уведомлений в мобильное приложение
Службы коммуникации Azure интегрируется с Сетка событий Azure и Центрами уведомлений Azure, чтобы добавлять push-уведомления в приложения в Azure. Push-уведомления можно использовать для отправки информации из приложения на мобильные устройства пользователей. Push-уведомление может отображать диалоговое окно, воспроизводить звук или отображать пользовательский интерфейс входящего вызова.
Получите пример приложения iOS для этого краткого руководства в библиотеке пользовательского интерфейса открытый код Службы коммуникации Azure для iOS.
Необходимые компоненты
- Учетная запись Azure и активная подписка Azure. Создайте учетную запись бесплатно .
- Компьютер Mac под управлением Xcode 13 или более поздней версии и действительный сертификат разработчика, установленный в цепочке ключей. Кроме того, для получения зависимостей необходимо установить CocoaPods.
- Развернутый Службы коммуникации Azure ресурс.
- Маркер доступа Службы коммуникации Azure.
Настройка проекта
Выполните следующие разделы, чтобы настроить проект быстрого запуска.
Создание проекта Xcode
В Xcode создайте проект:
В меню "Файл" выберите "Создать>проект".
В разделе "Выбор шаблона" для нового проекта выберите платформу iOS и выберите шаблон приложения. В кратком руководстве используются раскадровки UIKit. Краткое руководство не создает тесты, поэтому можно снять флажок "Включить тесты ".
В поле "Выбор параметров для нового проекта" введите UILibraryQuickStart. Для интерфейса выберите "Раскадровка".
Установка пакета и зависимостей
(Необязательно) Для MacBook с M1 установите и включите Rosetta в Xcode.
В корневом каталоге проекта запустите файл
pod init
Podfile. При возникновении ошибки обновите CocoaPods до текущей версии.Добавьте следующий код в podfile. Замените
UILibraryQuickStart
именем проекта.platform :ios, '15.0' target 'UILibraryQuickStart' do use_frameworks! pod 'AzureCommunicationUICalling' end
Запустите
pod install --repo-update
.В Xcode откройте созданный файл Xcworkspace*.
Запрос доступа к оборудованию устройства
Чтобы получить доступ к оборудованию устройства, включая микрофон и камеру, обновите список свойств вашего приложения. Задайте связанное значение строке, включенной в диалоговое окно, в системе используется для запроса доступа от пользователя.
В дереве проекта щелкните правой кнопкой мыши запись
Info.plist
и выберите Open As>Source Code (Открыть как > Исходный код). Добавьте следующие строки в раздел верхнего уровня<dict>
и сохраните файл.<key>NSCameraUsageDescription</key> <string></string> <key>NSMicrophoneUsageDescription</key> <string></string>
Ниже приведен пример исходного
Info.plist
кода в файле Xcode:Чтобы убедиться, что запросы на разрешение устройства добавлены правильно, выберите "Открыть список свойств как>". Убедитесь, что список свойств сведений выглядит примерно так:
Отключение bitcode
В проекте Xcode в разделе "Параметры сборки" задайте для параметра Enable Bitcode значение No. Чтобы найти параметр, измените фильтр с "Базовый" на "Все" или используйте панель поиска.
Инициализация составного
Чтобы инициализировать составной элемент, выполните следующие действия.
Переход к
ViewController
.Добавьте следующий код, чтобы инициализировать составные компоненты для вызова. Замените
<GROUP_CALL_ID>
идентификатор группы для вызова илиUUID()
на создание идентификатора группы для вызова. Замените<DISPLAY_NAME>
собственным именем. (Ограничение<DISPLAY_NAME>
длины строки для 256 символов.) Замените<USER_ACCESS_TOKEN>
маркер доступа.import UIKit import AzureCommunicationCalling import AzureCommunicationUICalling class ViewController: UIViewController { private var callComposite: CallComposite? override func viewDidLoad() { super.viewDidLoad() let button = UIButton(frame: CGRect(x: 100, y: 100, width: 200, height: 50)) button.contentEdgeInsets = UIEdgeInsets(top: 10.0, left: 20.0, bottom: 10.0, right: 20.0) button.layer.cornerRadius = 10 button.backgroundColor = .systemBlue button.setTitle("Start Experience", for: .normal) button.addTarget(self, action: #selector(startCallComposite), for: .touchUpInside) button.translatesAutoresizingMaskIntoConstraints = false self.view.addSubview(button) button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true } @objc private func startCallComposite() { let callCompositeOptions = CallCompositeOptions(displayName: "<DISPLAY_NAME>") let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>") callComposite = CallComposite(credential: communicationTokenCredential, withOptions: callCompositeOptions) callComposite?.launch(locator: .groupCall(groupId: UUID(uuidString: "<GROUP_CALL_ID>")!)) } }
Выполнение кода
Чтобы создать и запустить приложение в симуляторе iOS, выберите "Запуск продукта>" или используйте сочетание клавиш (".-R). Затем попробуйте выполнить вызов на симуляторе:
Выберите "Начать работу".
Примите разрешения на звук, а затем выберите параметры устройства, микрофона и видео.
Нажмите кнопку "Пуск"
Объектная модель
Следующие классы и интерфейсы обрабатывают некоторые ключевые функции клиентской библиотеки пользовательского интерфейса Службы коммуникации Azure:
Имя | Описание |
---|---|
CallComposite | Компонент, который отображает интерфейс вызова с коллекцией участников и элементами управления |
CallCompositeOptions | Параметры для таких параметров, как темы и обработка событий |
ThemeOptions | Параметры настройки составной темы |
ЛокализацияOptions | Языковые параметры составного элемента |
Функциональность библиотеки пользовательского интерфейса
Получите код для создания ключевых функций связи для приложения iOS.
Настройка проверки подлинности
Чтобы настроить проверку подлинности, в startCallComposite
функции инициализировать CommunicationTokenCredential
экземпляр. Замените <USER_ACCESS_TOKEN>
маркер доступа.
let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>")
Если у вас еще нет маркера доступа, создайте маркер доступа Службы коммуникации Azure.
Создание CallComposite
Чтобы создать CallComposite
функцию, startCallComposite
инициализируйте экземпляр с необязательным CallCompositeOptions
<DISPLAY_NAME>
и экземпляром CommunicationTokenCredential
:
@objc private func startCallComposite() {
let callCompositeOptions = CallCompositeOptions(displayName: "<DISPLAY_NAME>")
let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>")
callComposite = CallComposite(credential: communicationTokenCredential, withOptions: callCompositeOptions)
}
Настройка группового вызова
Чтобы настроить групповой вызов, внутри startCallComposite
функции инициализировать .groupCall
указатель. Замените <GROUP_CALL_ID>
идентификатор группы для вызова.
// let uuid = UUID() to create a new call
let uuid = UUID(uuidString: "<GROUP_CALL_ID>")!
let locator = .groupCall(groupId: uuid)
Дополнительные сведения об использовании идентификатора группы для звонков см. в разделе "Управление вызовами".
Подключение к собранию Teams
Вы можете присоединиться к собранию Teams с помощью двух механизмов:
- URL-адрес собрания Teams или короткий URL-адрес собрания Teams
- Идентификатор собрания Teams и секретный код
Ссылку на собрание Teams можно получить с помощью API Graph, который подробно описан в документации по Graph.
Пакет SDK вызовов Служб коммуникации принимает полную ссылку на собрание Teams. Эта ссылка возвращается как часть ресурса onlineMeeting
, доступного в свойстве joinWebUrl
. Кроме того, вы можете получить необходимые сведения о собрании, воспользовавшись URL-адресом для участия в собрании в самом приглашении на собрание Teams.
Присоединение через URL-адрес собрания Teams
Чтобы присоединиться к собранию Microsoft Teams, в startCallComposite
функции инициализировать экземпляр указателя .teamsMeeting
. Замените <TEAMS_MEETING_LINK>
ссылку на собрание Teams для вызова. Замените <DISPLAY_NAME>
собственным именем.
let locator = .teamsMeeting(teamsLink: "<TEAMS_MEETING_LINK>")
Присоединение с помощью идентификатора собрания Teams и секретного кода
Он teamMeetingId
находит собрание с помощью идентификатора собрания и секретного кода. Их можно найти в разделе сведений о присоединении к собранию Teams.
Идентификатор собрания Teams длиной 12 символов и состоит из числовых цифр, сгруппированных в три (т. е. 000 000 000 000
).
Секретный код состоит из 6 символов алфавита (т. е. aBcDeF
). Секретный код учитывает регистр.
let locator = .teamsMeetingId(meetingId: "<TEAMS_MEETING_ID>", meetingPasscode: "<TEAMS_MEETING_PASSCODE>" )
Настройка вызова комнаты
Чтобы настроить вызов Службы коммуникации Azure комнат, инициализируйте CallCompositeRoomLocator
номер с идентификатором комнаты.
В то время как на экране CallComposite
установки включите камеру и микрофон для всех участников с любой ролью комнаты. Текущая роль и возможности участника извлекаются из Службы коммуникации Azure после подключения.
Дополнительные сведения о комнатах см. в кратком руководстве по созданию комнат и управлению ими .
let locator = .roomCall(roomId: "<ROOM_ID>")
Настройка push-уведомлений для исходящих вызовов и входящих вызовов 1:N
Библиотека пользовательского интерфейса поддерживает один к одному вызову VoIP для абонентов по идентификатору связи. Для получения входящего пользовательского интерфейса вызова также поддерживается регистрация для push-уведомлений. Дополнительные сведения об интеграции для платформы Android и iOS и использовании API см. в статье "Как сделать один к одному" и получать push-уведомления.
Запуск составного
startCallComposite
В функции вызовите launch
CallComposite
экземпляр:
callComposite?.launch(locator: locator)
Оформление подписки на события
Вы можете реализовать закрытия для действий над составными событиями. Следующие коды ошибок могут быть отправлены обработчику ошибок:
callJoin
callEnd
cameraFailure
tokenExpired
microphonePermissionNotGranted
networkConnectionNotAvailable
В следующем примере показано событие ошибки для неудачного составного события:
callComposite?.events.onError = { error in
print("CallComposite failed with error:\(error)")
}
Применение параметров темы
Чтобы настроить взаимодействие в приложении, создайте настраиваемые параметры темы, реализующие ThemeOptions
протокол. Включите экземпляр нового класса в CallCompositeOptions
:
class CustomThemeOptions: ThemeOptions {
var primaryColor: UIColor {
return UIColor.red
}
}
let callCompositeOptions = CallCompositeOptions(theme: CustomThemeOptions())
Дополнительные сведения о работе с темами см. в руководстве по теме.
Применение параметров локализации
Чтобы изменить язык в составном компоненте, создайте настраиваемые параметры локализации и включите их в CallCompositeOptions
. По умолчанию все текстовые метки используют строки английского языка (SupportedLocale.en
). Можно использовать LocalizationOptions
для задания другого значения locale
. По умолчанию библиотека пользовательского интерфейса содержит набор значений locale
, которые можно использовать с компонентами пользовательского интерфейса. SupportedLocale.values
предоставляет список всех поддерживаемых языков.
В следующем примере составной объект локализован на французский (fr
):
// Option1: Use IntelliSense to get locales UI Library supports.
let localizationOptions = LocalizationOptions(locale: SupportedLocale.frFR)
// Option2: If UI Library doesn't support the locale you set, the Swift Locale struct defaults to English.
let localizationOptions = LocalizationOptions(locale: Locale(identifier: "fr-FR"))
let callCompositeOptions = CallCompositeOptions(localization: localizationOptions)
Дополнительные сведения о локализации и списке поддерживаемых языков см. в руководстве по локализации.
Подписка на измененное событие состояния вызова CallComposite
Вы можете реализовать закрытия для действий над составными событиями. Состояния вызова отправляются обработчику измененного состояния вызова.
В следующем примере показано событие изменения состояния вызова.
callComposite?.events.onCallStateChanged = { callStateEvent in
print("CallComposite call state changed:\(callStateEvent.requestString)")
}
Закрытие CallComposite и подписка на отклоненное событие
Чтобы закрыть CallComposite, вызовите dismiss
. Следующее событие увольнения будет отправлено при отключенном вызове:
callComposite?.events.onDismissed = { dismissed in
print("CallComposite dismissed:\(dismissed.errorCode)")
}
callComposite.dismiss()
Дополнительные компоненты
Список вариантов использования содержит подробные сведения о дополнительных функциях.
Добавление уведомлений в мобильное приложение
Службы коммуникации Azure интегрируется с Сетка событий Azure и Центрами уведомлений Azure, чтобы добавлять push-уведомления в приложения в Azure. Push-уведомления можно использовать для отправки информации из приложения на мобильные устройства пользователей. Push-уведомление может отображать диалоговое окно, воспроизводить звук или отображать пользовательский интерфейс входящего вызова.
Очистка ресурсов
Если вы хотите отменить и удалить подписку на Службы коммуникации, можно удалить ресурс или группу ресурсов.
При удалении группы ресурсов также удаляются все связанные с ней ресурсы.
См. сведения об очистке ресурсов.