Guia de início rápido: introdução à biblioteca da interface do usuário
Introdução à Biblioteca de Interface do Usuário dos Serviços de Comunicação do Azure para integrar rapidamente experiências de comunicação em seus aplicativos. Neste guia de início rápido, saiba como integrar compósitos da Biblioteca da Interface do Usuário em um aplicativo e configurar a experiência para os usuários do aplicativo.
A Biblioteca da Interface do Usuário dos Serviços de Comunicação renderiza uma experiência de comunicação completa diretamente em seu aplicativo. Ele cuida da conexão com a chamada e configura a participação do usuário na chamada nos bastidores. Como desenvolvedor, você precisa se preocupar com onde na experiência do usuário do seu aplicativo você deseja que a experiência de comunicação seja iniciada. O composto leva o usuário através da configuração de seus dispositivos, ingressando na chamada e participando dela, e renderizando outros participantes.
Veja este vídeo para uma visão geral:
Nota
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 da Web.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Um recurso de Serviços de Comunicação implantado. Crie um recurso de Serviços de Comunicação.
- Token dos Serviços de Comunicação do Azure. Ver exemplo
Você pode acessar os seguintes inícios rápidos:
Obtenha o aplicativo Android de exemplo para este início rápido na Biblioteca de Interface do Usuário dos Serviços de Comunicação do Azure de código aberto para Android.
Pré-requisitos
- Uma conta do Azure e uma assinatura ativa do Azure. Crie uma conta gratuitamente.
- Um sistema operacional com Android Studio.
- Um recurso implantado dos 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 projeto Android
No Android Studio, crie um novo projeto:
No menu Arquivo, selecione Novo>Novo Projeto.
Em Novo Projeto, selecione o modelo de projeto Atividade vazia.
Selecione Seguinte.
Em Atividade vazia, nomeie o projeto UILibraryQuickStart. Para idioma, 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:
Em seus scripts Gradle de projeto, certifique-se de que os seguintes repositórios sejam adicionados. Para Android Studio (2020.*),
repositories
está em , emdependencyResolutionManagement(Gradle version 6.8 or greater)
settings.gradle
. Para versões anteriores do Android Studio (4.*),repositories
está no nívelbuild.gradle
do projeto, emallprojects{}
.// dependencyResolutionManagement repositories { ... mavenCentral() maven { url "https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1" } ... }
Sincronize seu projeto com os arquivos Gradle. Para sincronizar o projeto, no menu Arquivo , selecione Sincronizar projeto com arquivos Gradle.
Adicionar um botão ao 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 para iniciar o composto:
<?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 o composto
Para inicializar o composto:
Aceder a
MainActivity
.Adicione o seguinte código para inicializar seus componentes compostos para chamada. Substitua
"GROUP_CALL_ID"
pelo ID de grupo da sua 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 permissões e selecione as configurações de dispositivo, microfone e vídeo.
- Selecione Aderir à chamada.
Modelo de objeto
As classes e interfaces a seguir lidam com alguns recursos principais da interface do usuário Android dos Serviços de Comunicação do Azure:
Name | Description |
---|---|
CallComposite | Componente composto que renderiza uma experiência de chamada com galeria de participantes e controles |
CallCompositeBuilder | Construtor que cria CallComposite com opções |
CallCompositeJoinMeetingLocator | Lançamento aprovado CallComposite para iniciar uma chamada em grupo |
CallCompositeTeamsMeetingLinkLocator | Aprovado para iniciar para CallComposite participar de uma reunião do Microsoft Teams |
CallCompositeLocalizationOptions | Injetado como opcional para CallCompositeBuilder definir o idioma do composto |
Funcionalidade da biblioteca da interface do usuário
Obtenha o código para criar os principais recursos de comunicação para seu aplicativo Android.
Criar CallComposite
Para criar CallComposite
, dentro da startCallComposite
função, inicialize uma instância e uma CallCompositeBuilder
CallComposite
instância.
Configurar a autenticação
Para configurar a autenticação, dentro da startCallComposite
função, inicialize uma CommunicationTokenCredential
instância. Substitua "USER_ACCESS_TOKEN"
pelo seu token de acesso.
val callComposite: CallComposite = CallCompositeBuilder().build()
val communicationTokenRefreshOptions = CommunicationTokenRefreshOptions(this::fetchToken, true)
val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)
Configurar uma chamada de grupo
Para configurar uma chamada de grupo, inicialize uma CallCompositeGroupCallLocator
e forneça-a CallCompositeRemoteOptions
ao objeto.
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 uma CallCompositeTeamsMeetingLinkLocator
e forneça-a CallCompositeRemoteOptions
ao objeto.
val locator = CallCompositeTeamsMeetingLinkLocator("TEAMS_MEETING_LINK")
val remoteOptions = CallCompositeRemoteOptions(
locator,
communicationTokenCredential,
"DISPLAY_NAME",
)
Configurar uma chamada de Quartos
Importante
Este recurso dos Serviços de Comunicação do Azure está atualmente em visualização.
As APIs e SDKs de visualização são fornecidos sem um contrato de nível de serviço. Recomendamos que você não os use para cargas de trabalho de produção. Alguns recursos podem não ser suportados ou podem ter recursos restritos.
Para obter mais informações, consulte Termos de Utilização Suplementares para Pré-visualizações do Microsoft Azure.
Para configurar uma chamada de Salas dos Serviços de Comunicação do Azure, inicialize um CallCompositeRoomLocator
, forneça-o CallCompositeRemoteOptions
ao objeto e defina CallCompositeParticipantRole
como o CallCompositeLocalOptions
por setRoleHint()
.
CallComposite
usará a dica de função antes de se conectar à chamada. Depois que a chamada é conectada, a função de participante atualizada real é recuperada dos Serviços de Comunicação do Azure.
Para obter mais informações sobre Salas, como criar e gerenciar uma, consulte Guia de 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)
Inicie o composto
Para iniciar a interface do usuário de chamada, dentro da startCallComposite
função, chame launch
a CallComposite
instância.
Inscrever-se em eventos de erro CallComposite
Para receber eventos de erro, ligue setOnErrorHandler
para CallComposite
.
Os seguintes errorCode
valores podem ser enviados para o manipulador de erros:
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 para um evento composto com falha.
callComposite.addOnErrorEventHandler { callCompositeErrorEvent ->
println(callCompositeErrorEvent.errorCode)
}
Aplicar uma configuração de tema
Para alterar a cor primária do composto, crie um novo estilo de tema em src/main/res/values/themes.xml e src/main/res/values-night/themes.xml usando AzureCommunicationUICalling.Theme
como tema pai. Para aplicar o tema, injete o 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 uma configuração de localização
Para alterar o idioma do composto, use CallCompositeSupportedLocale
para criar CallCompositeLocalizationOptions
com Locale
. Para aplicar o idioma, injete a configuração de localização no 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 da Interface do Usuário inclui um conjunto de valores que você pode usar com os componentes da language
interface do usuário. CallCompositeSupportedLocale
fornece as localidades suportadas. Por exemplo, para acessar a localidade em inglês, você pode usar CallCompositeSupportedLocale.EN
. CallCompositeSupportedLocale.getSupportedLocales()
Fornece uma lista de objetos de localidade para idiomas suportados.
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()
Inscrever-se no evento alterado de estado de chamada CallComposite
Para receber eventos alterados de estado de chamada, ligue addOnCallStateChangedEventHandler
com CallComposite
.
O exemplo a seguir mostra um evento para um estado de chamada alterado.
callComposite.addOnCallStateChangedEventHandler { callStateChangedEvent ->
println(callStateChangedEvent.code)
}
Dispense o CallComposite e inscreva-se no evento descartado
Para receber a demissão, ligue addOnDismissedEventHandler
para CallComposite
. Para descartar o CallComposite, ligue dismiss
para .
O exemplo a seguir mostra um evento para um estado de chamada alterado.
callComposite.addOnDismissedEventHandler { callCompositeDismissedEvent ->
println(callCompositeDismissedEvent.errorCode)
}
callComposite.dismiss()
Mais funcionalidades
A lista de casos de uso tem informações detalhadas sobre mais recursos.
Adicionar notificações à sua aplicação móvel
Os Serviços de Comunicação do Azure integram-se com a Grade de Eventos do Azure e os Hubs de Notificação do Azure, para que possa adicionar notificações por push às suas aplicações no Azure. Você pode usar notificações por push para enviar informações do seu aplicativo para os dispositivos móveis dos usuários. Uma notificação por push pode mostrar uma caixa de diálogo, reproduzir um som ou exibir uma interface do usuário de chamada de entrada.
Obtenha o aplicativo iOS de exemplo para este início rápido na Biblioteca de Interface do Usuário dos Serviços de Comunicação do Azure de código aberto para iOS.
Pré-requisitos
- Uma conta do Azure e uma assinatura ativa do Azure. Crie uma conta gratuitamente.
- Um Mac com Xcode 13 ou posterior e um certificado de programador válido instalado no seu porta-chaves. Os CocoaPods também devem ser instalados para buscar dependências .
- Um recurso implantado dos 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 projeto Xcode
No Xcode, crie um novo projeto:
No menu Arquivo, selecione Novo>projeto.
Em Escolha um modelo para seu novo projeto, selecione a plataforma iOS e selecione o modelo de aplicativo de aplicativo . O início rápido usa os storyboards 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 seu novo projeto, para o nome do produto, digite UILibraryQuickStart. Para a interface, selecione Storyboard.
Instalar o pacote e as dependências
(Opcional) Para MacBook com M1, instale e ative o Rosetta no Xcode.
No diretório raiz do projeto, execute
pod init
para criar um Podfile. Se você encontrar um erro, atualize o CocoaPods para a versão atual.Adicione o seguinte código ao seu Podfile. Substitua
UILibraryQuickStart
pelo nome do 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 para 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 da árvore do
Info.plist
projeto e selecione Abrir como>código-fonte. Adicione as seguintes linhas à secção de nível<dict>
superior e, em seguida, guarde o ficheiro.<key>NSCameraUsageDescription</key> <string></string> <key>NSMicrophoneUsageDescription</key> <string></string>
Aqui está um exemplo do
Info.plist
código-fonte em um arquivo Xcode:Para verificar se as solicitações de permissão de dispositivo foram adicionadas corretamente, selecione Abrir como>lista de propriedades. Verifique se a lista de propriedades de informações é semelhante ao exemplo a seguir:
Desativar Bitcode
No projeto Xcode, em Configurações de compilação, defina a opção Ativar código de bits como Não. Para encontrar a configuração, altere o filtro de Básico para Todos ou use a barra de pesquisa.
Inicializar o composto
Para inicializar o composto:
Aceder a
ViewController
.Adicione o seguinte código para inicializar seus componentes compostos para uma chamada. Substitua
<GROUP_CALL_ID>
pelo ID de grupo da sua chamada ou porUUID()
para gerar um ID de grupo para a chamada. Substitua<DISPLAY_NAME>
pelo seu nome. (O limite de comprimento da cadeia de caracteres é de<DISPLAY_NAME>
256 caracteres.) Substitua<USER_ACCESS_TOKEN>
pelo seu 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 seu aplicativo no simulador do iOS, selecione Executar produto>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 configurações de dispositivo, microfone e vídeo.
Selecione Iniciar chamada.
Modelo de objeto
As seguintes classes e interfaces lidam com alguns recursos principais da biblioteca de cliente da interface do usuário dos Serviços de Comunicação do Azure:
Name | Description |
---|---|
CallComposite | Componente que renderiza uma experiência de chamada que tem uma galeria de participantes e controles |
CallCompositeOptions | Configurações para opções como temas e manipulação de eventos |
Opções remotas | Opções remotas para enviar aos Serviços de Comunicação do Azure para participar numa chamada de grupo ou numa reunião do Teams. |
ThemeOptions | Opções de personalização para o tema composto |
LocalizaçãoOpções | Opções de idioma para o composto |
Funcionalidade da biblioteca da interface do usuário
Obtenha o código para criar os principais recursos de comunicação para seu aplicativo iOS.
Criar CallComposite
Para criar CallComposite
, dentro da startCallComposite
função, inicialize uma instância e uma CallCompositeOptions
CallComposite
instância:
@objc private func startCallComposite() {
let callCompositeOptions = CallCompositeOptions()
callComposite = CallComposite(withOptions: callCompositeOptions)
}
Configurar a autenticação
Para configurar a autenticação, dentro da startCallComposite
função, inicialize uma CommunicationTokenCredential
instância. Substitua <USER_ACCESS_TOKEN>
pelo seu 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 de grupo
Para configurar uma chamada de grupo, dentro da startCallComposite
função, inicialize uma RemoteOptions
instância para o .groupCall
localizador. Substitua <GROUP_CALL_ID>
pelo ID de grupo da sua 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, dentro da startCallComposite
função, inicialize uma RemoteOptions
instância para o .teamsMeeting
localizador. Substitua <TEAMS_MEETING_LINK>
pelo link de 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 um link de reunião do Teams
Você pode obter um link de reunião do Microsoft Teams usando as APIs do Graph. Este processo é 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. Este link é retornado como parte do onlineMeeting
recurso, sob a propriedade joinWebUrl. Você também pode obter as informações necessárias da reunião a partir do URL de Ingresso na Reunião no próprio convite para reunião do Teams.
Configurar uma chamada de Quartos
Importante
Este recurso dos Serviços de Comunicação do Azure está atualmente em visualização.
As APIs e SDKs de visualização são fornecidos sem um contrato de nível de serviço. Recomendamos que você não os use para cargas de trabalho de produção. Alguns recursos podem não ser suportados ou podem ter recursos restritos.
Para obter mais informações, consulte Termos de Utilização Suplementares para Pré-visualizações do Microsoft Azure.
Para configurar uma chamada de Salas de Serviços de Comunicação do Azure, dentro da startCallComposite
função, inicialize uma RemoteOptions
instância para o .roomCall
localizador. Substitua <ROOM_ID>
pelo ID da sala da sua chamada. Inicialize uma LocalOptions
instância com roleHint
.
Substitua <DISPLAY_NAME>
pelo seu nome.
CallComposite
usará a dica de função antes de se conectar à chamada. Depois que a chamada é conectada, a função de participante atualizada real é recuperada dos Serviços de Comunicação do Azure.
Para obter mais informações sobre Salas, como criar e gerenciar uma, consulte Guia de 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)
Inicie o composto
Dentro da startCallComposite
função, chame launch
a CallComposite
instância:
callComposite?.launch(remoteOptions: remoteOptions)
Subscrever os eventos
Você pode implementar fechamentos para agir em eventos compostos. Os seguintes errorCodes podem ser enviados para o manipulador de erros:
callJoin
callEnd
cameraFailure
tokenExpired
microphonePermissionNotGranted
networkConnectionNotAvailable
O exemplo a seguir mostra um evento de erro para um evento composto 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 ThemeOptions
protocolo. 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 os temas funcionam, consulte o guia de temas.
Aplicar opções de localização
Para alterar o idioma no composto, crie opções de localização personalizadas e inclua-as no 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 da Interface do Usuário inclui um conjunto de valores que você pode usar com os componentes da locale
interface do usuário. SupportedLocale.values
Fornece uma lista de todos os idiomas suportados.
No exemplo a seguir, o composto está localizado para 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 localização e para obter uma lista de idiomas suportados, consulte o guia de localização.
Inscrever-se no evento alterado de estado de chamada CallComposite
Você pode implementar fechamentos para agir em 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)")
}
Dispense o CallComposite e inscreva-se no evento descartado
Para descartar o CallComposite, ligue dismiss
para . O seguinte evento de dispensa ser enviado em chamada composto rejeitado:
callComposite?.events.onDismissed = { dismissed in
print("CallComposite dismissed:\(dismissed.errorCode)")
}
callComposite.dismiss()
Adicionar notificações à sua aplicação móvel
Os Serviços de Comunicação do Azure integram-se com a Grade de Eventos do Azure e os Hubs de Notificação do Azure, para que possa adicionar notificações por push às suas aplicações no Azure. Você pode usar notificações por push para enviar informações do seu aplicativo para os dispositivos móveis dos usuários. Uma notificação por push pode mostrar uma caixa de diálogo, reproduzir um som ou exibir uma interface do usuário de chamada de entrada.
Clean up resources (Limpar recursos)
Se quiser limpar e remover uma assinatura dos Serviços de Comunicação, você pode excluir o recurso ou grupo de recursos.
A exclusão do grupo de recursos também exclui quaisquer outros recursos associados a ele.
Saiba mais sobre a limpeza de recursos.