Compartir a través de


Procedimientos recomendados: SDK de llamada de Azure Communication Services

En este artículo se proporciona información sobre los procedimientos recomendados relativos a los SDK de llamadas de Azure Communication Services.

Procedimientos recomendados del SDK web de JavaScript de Azure Communication Services

En esta sección se proporciona información sobre los procedimientos recomendados asociados a los SDK de llamada de voz y vídeo de JavaScript de Azure Communication Services.

SDK de llamada de voz y vídeo de JavaScript

Conexión o activación del micrófono desde el administrador de dispositivos cuando la llamada de Azure Communication Services está en curso.

Cuando no hay ningún micrófono disponible al inicio de una llamada y, a continuación, un micrófono está disponible, se genera el evento de diagnóstico de llamada "noMicrophoneDevicesEnumerated". Cuando esto sucede, la aplicación debe invocar askDevicePermission para obtener el consentimiento del usuario para enumerar los dispositivos. A continuación, el usuario podrá silenciar o reactivar el micrófono.

Eliminación de la vista del representador de secuencias de vídeo

Las aplicaciones de Communication Services deben eliminar VideoStreamRendererView o su instancia de VideoStreamRenderer primaria cuando ya no sea necesario.

Colgar la llamada con un evento onbeforeunload

La aplicación debe invocar call.hangup cuando se emite el evento onbeforeunload.

Control de varias llamadas en varias pestañas en dispositivos móviles

La aplicación no debe conectarse a llamadas desde varias pestañas del explorador simultáneamente, ya que esto puede provocar un comportamiento indefinido debido a la asignación de recursos para el micrófono y la cámara en el dispositivo. Se recomienda a los desarrolladores que siempre cuelguen las llamadas cuando se completen en segundo plano antes de iniciar una nueva.

Controle el silenciamiento del sistema operativo cuando se reciba una llamada de teléfono.

Mientras se encuentre en una llamada de Azure Communication Services (tanto para iOS como para Android), si se recibe una llamada telefónica o se activa el asistente para voz, el sistema operativo desactivará automáticamente el micrófono y la cámara del usuario. En Android, el audio de la llamada se reactiva automáticamente y el vídeo se reinicia una vez que finaliza la llamada telefónica. En iOS, se requiere la intervención del usuario para "reactivar el audio" e "iniciar el vídeo" de nuevo. Puede escuchar la notificación de que el micrófono se ha silenciado inesperadamente con el evento de calidad de microphoneMuteUnexpectedly. Tenga en cuenta que para poder volver a unirse correctamente a una llamada, debe usar el SDK 1.2.3-beta.1, o cualquier versión superior.

const latestMediaDiagnostic = call.api(SDK.Features.Diagnostics).media.getLatest();
const isIosSafari = (getOS() === OSName.ios) && (getPlatformName() === BrowserName.safari);
if (isIosSafari && latestMediaDiagnostic.microphoneMuteUnexpectedly && latestMediaDiagnostic.microphoneMuteUnexpectedly.value) {
  // received a QualityEvent on iOS that the microphone was unexpectedly muted - notify user to unmute their microphone and to start their video stream
}

La aplicación debe invocar a call.startVideo(localVideoStream); para iniciar una secuencia de vídeo y debe usar this.currentCall.unmute(); para reactivar el audio.

Administración de dispositivos

Puede usar el SDK de Azure Communication Services para administrar los dispositivos y las operaciones multimedia.

  • La aplicación no debe usar API nativas del explorador como getUserMedia o getDisplayMedia para adquirir secuencias fuera del SDK. Si lo hace, tendrá que eliminar manualmente las secuencias multimedia antes de usar DeviceManager u otras API de administración de dispositivos mediante el SDK de Communication Services.

Solicitud de permisos de dispositivo

Puede solicitar permisos de dispositivo mediante el SDK:

  • La aplicación debe usar DeviceManager.askDevicePermission para solicitar acceso a dispositivos de audio o vídeo.
  • Si el usuario deniega el acceso, DeviceManager.askDevicePermission devolverá "false" para un tipo de dispositivo determinado (audio o vídeo) en las llamadas posteriores, incluso después de actualizar la página. En este escenario, la aplicación debe detectar que el usuario denegó previamente el acceso e indicar al usuario que restablezca manualmente o conceda explícitamente acceso a un tipo de dispositivo determinado.

Cámara utilizada por otro proceso

  • En Chrome y Microsoft Edge para Windows, si inicia, acepta o se une a una llamada con el vídeo activado y otro proceso distinto del explorador en el que se ejecuta el SDK web está utilizando el dispositivo de cámara, la llamada se iniciará solo con audio y sin vídeo. Se genera un evento UFD cameraStartFailed porque la cámara no se pudo iniciar ya que otro proceso la estaba utilizando. Lo mismo se aplica a la activación del vídeo durante la llamada. Puede desactivar la cámara en el otro proceso para que libere el dispositivo de cámara y, a continuación, volver a iniciar el vídeo desde la llamada. En ese momento, el vídeo se activará para la llamada y los participantes remotos comenzarán a verlo.
  • Esto no es un problema en Chrome ni Safari para macOS porque el sistema operativo permitirá que los procesos o subprocesos compartan el dispositivo de cámara.
  • En dispositivos móviles, si un proceso A solicita el dispositivo de cámara y lo está usando un proceso B, el proceso A asumirá el dispositivo de cámara y el proceso B dejará de usarlo.
  • En Safari para iOS, la cámara no puede estar activada para varios clientes de llamada en la misma pestaña ni en varias pestañas. Cuando cualquier cliente de llamada usa la cámara, sobrepone la cámara de cualquier cliente de llamada anterior que lo estaba usando. El cliente de llamada anterior recibirá un evento UFD cameraStoppedUnexpectedly.

Uso compartido de pantalla

Cerrar fuera de la aplicación no impide que se comparta

Por ejemplo, supongamos que desde Chromium, se muestra la pantalla para compartir la aplicación de Microsoft Teams. A continuación, seleccione el botón "X" de la aplicación Teams para cerrarla. La aplicación Teams no se cerrará y seguirá ejecutándose en segundo plano. Incluso verá el icono en la parte inferior derecha de la barra de escritorio. Puesto que la aplicación Teams todavía se está ejecutando, significa que todavía se está compartiendo la pantalla y el participante remoto en la llamada todavía puede ver que la aplicación de Teams se comparte en pantalla. Para impedir que la aplicación se comparta en pantalla, tendrá que hacer clic con el botón derecho en su icono en la barra de escritorio y, a continuación, hacer clic en salir. O bien, tendrá que hacer clic en el botón "Detener uso compartido" en el explorador. O llame a la API Call.stopScreenSharing() del SDK.

Safari solo puede hacer uso compartido de pantalla completa

Safari solo permite compartir la pantalla completa. A diferencia de Chromium, que le permite pantalla compartida de pantalla completa, aplicación de escritorio específica o pestaña del explorador específica.

Permisos de uso compartido de pantalla en macOS

Para hacer uso compartido de pantalla en Safari o Chrome para macOS, se deben conceder permisos de grabación de pantalla a los exploradores en el menú del sistema operativo: "Preferencias de sistemas" -> "Privacidad y seguridad" -> "Grabación de pantalla".

Procedimientos recomendados del SDK nativo de Azure Communication Services

En esta sección se proporciona información sobre los procedimientos recomendados asociados a los SDK nativos de llamada de voz y vídeo de Azure Communication Services.

Plataformas compatibles

Estos son los requisitos mínimos de la plataforma del sistema operativo para garantizar una funcionalidad óptima de los SDK nativos de llamada.

  • Compatibilidad con iOS 10.0+ en tiempo de compilación y iOS 12.0+ en tiempo de ejecución
  • Xcode 12.0+.
  • Compatibilidad con iPadOS 13.0+

La aplicación solicita permisos del dispositivo

Para usar los SDK nativos de llamada para realizar o recibir llamadas, es necesario autorizar a cada plataforma para acceder a los recursos del dispositivo. Como desarrollador, debe solicitar al usuario acceso y asegurarse de que están habilitados. El consumidor autoriza estos derechos de acceso, por lo que debe comprobar que se les ha concedido permiso anteriormente.

  • NSMicrophoneUsageDescription para el acceso al micrófono.
  • NSCameraUsageDescription para el acceso a la cámara.

Configuración de los registros

La implementación del registro según el tutorial de recuperación de archivos de registros es más importante que nunca. Los registros detallados ayudan a diagnosticar problemas específicos de los modelos de dispositivo o las versiones del sistema operativo que cumplen los criterios mínimos del SDK. Recomendamos a los desarrolladores que empiecen a configurar la API de registros. Sin los registros, el equipo de soporte técnico de Microsoft no podrá ayudar a depurar y solucionar problemas de las llamadas.

Id. de llamada de seguimiento

CallID es el id. único de una llamada. Identifica eventos correlacionados de todos los participantes y puntos de conexión que se conectan durante una sola llamada. En la mayoría de los casos los usa para revisar los registros y el equipo de soporte técnico de Microsoft los solicita para ayudar a solucionar problemas de las llamadas. Debe realizar un seguimiento de CallID en la telemetría que configure en la aplicación, puede seguir las instrucciones de la guía de solución de problemas para comprender cómo recuperarla para cada plataforma.

Suscribirse a UFD (diagnósticos orientados al usuario) y estadísticas de calidad multimedia

  • Diagnóstico orientado al usuario (UFD) que se puede usar para examinar varias propiedades de una llamada para determinar cuál podría ser el problema durante la llamada que afecta a los clientes.
  • Estadísticas de calidad multimedia examinan las métricas de calidad de audio, vídeo y uso compartido de pantalla de bajo nivel para las métricas de llamadas entrantes y salientes. Se recomienda recopilar los datos y enviarlos a la ingesta de canalización una vez finalizada la llamada.

Tratamiento de errores

Si hay errores durante la llamada o la implementación, los métodos devuelven objetos de error que contienen códigos de error. Es fundamental usar estos objetos de error para el control de errores adecuado y mostrar alertas. Los estados de llamada también devuelven códigos de error para ayudar a identificar el motivo del error de llamada. Puede consultar la guía de solución de problemas para resolver los problemas.

Administración de secuencias de vídeo

Asegúrese de eliminar el VideoStreamRendererView cuando el vídeo ya no se muestre en la interfaz de usuario. Use VideoStreamType para determinar el tipo de la secuencia.

Administración general de memoria

Asignación previa de recursos. Inicialice el cliente que realiza la llamada y cualquier recurso necesario durante la fase de inicio de la aplicación en lugar de hacerlo a petición. Este enfoque reduce la latencia al iniciar una llamada.

Eliminar correctamente. Asegúrese de que todos los objetos de llamada se eliminen correctamente después de usarlos para liberar recursos del sistema y evitar fugas de memoria. Asegúrese de cancelar la suscripción de eventos que impiden las pérdidas de memoria.

Cámara o micrófono utilizado por otro proceso

Es importante tener en cuenta que en los dispositivos móviles si varios procesos intentan acceder a la cámara o el micrófono al mismo tiempo, el primer proceso para solicitar acceso tomará el control del dispositivo. Como resultado, el segundo proceso perderá inmediatamente el acceso a él.

Optimización del tamaño de la aplicación mediante la biblioteca de interfaz de usuario

Optimizar el tamaño de las bibliotecas en el desarrollo de software es fundamental por varias razones, especialmente a medida que las aplicaciones se vuelven cada vez más complejas y consumen muchos recursos.

Rendimiento de la aplicación: las bibliotecas más pequeñas reducen la cantidad de código que se debe cargar, analizar y ejecutar mediante una aplicación. Esto puede mejorar significativamente el tiempo de inicio y el rendimiento general de la aplicación, especialmente en dispositivos con recursos limitados.

Uso de memoria: al minimizar el tamaño de la biblioteca, puede reducir la superficie de memoria en tiempo de ejecución de una aplicación. Esto es importante para los dispositivos móviles, donde la memoria suele estar restringida. Un menor uso de memoria puede provocar menos bloqueos del sistema y un mejor rendimiento de multitarea.

Pasos siguientes

Para más información, consulte los siguientes artículos.