Inicio rápido: Introducción a la biblioteca de la interfaz de usuario
Comience a usar la biblioteca de la interfaz de usuario de Azure Communication Services para integrar rápidamente las experiencias de comunicación en sus aplicaciones. En este inicio rápido, aprenderá a integrar compuestos de biblioteca de interfaz de usuario en una aplicación y a configurar la experiencia de los usuarios de la aplicación.
La biblioteca de interfaz de usuario de Communication Services representa una experiencia de comunicación completa directamente en la aplicación. Se encarga de conectarse a la llamada y configura la participación del usuario en la llamada en segundo plano. Como desarrollador, tiene que preocuparse de dónde quiere, en la experiencia del usuario, que se inicie la experiencia de comunicación. La composición acompaña al usuario a lo largo de la configuración de sus dispositivos, de la incorporación a la llamada y de la participación en ella, así como de la representación de otros participantes.
Visualice este vídeo para obtener información general:
Nota
Puede encontrar documentación detallada e inicios rápidos sobre la biblioteca de interfaz de usuario web en el libro de historias sobre la Biblioteca de interfaz de usuario.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Un recurso de Communication Services implementado. Cree un recurso de Communication Services.
- Token de Azure Communication Services. Consulte el ejemplo.
Puede acceder a los siguientes inicios rápidos:
Obtenga la aplicación Android de ejemplo para este inicio rápido en la biblioteca de interfaz de usuario de código abierto de Azure Communication Services para Android.
Requisitos previos
- Una cuenta y una suscripción activa de Azure. Cree una cuenta gratuita.
- Un sistema operativo que ejecute Android Studio.
- Un recurso de Azure Communication Services implementado.
- Token de acceso de Azure Communication Services.
Configuración del proyecto
Complete las secciones siguientes para configurar el proyecto de inicio rápido.
Creación de un nuevo proyecto de Android
En Android Studio, cree un proyecto nuevo:
En el menú Archivo, seleccione Nuevo>Nuevo proyecto.
En Nuevo proyecto, seleccione la plantilla de proyecto Actividad vacía.
Seleccione Siguiente.
En Actividad vacía, asigne al proyecto el nombre UILibraryQuickStart. En lenguaje, seleccione Java/Kotlin. Para el SDK mínimo, seleccione API 21: Android 5.0 (Lollipop) o posterior.
Seleccione Finalizar.
Instalación de los paquetes
Complete las secciones siguientes para instalar los paquetes de aplicación necesarios.
Adición de una dependencia
En el archivo UILibraryQuickStart/app/build.gradle de nivel de aplicación (en la carpeta de la aplicación), agregue la dependencia siguiente:
dependencies {
...
implementation 'com.azure.android:azure-communication-ui-calling:+'
...
}
Agregar repositorios de Maven
Se requieren dos repositorios Maven para integrar la biblioteca:
- MavenCentral
- El repositorio de paquetes de Azure
Para agregar los repositorios:
En los scripts de Gradle del proyecto, asegúrese de agregar los siguientes repositorios. Para Android Studio (2020.*),
repositories
está ensettings.gradle
, que a su vez está endependencyResolutionManagement(Gradle version 6.8 or greater)
. Para versiones anteriores de Android Studio (4.*),repositories
está en el nivel de proyectobuild.gradle
, enallprojects{}
.// dependencyResolutionManagement repositories { ... mavenCentral() maven { url "https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1" } ... }
Sincronice el proyecto con los archivos de Gradle. Para sincronizar el proyecto, en el menú Archivo, seleccione Sincronizar proyecto con archivos Gradle.
Agregar un botón a Activity_main.xml
En el archivo de diseño app/src/main/res/layout/activity_main.xml, agregue el código siguiente para crear un botón para iniciar el compuesto:
<?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>
Inicialización del compuesto
Para inicializar el compuesto:
Ir a
MainActivity
.Agregue el siguiente código para inicializar los componentes compuestos de llamada. Reemplace
"GROUP_CALL_ID"
por el id. de grupo de la llamada. Reemplace"DISPLAY_NAME"
por su propio nombre. Reemplace"USER_ACCESS_TOKEN"
por su 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"
}
}
Ejecución del código
En Android Studio, compile e inicie la aplicación:
- Seleccione Iniciar.
- Acepte los permisos y seleccione la configuración de dispositivo, micrófono y vídeo.
- Seleccione Unirse a la llamada.
Modelo de objetos
Las siguientes clases e interfaces controlan algunas características principales del SDK de la interfaz de usuario de Android para Azure Communication Services:
Nombre | Descripción |
---|---|
CallComposite | Componente compuesto que representa una experiencia de llamada con galería de participantes y controles |
CallCompositeBuilder | Generador que compila CallComposite con opciones |
CallCompositeJoinMeetingLocator | Se ha pasado al inicio de CallComposite para iniciar una llamada de grupo |
CallCompositeTeamsMeetingLinkLocator | Se ha pasado al inicio de CallComposite para unirse a una reunión en Teams |
CallCompositeLocalizationOptions | Se ha insertado como opcional en CallCompositeBuilder para el lenguaje del compuesto |
Funcionalidad de la biblioteca de interfaz de usuario
Obtenga el código para crear características de comunicación clave para la aplicación Android.
Creación de CallComposite
Para crear CallComposite
, dentro de la función startCallComposite
, inicialice una instancia CallCompositeBuilder
y una instancia CallComposite
.
Configuración de la autenticación
Para configurar la autenticación, dentro de la función startCallComposite
, inicialice una instancia CommunicationTokenCredential
. Reemplace "USER_ACCESS_TOKEN"
con el token de acceso.
val callComposite: CallComposite = CallCompositeBuilder().build()
val communicationTokenRefreshOptions = CommunicationTokenRefreshOptions(this::fetchToken, true)
val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)
Configuración de una llamada de grupo
Para configurar una llamada de grupo, inicialice un CallCompositeGroupCallLocator
y proporciónelo al objeto CallCompositeRemoteOptions
.
val locator = CallCompositeGroupCallLocator(UUID.fromString("GROUP_CALL_ID"))
val remoteOptions = CallCompositeRemoteOptions(
locator,
communicationTokenCredential,
"DISPLAY_NAME",
)
Configuración de una reunión de Teams
Para configurar una reunión de Microsoft Teams, inicialice un CallCompositeTeamsMeetingLinkLocator
y proporciónelo al objeto CallCompositeRemoteOptions
.
val locator = CallCompositeTeamsMeetingLinkLocator("TEAMS_MEETING_LINK")
val remoteOptions = CallCompositeRemoteOptions(
locator,
communicationTokenCredential,
"DISPLAY_NAME",
)
Configurar una llamada de Salas
Importante
Esta característica de Azure Communication Services se encuentra actualmente en versión preliminar.
Las API y los SDK en versión preliminar se proporcionan sin contrato de nivel de servicio. Se recomienda no usarlos para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que sus funcionalidades estén limitadas.
Para obtener más información, consulte Términos de uso complementarios para las Versiones preliminares de Microsoft Azure.
Para configurar una llamada de Salas de Azure Communication Services, inicialice un CallCompositeRoomLocator
, proporciónelo al objeto CallCompositeRemoteOptions
y establezca CallCompositeParticipantRole
en CallCompositeLocalOptions
mediante setRoleHint()
.
CallComposite
usará la sugerencia de rol antes de conectarse a la llamada. Una vez conectada la llamada, el rol de participante actualizado real se recupera de Azure Communication Services.
Para obtener más información sobre Salas y sobre cómo crear y administrar una, consulte Inicio 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)
Inicio del compuesto
Para iniciar la interfaz de usuario de llamada, dentro de la función startCallComposite
, llame a launch
en la instancia de CallComposite
.
Suscripción a eventos de error de CallComposite
Para recibir eventos de error, llame a setOnErrorHandler
con CallComposite
.
Los valores siguientes errorCode
se pueden enviar al controlador de errores:
CallCompositeErrorCode.CALL_JOIN_FAILED
CallCompositeErrorCode.CALL_END_FAILED
CallCompositeErrorCode.TOKEN_EXPIRED
CallCompositeErrorCode.CAMERA_FAILURE
CallCompositeErrorCode.MICROPHONE_PERMISSION_NOT_GRANTED
CallCompositeErrorCode.NETWORK_CONNECTION_NOT_AVAILABLE
En el ejemplo siguiente se muestra un evento de error para un evento compuesto fallido.
callComposite.addOnErrorEventHandler { callCompositeErrorEvent ->
println(callCompositeErrorEvent.errorCode)
}
Aplicación de la configuración de tema
Para cambiar el color principal del compuesto, cree un nuevo estilo de tema en src/main/res/values/themes.xml y src/main/res/values-night/themes.xml usando AzureCommunicationUICalling.Theme
como tema principal. Para aplicar el tema, inserte el identificador de tema en 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()
Aplicación de la configuración de localización
Para cambiar el lenguaje del compuesto, utilice CallCompositeSupportedLocale
para crear CallCompositeLocalizationOptions
con Locale
. Para aplicar el idioma, inserte la configuración de localización en CallCompositeBuilder
. De forma predeterminada, todas las etiquetas de texto usan cadenas en inglés (en
). Puede usar CallCompositeLocalizationOptions
para establecer un valor diferente para language
. De forma predeterminada, la biblioteca de interfaz de usuario incluye un conjunto de valores language
que puede usar con componentes de la interfaz de usuario. CallCompositeSupportedLocale
proporciona las configuraciones regionales admitidas. Por ejemplo, para acceder a la configuración regional en inglés, puede usar CallCompositeSupportedLocale.EN
. CallCompositeSupportedLocale.getSupportedLocales()
proporciona una lista de objetos de configuración regional para los lenguajes admitidos.
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()
Suscribirse al evento de cambio de estado de llamada de CallComposite
Para recibir eventos de cambio de estado de llamada, llame a addOnCallStateChangedEventHandler
con CallComposite
.
En el ejemplo siguiente se muestra un evento de un estado de llamada cambiado.
callComposite.addOnCallStateChangedEventHandler { callStateChangedEvent ->
println(callStateChangedEvent.code)
}
Descartar CallComposite y suscribirse al evento descartado
Para recibir el descarte, llame a addOnDismissedEventHandler
con CallComposite
. Para descartar CallComposite, llame a dismiss
.
En el ejemplo siguiente se muestra un evento de un estado de llamada cambiado.
callComposite.addOnDismissedEventHandler { callCompositeDismissedEvent ->
println(callCompositeDismissedEvent.errorCode)
}
callComposite.dismiss()
Más características
La lista de casos de uso tiene información detallada de más características.
Adición de notificaciones a la aplicación móvil
Azure Communication Services ofrece integraciones con Azure Event Grid y Azure Notification Hubs que permiten agregar notificaciones de inserción a las aplicaciones de Azure. Las notificaciones de inserción permiten enviar información de la aplicación a los dispositivos móviles de los usuarios. Puede usar las notificaciones de inserción para mostrar un cuadro de diálogo, reproducir un sonido o mostrar la interfaz de usuario de llamadas entrantes.
Obtenga la aplicación iOS de ejemplo para este inicio rápido en la biblioteca de interfaz de usuario de código abierto de Azure Communication Services para iOS.
Requisitos previos
- Una cuenta y una suscripción activa de Azure. Cree una cuenta gratuita.
- Un Mac ejecutando Xcode 13 o posterior junto con un certificado de desarrollador válido instalado en su keychain. CocoaPods también debe instalarse para capturar dependencias.
- Un recurso de Azure Communication Services implementado.
- Token de acceso de Azure Communication Services.
Configuración del proyecto
Complete las secciones siguientes para configurar el proyecto de inicio rápido.
Creación de un nuevo proyecto de Xcode
En Xcode, cree un nuevo proyecto:
En el menú Archivo, seleccione Nuevo>Proyecto.
En Elegir una plantilla para el nuevo proyecto, seleccione la plataforma iOS y seleccione la plantilla de aplicación App. En el inicio rápido se usan guiones gráficos de UIKit. El inicio rápido no crea pruebas, por lo que puede desactivar la casilla Incluir pruebas.
En Elegir opciones para el nuevo proyecto, escriba en el nombre del producto UILibraryQuickStart. Para la interfaz, seleccione Storyboard.
Instale el paquete y sus dependencias
(Opcional) Para MacBook con M1, instale y habilite Rosetta en Xcode.
Cree un Podfile en el directorio raíz del proyecto mediante la ejecución de
pod init
. Actualice CocoaPods a la versión actual en caso de que se produzca un error.Agregue el código siguiente a su Podfile. Reemplace
UILibraryQuickStart
por el nombre del proyecto.platform :ios, '15.0' target 'UILibraryQuickStart' do use_frameworks! pod 'AzureCommunicationUICalling' end
Ejecute
pod install --repo-update
.En Xcode, abra el archivo .xcworkspace generado.
Solicite acceso al hardware del dispositivo
Para acceder al hardware del dispositivo, incluyendo micrófono y cámara, debe actualizar la lista de propiedades de información de la aplicación. Establezca el valor asociado a una cadena que se incluye en el cuadro de diálogo empleado por el sistema para solicitar acceso al usuario.
Haga clic con el botón derecho en la entrada
Info.plist
del árbol del proyecto y seleccione Abrir como>Código fuente. Agregue las líneas siguientes a la sección<dict>
de nivel superior, y luego guarde el archivo.<key>NSCameraUsageDescription</key> <string></string> <key>NSMicrophoneUsageDescription</key> <string></string>
Este es un ejemplo del
Info.plist
código fuente en un archivo Xcode:Para comprobar que las solicitudes de permisos de dispositivo se agregan correctamente, seleccione Abrir como>Lista de Propiedades. Compruebe que la lista de propiedades de información es similar al ejemplo siguiente:
Desactivación de Bitcode
En el proyecto Xcode, en Configuración de compilación, establezca la opción Habilitar bitcode en No. Para encontrar la configuración, cambie el filtro de Básico a Todo o use la barra de búsqueda.
Inicialización del compuesto
Para inicializar el compuesto:
Ir a
ViewController
.Para inicializar sus componentes compuestos de llamada agregue el siguiente código. Reemplace
<GROUP_CALL_ID>
o bien por el identificador de grupo de la llamada o bien porUUID()
para generar un identificador de grupo para la llamada. Reemplace<DISPLAY_NAME>
por su propio nombre. (El límite de longitud de cadena para<DISPLAY_NAME>
es de 256 caracteres). Reemplace<USER_ACCESS_TOKEN>
por su token de acceso.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) } }
Ejecución del código
Para compilar y ejecutar la aplicación en el simulador de iOS, seleccione Producto>Ejecutar o use el método abreviado de teclado (⌘-R). Pruebe ahora la experiencia de llamada en el simulador:
Seleccione Iniciar Experiencia.
Acepte los permisos de audio y seleccione la configuración de dispositivo, micrófono y vídeo.
Seleccione Iniciar llamada.
Modelo de objetos
Las siguientes clases e interfaces controlan algunas de las características principales de la biblioteca cliente de la interfaz de usuario de Azure Communication Services:
Nombre | Descripción |
---|---|
CallComposite | Componente compuesto que representa una experiencia de llamada que contiene una galería de participantes y controles |
CallCompositeOptions | Configuración de opciones, como temas y control de eventos |
RemoteOptions | Opciones remotas para enviar a Azure Communication Services para unirse a una llamada de grupo o a una reunión de Teams. |
ThemeOptions | Opciones de personalización del tema del compuesto |
LocalizationOptions | Opciones de idioma para el compuesto |
Funcionalidad de la biblioteca de interfaz de usuario
Obtenga el código para crear características clave de comunicación para la aplicación iOS.
Creación de CallComposite
Para crear CallComposite
, dentro de la función startCallComposite
, inicialice una instancia CallCompositeOptions
y una instancia CallComposite
:
@objc private func startCallComposite() {
let callCompositeOptions = CallCompositeOptions()
callComposite = CallComposite(withOptions: callCompositeOptions)
}
Configuración de la autenticación
Para configurar la autenticación, dentro de la función startCallComposite
, inicialice una instancia CommunicationTokenCredential
. Reemplace <USER_ACCESS_TOKEN>
con el token de acceso.
let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>")
Si aún no tiene un token de acceso, cree un token de acceso Azure Communication Services.
Configuración de una llamada de grupo
Para configurar una llamada de grupo, dentro de la función startCallComposite
, inicialice una instancia RemoteOptions
para el localizador .groupCall
. Reemplace <GROUP_CALL_ID>
por el id. de grupo de la llamada. Reemplace <DISPLAY_NAME>
por su propio nombre.
// 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>")
Consulte Administrar llamadas para obtener información adicional sobre el uso de un identificador de grupo para las llamadas.
Configuración de una reunión de Teams
Para configurar una reunión de Microsoft Teams, dentro de la función startCallComposite
, inicialice una instancia RemoteOptions
para el localizador .teamsMeeting
. Reemplace <TEAMS_MEETING_LINK>
por el vínculo de reunión de Teams para la llamada. Reemplace <DISPLAY_NAME>
por su propio nombre.
let remoteOptions = RemoteOptions(for: .teamsMeeting(teamsLink: "<TEAMS_MEETING_LINK>"),
credential: communicationTokenCredential,
displayName: "<DISPLAY_NAME>")
Obtención de un vínculo a la reunión de Teams
Puede obtener un vínculo de reunión de Microsoft Teams mediante Graph API. Este proceso se detalla en la documentación de Graph.
El SDK de llamadas de Communication Services acepta un vínculo completo a la reunión en Microsoft Teams. Este vínculo se devuelve como parte del recurso onlineMeeting
, en la propiedad joinWebUrl. También puede obtener la información de la reunión necesaria en la dirección URL Unirse a la reunión de la propia invitación a la reunión en Teams.
Configurar una llamada de Salas
Importante
Esta característica de Azure Communication Services se encuentra actualmente en versión preliminar.
Las API y los SDK en versión preliminar se proporcionan sin contrato de nivel de servicio. Se recomienda no usarlos para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que sus funcionalidades estén limitadas.
Para obtener más información, consulte Términos de uso complementarios para las Versiones preliminares de Microsoft Azure.
Para configurar una llamada de Salas Azure Communication Services, dentro de la función startCallComposite
, inicialice una instancia RemoteOptions
para el localizador .roomCall
. Reemplace <ROOM_ID>
por el id. de la Sala de la llamada. Inicialice una instancia de LocalOptions
con roleHint
.
Reemplace <DISPLAY_NAME>
por su propio nombre.
CallComposite
usará la sugerencia de rol antes de conectarse a la llamada. Una vez conectada la llamada, el rol de participante actualizado real se recupera de Azure Communication Services.
Para obtener más información sobre Salas y sobre cómo crear y administrar una, consulte Inicio 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)
Inicio del compuesto
Dentro de la función startCallComposite
, llame launch
en la instancia CallComposite
:
callComposite?.launch(remoteOptions: remoteOptions)
Suscripción a los eventos
Puede implementar cierres para que actúen sobre los eventos. Los errorCodes siguientes se pueden enviar al controlador de errores:
callJoin
callEnd
cameraFailure
tokenExpired
microphonePermissionNotGranted
networkConnectionNotAvailable
En el ejemplo siguiente se muestra un evento de error para un evento de composición fallida:
callComposite?.events.onError = { error in
print("CallComposite failed with error:\(error)")
}
Aplicación de las opciones de tema
Para personalizar la experiencia de comunicación en la aplicación, cree opciones de tema personalizadas que implementen el protocolo ThemeOptions
. Incluya una instancia de la nueva clase en CallCompositeOptions
:
class CustomThemeOptions: ThemeOptions {
var primaryColor: UIColor {
return UIColor.red
}
}
let callCompositeOptions = CallCompositeOptions(theme: CustomThemeOptions())
Para obtener más información sobre cómo funcionan las temáticas, consulte la guía de temáticas.
Aplicación de opciones de localización
Para cambiar el idioma de la composición, cree opciones de localización personalizadas e inclúyalas en CallCompositeOptions
. De forma predeterminada, todas las etiquetas de texto usan cadenas en inglés (SupportedLocale.en
). Puede usar LocalizationOptions
para establecer un valor diferente para locale
. La biblioteca de interfaz de usuario incluye de forma predeterminada un conjunto de valores locale
que puede usar con componentes de la interfaz de usuario. SupportedLocale.values
proporciona una lista de los idiomas admitidos.
En el ejemplo siguiente, la composición se traduce al 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 obtener más información sobre traducciones y para obtener una lista de los idiomas admitidos, consulte la guía de traducción.
Suscribirse al evento de cambio de estado de llamada de CallComposite
Puede implementar cierres para que actúen sobre los eventos. Los estados de llamada se enviarán al controlador del cambio de estado de llamada.
En el ejemplo siguiente se muestra un evento de un estado de llamada cambiado.
callComposite?.events.onCallStateChanged = { callStateEvent in
print("CallComposite call state changed:\(callStateEvent.requestString)")
}
Descartar CallComposite y suscribirse al evento descartado
Para descartar CallComposite, llame a dismiss
. El siguiente evento de descarte se envía al llamar al compuesto descartado:
callComposite?.events.onDismissed = { dismissed in
print("CallComposite dismissed:\(dismissed.errorCode)")
}
callComposite.dismiss()
Adición de notificaciones a la aplicación móvil
Azure Communication Services ofrece integraciones con Azure Event Grid y Azure Notification Hubs que permiten agregar notificaciones de inserción a las aplicaciones de Azure. Las notificaciones de inserción permiten enviar información de la aplicación a los dispositivos móviles de los usuarios. Puede usar las notificaciones de inserción para mostrar un cuadro de diálogo, reproducir un sonido o mostrar la interfaz de usuario de llamadas entrantes.
Limpieza de recursos
Si quiere limpiar y quitar una suscripción a Communication Services, puede eliminar el recurso o grupo de recursos.
Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él.
Obtenga más información sobre la limpieza de recursos.