Guia de início rápido: introdução à Biblioteca de IU
Comece a usar a Biblioteca de IU para Serviços de Comunicação do Azure a fim de integrar experiências de comunicação rapidamente aos aplicativos. Neste guia de início rápido, saiba como integrar composições da Biblioteca de IU em um aplicativo e configurar a experiência para os usuários do aplicativo.
A Biblioteca de IU para Serviços de Comunicação renderiza uma experiência de comunicação completa diretamente no aplicativo. Ele cuida da conexão com a chamada e configura a participação do usuário na chamada nos bastidores. Como desenvolvedor, basta se preocupar com o lugar em que a experiência de comunicação será lançada. A composição leva o usuário por meio da configuração dos dispositivos deles, do ingresso na chamada e da participação nela, além da renderização de outros participantes.
Veja este vídeo para obter uma visão geral:
Observação
Para obter documentação detalhada e guias de início rápido sobre a Biblioteca da Interface do Usuário da Web, visite o Storybook da Biblioteca da Interface do Usuário na Web.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Um recurso dos Serviços de Comunicação implantado. Crie um recurso dos Serviços de Comunicação.
- Token dos Serviços de Comunicação do Azure. Confira o exemplo
É possível acessar os seguintes inícios rápidos
Obtenha o aplicativo Android de exemplo deste guia de início rápido na Biblioteca de IU do Android para Serviços de Comunicação do Azure de software livre.
Pré-requisitos
- Uma conta e uma assinatura do Azure ativas. Crie uma conta gratuitamente.
- Um sistema operacional que execute o Android Studio.
- Uma implantação do recurso Serviços de Comunicação do Azure.
- Um token de acesso dos Serviços de Comunicação do Azure.
Configurar o projeto
Conclua as seções a seguir para configurar o projeto de início rápido.
Criar um novo aplicativo Android
No Android Studio, crie um projeto:
No menu Arquivo, selecione Novo>Projeto.
Em Novo Projeto, selecione o modelo de projeto Atividade Vazia.
Selecione Avançar.
Em Atividade Vazia, nomeie o projeto como UILibraryQuickStart. Em linguagem, selecione Java/Kotlin. Para o SDK mínimo, selecione API 21: Android 5.0 (Lollipop) ou posterior.
Selecione Concluir.
Instalar os pacotes
Conclua as seções a seguir para instalar os pacotes de aplicativos necessários.
Adicionar uma dependência
No arquivo UILibraryQuickStart/app/build.gradle no nível do aplicativo (na pasta do aplicativo), adicione a seguinte dependência:
dependencies {
...
implementation 'com.azure.android:azure-communication-ui-calling:+'
...
}
Adicionar repositórios Maven
Dois repositórios Maven são necessários para integrar a biblioteca:
- MavenCentral
- O repositório de pacotes do Azure
Para adicionar os repositórios:
Nos scripts Gradle do projeto, verifique se os repositórios a seguir foram adicionados. Para Android Studio (2020.*),
repositories
está emsettings.gradle
, emdependencyResolutionManagement(Gradle version 6.8 or greater)
. Para versões anteriores do Android Studio (4.*),repositories
está no nível do projetobuild.gradle
, emallprojects{}
.// dependencyResolutionManagement repositories { ... mavenCentral() maven { url "https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1" } ... }
Sincronize o projeto com os arquivos Gradle. Para sincronizar o projeto, no menu Arquivo, selecione Sincronizar Projeto com Arquivos Gradle.
Adicionar um botão a Activity_main.xml
No arquivo de layout app/src/main/res/layout/activity_main.xml, adicione o seguinte código para criar um botão a fim de iniciar a composição:
<?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>
Inicializar a composição
Para inicializar a composição:
Acesse
MainActivity
.Adicione o código a seguir para inicializar os componentes de composição da chamada. Substitua
"GROUP_CALL_ID"
pela ID do grupo da chamada. Substitua"DISPLAY_NAME"
pelo seu nome. Substitua"USER_ACCESS_TOKEN"
pelo seu 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 com.azure.android.communication.ui.calling.models.CallCompositeRemoteOptions
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 remoteOptions = CallCompositeRemoteOptions(locator, communicationTokenCredential, "DISPLAY_NAME")
val callComposite: CallComposite = CallCompositeBuilder().build()
callComposite.launch(this, remoteOptions)
}
private fun fetchToken(): String? {
return "USER_ACCESS_TOKEN"
}
}
Executar o código
No Android Studio, crie e inicie o aplicativo:
- Selecione Iniciar.
- Aceite as permissões e selecione as configurações de dispositivo, microfone e vídeo.
- Selecione Ingressar na chamada.
Modelo de objeto
As seguintes classes e interfaces lidam com alguns dos principais recursos da interface do usuário do Android dos Serviços de Comunicação do Azure:
Nome | Descrição |
---|---|
CallComposite | Componente de composição que renderiza uma experiência de chamada com controles e galeria de participantes |
CallCompositeBuilder | Construtor que cria CallComposite com opções |
CallCompositeJoinMeetingLocator | Passado na inicialização de CallComposite para iniciar uma chamada em grupo |
CallCompositeTeamsMeetingLinkLocator | Passado para inicialização de CallComposite a fim de ingressar em uma reunião do Microsoft Teams |
CallCompositeLocalizationOptions | Injetado como opcional em CallCompositeBuilder para configurar o idioma da composição |
Funcionalidade da Biblioteca de Interfaces do Usuário
Obtenha o código para criar os principais recursos de comunicação para o aplicativo Android.
Criar CallComposite
Para criar CallComposite
, dentro da função startCallComposite
, inicialize uma instância CallCompositeBuilder
e uma instância CallComposite
.
Configurar a autenticação
Para configurar a autenticação, dentro da função startCallComposite
, inicialize uma instância CommunicationTokenCredential
. Substitua "USER_ACCESS_TOKEN"
pelo valor do token de acesso.
val callComposite: CallComposite = CallCompositeBuilder().build()
val communicationTokenRefreshOptions = CommunicationTokenRefreshOptions(this::fetchToken, true)
val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)
Configurar uma chamada em grupo
Para configurar uma chamada em grupo, inicialize um CallCompositeGroupCallLocator
e forneça-o ao objeto CallCompositeRemoteOptions
.
val locator = CallCompositeGroupCallLocator(UUID.fromString("GROUP_CALL_ID"))
val remoteOptions = CallCompositeRemoteOptions(
locator,
communicationTokenCredential,
"DISPLAY_NAME",
)
Configurar uma reunião do Teams
Para configurar uma reunião do Microsoft Teams, inicialize um CallCompositeTeamsMeetingLinkLocator
e forneça-a ao objeto CallCompositeRemoteOptions
.
val locator = CallCompositeTeamsMeetingLinkLocator("TEAMS_MEETING_LINK")
val remoteOptions = CallCompositeRemoteOptions(
locator,
communicationTokenCredential,
"DISPLAY_NAME",
)
Configurar uma chamada de Salas
Importante
Este recurso dos Serviços de Comunicação do Azure estão atualmente em versão prévia.
Versões prévias das APIs e dos SDKs são fornecidas sem um contrato de nível de serviço. É recomendável que você não as use para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou talvez ter restrição de recursos.
Para saber mais, consulte os Termos de Uso Complementares das Versões Prévias do Microsoft Azure.
Para configurar uma chamada de Salas de Serviços de Comunicação do Azure, inicialize um CallCompositeRoomLocator
, forneça-o para o objeto CallCompositeRemoteOptions
e defina CallCompositeParticipantRole
como o CallCompositeLocalOptions
por setRoleHint()
.
CallComposite
usará a dica de função antes de se conectar à chamada. Quando a chamada é conectada, a função atualizada do participante é recuperada de Serviços de Comunicação do Azure.
Para obter mais informações sobre Salas, como criar e gerenciar uma, confira Início Rápido de Salas
val locator = CallCompositeRoomLocator("<ROOM_ID>")
val remoteOptions = CallCompositeRemoteOptions(
locator,
communicationTokenCredential,
"DISPLAY_NAME",
)
val localOptions = CallCompositeLocalOptions().setRoleHint(participantRole)
val callComposite = CallCompositeBuilder().build()
callComposite.launch(context, remoteOptions, localOptions)
Iniciar a composição
Para iniciar a IU de chamada, dentro da função startCallComposite
, chame launch
na instância CallComposite
.
Assine os eventos de erro de CallComposite
Para receber eventos de erro, chame setOnErrorHandler
com CallComposite
.
Os seguintes valores de errorCode
podem ser enviados ao manipulador de erro:
CallCompositeErrorCode.CALL_JOIN_FAILED
CallCompositeErrorCode.CALL_END_FAILED
CallCompositeErrorCode.TOKEN_EXPIRED
CallCompositeErrorCode.CAMERA_FAILURE
CallCompositeErrorCode.MICROPHONE_PERMISSION_NOT_GRANTED
CallCompositeErrorCode.NETWORK_CONNECTION_NOT_AVAILABLE
O exemplo a seguir mostra um evento de erro de um evento de composição com falha.
callComposite.addOnErrorEventHandler { callCompositeErrorEvent ->
println(callCompositeErrorEvent.errorCode)
}
Aplicar configuração de tema
Para alterar a cor primária da composição, crie um estilo de tema em src/main/res/values/themes.xml and src/main/res/values-night/themes.xml usando AzureCommunicationUICalling.Theme
como o tema pai. Para aplicar o tema, injete a ID do tema em 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()
Aplicar configuração de localização
Para alterar o idioma da composição, use CallCompositeSupportedLocale
para criar CallCompositeLocalizationOptions
com Locale
. Para aplicar o idioma, injete a configuração de localização em CallCompositeBuilder
. Por padrão, todos os rótulos de texto usam cadeias de caracteres em inglês ( en
). Você pode usar CallCompositeLocalizationOptions
para definir um valor diferente para language
. Por padrão, a Biblioteca de IU inclui um conjunto de valores de language
que você pode usar com componentes da interface do usuário. CallCompositeSupportedLocale
oferece as localidades com suporte. Por exemplo, para acessar a localidade Inglês, você pode usar CallCompositeSupportedLocale.EN
. CallCompositeSupportedLocale.getSupportedLocales()
fornece uma lista de objetos de localidade para idiomas com suporte.
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()
Assinar o evento de alteração do estado de chamada CallComposite
Para receber eventos alterados de estado de chamada, chame addOnCallStateChangedEventHandler
com CallComposite
.
O exemplo a seguir mostra um evento para um estado de chamada alterado.
callComposite.addOnCallStateChangedEventHandler { callStateChangedEvent ->
println(callStateChangedEvent.code)
}
Ignorar CallComposite e assinar o evento ignorado
Para receber a ação ignorar, chame addOnDismissedEventHandler
com CallComposite
. Para ignorar CallComposite, chame dismiss
.
O exemplo a seguir mostra um evento para um estado de chamada alterado.
callComposite.addOnDismissedEventHandler { callCompositeDismissedEvent ->
println(callCompositeDismissedEvent.errorCode)
}
callComposite.dismiss()
Mais recursos
A lista de casos de uso tem informações detalhadas sobre mais recursos.
Adicionar notificações ao aplicativo móvel
Os Serviços de Comunicação do Azure se integram à Grade de Eventos do Azure e aos Hubs de Notificação do Azure, que permitem adicionar notificações por push aos aplicativos no Azure. Você pode usar as notificações por push para enviar informações do aplicativo aos dispositivos móveis dos usuários. Você pode usar notificações por push para mostrar uma caixa de diálogo, tocar um som ou exibir a interface do usuário de chamada de entrada.
Obtenha o aplicativo iOS de exemplo deste guia de início rápido na Biblioteca de IU do iOS para Serviços de Comunicação do Azure de software livre.
Pré-requisitos
- Uma conta e uma assinatura do Azure ativas. Crie uma conta gratuitamente.
- Um Mac executando Xcode 13 ou posterior e um certificado de desenvolvedor válido instalado em seu conjunto de chaves. CocoaPods também precisa ser instalado para buscar dependências.
- Uma implantação do recurso Serviços de Comunicação do Azure.
- Um token de acesso dos Serviços de Comunicação do Azure.
Configurar o projeto
Conclua as seções a seguir para configurar o projeto de início rápido.
Criar um projeto do Xcode
No Xcode, crie um novo projeto:
No menu Arquivo, selecione Novo>Projeto.
Em Escolher um modelo para o novo projeto, selecione a plataforma iOS e selecione o modelo de aplicativo Aplicativo. O início rápido usa os storyboards do UIKit. O início rápido não cria testes, portanto, você pode desmarcar a caixa de seleção Incluir testes.
Em Escolher opções para o novo projeto, insira UILibraryQuickStart em nome do produto. Em interface, selecione Storyboard.
Instalar o pacote e as dependências
(Opcional) Para MacBooks com M1, instale e habilite o Rosetta no Xcode.
Execute
pod init
no diretório raiz do projeto para criar um Podfile. Se você encontrar um erro, atualize CocoaPods para a versão atual.Adicione o código a seguir ao Podfile. Substitua
UILibraryQuickStart
pelo nome do seu projeto.platform :ios, '15.0' target 'UILibraryQuickStart' do use_frameworks! pod 'AzureCommunicationUICalling' end
Execute
pod install --repo-update
.No Xcode, abra o arquivo .xcworkspace gerado.
Solicitar acesso ao hardware do dispositivo
Para acessar o hardware do dispositivo, incluindo o microfone e a câmera, atualize a lista de propriedades de informações do aplicativo. Defina o valor associado a uma cadeia de caracteres incluída na caixa de diálogo que o sistema usa para solicitar acesso do usuário.
Clique com o botão direito do mouse na entrada
Info.plist
da árvore do projeto e selecione Abrir Como>Código-Fonte. Adicione as linhas a seguir ao nível superior da seção<dict>
e, em seguida, salve o arquivo.<key>NSCameraUsageDescription</key> <string></string> <key>NSMicrophoneUsageDescription</key> <string></string>
Aqui está um exemplo do código-fonte
Info.plist
em um arquivo do Xcode:Para verificar se as solicitações de permissão do dispositivo foram adicionadas corretamente, selecione Abrir como>Lista de propriedades. Verifique se a lista de propriedades de informações é semelhante ao exemplo a seguir:
Desligar o BitCode
No projeto do Xcode, em Configurações de Build, defina a opção Habilitar Bitcode como Não. Para localizar a configuração, altere o filtro de Básico para Todos ou use a barra de pesquisa.
Inicializar a composição
Para inicializar a composição:
Acesse
ViewController
.Adicione o código a seguir para inicializar os componentes de composição de uma chamada. Substitua
<GROUP_CALL_ID>
pela ID do grupo para sua chamada ouUUID()
para gerar uma ID de grupo para a chamada. Substitua<DISPLAY_NAME>
pelo seu nome. (O limite de comprimento da cadeia de caracteres de<DISPLAY_NAME>
é de 256 caracteres.) Substitua<USER_ACCESS_TOKEN>
pelo token de acesso.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() callComposite = CallComposite(withOptions: callCompositeOptions) let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>") let remoteOptions = RemoteOptions(for: .groupCall(groupId: UUID(uuidString: "<GROUP_CALL_ID>")!), credential: communicationTokenCredential, displayName: "<DISPLAY_NAME>") callComposite?.launch(remoteOptions: remoteOptions) } }
Executar o código
Para criar e executar o aplicativo no simulador de iOS selecione Produto>Executar ou use o atalho de teclado (⌘-R). Em seguida, experimente a experiência de chamada no simulador:
Selecione Iniciar experiência.
Aceite permissões de áudio e, em seguida, selecione as configurações de dispositivo, microfone e vídeo.
Selecione Iniciar chamada.
Modelo de objeto
As seguintes classes e as interfaces administram alguns dos principais recursos da biblioteca de clientes da interface do usuário dos Serviços de Comunicação do Azure:
Nome | Descrição |
---|---|
CallComposite | Componente que renderiza uma experiência de chamada com controles e galeria de participantes |
CallCompositeOptions | Configurações para opções como temas e manipulação de eventos |
RemoteOptions | Opções remotas a serem enviadas para os Serviços de Comunicação do Azure ingressarem em uma chamada de grupo ou uma reunião do Teams. |
ThemeOptions | Opções de personalização para o tema da composição |
LocalizationOptions | Opções de linguagem para a composição |
Funcionalidade da Biblioteca de Interfaces do Usuário
Obtenha o código para criar os principais recursos de comunicação para o aplicativo iOS.
Criar CallComposite
Para criar CallComposite
, dentro da função startCallComposite
, inicialize uma instância CallCompositeOptions
e uma instância CallComposite
:
@objc private func startCallComposite() {
let callCompositeOptions = CallCompositeOptions()
callComposite = CallComposite(withOptions: callCompositeOptions)
}
Configurar a autenticação
Para configurar a autenticação, dentro da função startCallComposite
, inicialize uma instância CommunicationTokenCredential
. Substitua <USER_ACCESS_TOKEN>
pelo valor do token de acesso.
let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>")
Se você ainda não tiver um token de acesso, crie um token de acesso dos Serviços de Comunicação do Azure.
Configurar uma chamada em grupo
Para configurar uma chamada de grupo, na função startCallComposite
, inicialize uma instância RemoteOptions
para o localizador .groupCall
. Substitua <GROUP_CALL_ID>
pela ID do grupo da chamada. Substitua <DISPLAY_NAME>
pelo seu nome.
// let uuid = UUID() to create a new call
let uuid = UUID(uuidString: "<GROUP_CALL_ID>")!
let remoteOptions = RemoteOptions(for: .groupCall(groupId: uuid),
credential: communicationTokenCredential,
displayName: "<DISPLAY_NAME>")
Para obter mais informações sobre como usar uma ID de grupo para chamadas, consulte Gerenciar chamadas.
Configurar uma reunião do Teams
Para configurar uma reunião do Microsoft Teams, na função startCallComposite
, inicialize uma instância RemoteOptions
para o localizador .teamsMeeting
. Substitua <TEAMS_MEETING_LINK>
pelo link da reunião do Teams para sua chamada. Substitua <DISPLAY_NAME>
pelo seu nome.
let remoteOptions = RemoteOptions(for: .teamsMeeting(teamsLink: "<TEAMS_MEETING_LINK>"),
credential: communicationTokenCredential,
displayName: "<DISPLAY_NAME>")
Obter o link de reunião do Teams
Você pode obter um link de reunião do Microsoft Teams usando APIs do Graph. O processo está detalhado na documentação do Graph.
O SDK de Chamada dos Serviços de Comunicação aceita um link de reunião completo do Microsoft Teams. Esse link é retornado como parte do recurso onlineMeeting
, na propriedade joinWebUrl. Você também pode obter as informações da reunião necessárias na URL Participar da Reunião indicada no convite da própria reunião do Teams.
Configurar uma chamada de Salas
Importante
Este recurso dos Serviços de Comunicação do Azure estão atualmente em versão prévia.
Versões prévias das APIs e dos SDKs são fornecidas sem um contrato de nível de serviço. É recomendável que você não as use para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou talvez ter restrição de recursos.
Para saber mais, consulte os Termos de Uso Complementares das Versões Prévias do Microsoft Azure.
Para configurar uma chamada de Salas de Serviços de Comunicação do Azure, na função startCallComposite
, inicialize uma instância RemoteOptions
para o localizador .roomCall
. Substitua <ROOM_ID>
pela ID da Sala da sua chamada. Inicialize uma instância LocalOptions
com roleHint
.
Substitua <DISPLAY_NAME>
pelo seu nome.
CallComposite
usará a dica de função antes de se conectar à chamada. Quando a chamada é conectada, a função atualizada do participante é recuperada de Serviços de Comunicação do Azure.
Para obter mais informações sobre Salas, como criar e gerenciar uma, confira Início Rápido de Salas
let remoteOptions = RemoteOptions(for: .roomCall(roomId: "<ROOM_ID>"),
credential: communicationTokenCredential,
displayName: "<DISPLAY_NAME>")
let localOptions = LocalOptions(roleHint: participantRole)
let callComposite = CallComposite()
callComposite.launch(remoteOptions: remoteOptions, localOptions: localOptions)
Iniciar a composição
Dentro da função startCallComposite
, chame launch
na instância CallComposite
:
callComposite?.launch(remoteOptions: remoteOptions)
Assinar eventos
Você pode implementar os fechamentos para agir sobre eventos compostos. Os seguintes errorCodes podem ser enviados ao manipulador de erro:
callJoin
callEnd
cameraFailure
tokenExpired
microphonePermissionNotGranted
networkConnectionNotAvailable
O exemplo a seguir mostra um evento de erro de uma composição com falha:
callComposite?.events.onError = { error in
print("CallComposite failed with error:\(error)")
}
Aplicar opções de tema
Para personalizar a experiência de comunicação em seu aplicativo, crie opções de tema personalizadas que implementem o protocolo ThemeOptions
. Inclua uma instância da nova classe em CallCompositeOptions
:
class CustomThemeOptions: ThemeOptions {
var primaryColor: UIColor {
return UIColor.red
}
}
let callCompositeOptions = CallCompositeOptions(theme: CustomThemeOptions())
Para obter mais informações sobre como o tema funciona, consulte o guia de temas.
Aplicar opções de localização
Para alterar o idioma na composição, crie opções de tradução personalizadas e inclua-as em CallCompositeOptions
. Por padrão, todos os rótulos de texto usam cadeias de caracteres em inglês ( SupportedLocale.en
). Você pode usar LocalizationOptions
para definir um valor diferente para locale
. Por padrão, a Biblioteca de IU inclui um conjunto de valores de locale
que você pode usar com componentes da interface do usuário. SupportedLocale.values
fornece uma lista de todos os idiomas com suporte.
No exemplo a seguir, a composição é traduzida para o francês (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)
Para obter mais informações sobre tradução e uma lista de idiomas com suporte, consulte o guia de tradução.
Assinar o evento de alteração do estado de chamada CallComposite
Você pode implementar os fechamentos para agir sobre eventos compostos. Os estados de chamada serão enviados para o manipulador alterado de estado de chamada.
O exemplo a seguir mostra um evento para um estado de chamada alterado.
callComposite?.events.onCallStateChanged = { callStateEvent in
print("CallComposite call state changed:\(callStateEvent.requestString)")
}
Ignorar CallComposite e assinar o evento ignorado
Para ignorar CallComposite, chame dismiss
. O seguinte evento de ignorar será enviado na chamada composta ignorada:
callComposite?.events.onDismissed = { dismissed in
print("CallComposite dismissed:\(dismissed.errorCode)")
}
callComposite.dismiss()
Adicionar notificações ao aplicativo móvel
Os Serviços de Comunicação do Azure se integram à Grade de Eventos do Azure e aos Hubs de Notificação do Azure, que permitem adicionar notificações por push aos aplicativos no Azure. Você pode usar as notificações por push para enviar informações do aplicativo aos dispositivos móveis dos usuários. Você pode usar notificações por push para mostrar uma caixa de diálogo, tocar um som ou exibir a interface do usuário de chamada de entrada.
Limpar os recursos
Se quiser limpar e remover uma assinatura dos Serviços de Comunicação, exclua o recurso ou o grupo de recursos.
Excluir o grupo de recursos também exclui todos os recursos associados a ele.
Saiba mais sobre como limpar recursos.