Compartir vía


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 para el SDK web de llamada de Azure Communication Services

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

Conectar un micrófono o habilitar un micrófono desde el administrador de dispositivos cuando una llamada está en curso

Cuando no hay ningún micrófono disponible al principio de una llamada de Azure Communication Services y, a continuación, un micrófono está disponible, el cambio genera un evento de diagnóstico noMicrophoneDevicesEnumerated. Cuando se produce ese evento, la aplicación debe invocar askDevicePermission para obtener el consentimiento del usuario para enumerar los dispositivos. A continuación, el usuario puede activar o desactivar el micrófono.

Eliminación de VideoStreamRendererView

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.

Controlar varias llamadas en varias pestañas

La aplicación no debe conectarse a llamadas desde varias pestañas del explorador simultáneamente en dispositivos móviles. Esta situación puede provocar un comportamiento indefinido debido a la asignación de recursos para el micrófono y la cámara en un 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

Durante 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 desactiva 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, reactivar sonido y reiniciar el vídeo requieren la acción del usuario.

Puede usar el evento de calidad de microphoneMuteUnexpectedly para escuchar la notificación de que el micrófono se ha silenciado inesperadamente. Tenga en cuenta que para volver a unir correctamente una llamada, debe usar SDK 1.2.3-beta.1 o posterior.

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.

Administrar los 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, debe 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 devuelve 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:

  1. Detectar que el usuario ha denegado previamente el acceso.
  2. Indicar al usuario que restablezca manualmente o conceda explícitamente acceso a un tipo de dispositivo determinado.

Administrar el comportamiento de una cámara que usa 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 una marca de diagnóstico orientado al usuario cameraStartFailed porque la cámara no se pudo iniciar.

    La misma situación se aplica a la activación del vídeo a mitad de 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. A continuación, el vídeo se activa para la llamada y los participantes remotos comienzan a ver el vídeo.

    Este problema no existe en Chrome ni Safari para macOS porque el sistema operativo permite que los procesos y subprocesos compartan el dispositivo de cámara.

  • En dispositivos móviles: si un proceso A solicita el dispositivo de cámara mientras un proceso B lo está usando, 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 obtiene una marca diagnóstico orientado al usuario cameraStoppedUnexpectedly.

Administrar pantalla compartida

Cerrar una aplicación no impide que se comparta

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. Aunque la ventana está cerrada, la aplicación Teams sigue ejecutándose en segundo plano. El icono sigue apareciendo en la barra de tareas de escritorio. Dado que la aplicación Teams sigue ejecutándose, se sigue compartiendo la pantalla con los participantes remotos.

Para impedir que la aplicación se comparta en pantalla, debe realizar una de estas acciones:

  • Haga clic con el botón derecho en el icono de la aplicación en la barra de tareas de escritorio y seleccione Salir.
  • Seleccione el botón Dejar de compartir en el explorador.
  • Llame a la operación de API de Call.stopScreenSharing() del SDK.

Safari solo puede compartir en pantalla completa

Safari solo permite compartir la pantalla completa. Este comportamiento es diferente al de Chromium, que le permite compartir la pantalla completa, una aplicación de escritorio específica o una pestaña específica del explorador.

Puede conceder permisos de uso compartido de pantalla en macOS

Para compartir pantalla en Safari o Chrome para macOS, conceda los permisos necesarios a los exploradores en el menú del sistema operativo: Preferencias del sistema>Seguridad y privacidad>Grabación de pantalla.

Procedimientos recomendados para el SDK nativo de llamada 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 del SDK nativo 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+

Comprobar permisos de dispositivo para las solicitudes de aplicación

Para usar el SDK nativo de llamada para realizar o recibir llamadas, los consumidores deben autorizar a cada plataforma para acceder a los recursos del dispositivo. Como desarrollador, debe solicitar al usuario acceso y asegurarse de que los permisos están habilitados. El consumidor autoriza estos derechos de acceso, así que compruebe que actualmente tienen los permisos necesarios.

  • 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 como se describe en el tutorial sobre cómo recuperar archivos de registro 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. Animamos a los desarrolladores a configurar registros mediante la API de registros. Sin los registros, el equipo de soporte técnico de Microsoft no puede ayudar a depurar ni solucionar problemas de las llamadas.

Seguimiento de CallID

CallID es el id. único de una llamada. Identifica los 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, se usa para revisar los registros. El equipo de Soporte técnico de Microsoft le pide que le ayude a solucionar problemas de las llamadas.

Debe realizar un seguimiento del valor CallID en la telemetría que configure en la aplicación. Para comprender cómo recuperar el valor de cada plataforma, siga las instrucciones de la guía de solución de problemas.

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

Puede usar estas características de Azure Communication Services para mejorar la experiencia del usuario:

  • Diagnóstico orientado al usuario: examine las propiedades de una llamada para determinar la causa de los problemas que afectan 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 una llamada.

Administrar control 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 los motivos de los errores de llamada. Puede consultar la guía de solución de problemas para resolver los problemas.

Administrar secuencias de vídeo

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

Llevar a cabo la 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. Elimine todos los objetos de llamada después de su uso para liberar los recursos del sistema y evitar pérdidas de memoria. Asegúrese de cancelar la suscripción de eventos que podrían provocar pérdidas de memoria.

Considere cómo los procesos acceden a la cámara o al micrófono

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 toma el control del dispositivo. Como resultado, el segundo proceso pierde inmediatamente el acceso a él.

Optimizar el tamaño de la biblioteca

Optimizar el tamaño de las bibliotecas en el desarrollo de software es fundamental por las siguientes razones, especialmente a medida que las aplicaciones se vuelven 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 una aplicación debe cargar, analizar y ejecutar. Esta reducción puede mejorar significativamente el tiempo de inicio y el rendimiento general de la aplicación, especialmente en dispositivos que tienen 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. Esta disminución 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.

Para más información, vea: