Estado de fondo

iOS admite la multitarea para todas las aplicaciones; sin embargo, hay algunos pasos que un desarrollador debe seguir para que el SDK de Vonage Video para iOS funcione bien con diferentes estados de aplicaciones. Este documento cubre un conjunto de prácticas que hemos descubierto que funcionan bien con la mayoría de las aplicaciones de Vonage Video. Sin embargo, no sustituye la lectura del Documentación de Apple sobre el tema - específicamente las secciones sobre "Estrategias para manejar las transiciones de estado de la aplicación", "Ejecución en segundo plano" y "Consejos para desarrollar una aplicación VoIP". Aunque Apple no considera que la mayoría de las aplicaciones de Vonage Video sean aplicaciones de VoIP, el contenido sobre la configuración de sesiones de audio y la configuración de sockets es relevante y útil para comprender este documento.

Inicio rápido: configurar los permisos de las aplicaciones

Para que la aplicación siga grabando audio en segundo plano, seleccione el destino de la aplicación en Xcode y seleccione la opción Signing & Capabilities ficha. A continuación, haga clic en el botón + Capacidad y añada la capacidad Modos de fondo al proyecto. A continuación, seleccione la opción Audio, Airplay, and Picture in Picture . Este ajuste también evitará que la aplicación pase a un estado suspendido mientras reproduce y graba audio en segundo plano.

Si su aplicación necesita notificaciones push de alta prioridad que despierten la aplicación para las llamadas entrantes, utilizando la interfaz de usuario nativa de la aplicación de teléfono, o recibir notificaciones sobre eventos de retención, seleccione la opción Voice over IP en XCode.

Lo que Vonage Video puede (y no puede) hacer en segundo plano

Con el SDK, una aplicación puede realiza cada una de las siguientes acciones mientras se encuentra en estado de fondo:

  • Mantener una sesión activa.
  • Mantén una sesión sólo de audio.
  • Establecer banderas de audio/vídeo para editores y abonados. Por ejemplo, establecer el indicador OTPublisher.publishAudio propiedad a YES está permitido.
  • Publicar con una implementación de captura de vídeo personalizada que no adquiera la cámara (por ejemplo, publicar desde un archivo o una fuente de vídeo sintetizada).

Una aplicación puede reanudar el uso de la cámara en cuanto vuelva al estado activo.

Sin embargo, las aplicaciones no puede hacer lo siguiente mientras está en estado de fondo:

  • Utiliza la cámara como fuente de vídeo para un editor.
  • Configurar nuevas vistas con vídeo de streams.
  • Mantener una sesión de audio activa si se recibe una llamada telefónica o FaceTime.
  • Evita que otras apps adquieran recursos de audio del sistema.
  • Mantener una conexión con una sesión sin editor o abonado activo.

Sesiones activas en segundo plano

La configuración descrita anteriormente permite a las aplicaciones ejecutar una sesión activa incluso mientras la aplicación está en segundo plano, presumiblemente como resultado de que el usuario final pulse el botón de inicio, bloquee la pantalla o abra el contenido de la URL en otro proceso. El sitio audio permite que el proceso de la aplicación no se suspenda mientras está en segundo plano, si hay una sesión de audio activa. Esto significa que la captura y renderización de audio pueden continuar en tu sesión, siempre y cuando otro proceso no solicite recursos de audio.

Cuando está correctamente configurado, iOS proporciona un indicador de que tu app se está ejecutando en segundo plano con una sesión de audio activa. Esto se ve como un fondo rojo de la barra de estado, así como una barra adicional que indica el nombre de la app que mantiene la sesión de audio activa, en este caso, tu app.

En Voice over IP está pensada para mantener conexiones de señalización de larga duración con un servidor de aplicaciones.

Si selecciona la opción Voice over IP en la sección de Capacidades de XCode, tu aplicación debe implementar características que justifiquen la capacidad, de lo contrario la revisión de la App Store puede rechazar tu aplicación. Esta capacidad no debe utilizarse para mantener la aplicación en ejecución en segundo plano por otros motivos no relacionados con las comunicaciones de audio o vídeo.

Si su aplicación necesita recibir notificaciones de eventos de aplicación, le recomendamos que utilice Notificaciones Push de Apple con tu servidor de aplicaciones para activar la aplicación y realizar un flujo de trabajo. Si su aplicación implementa llamadas entrantes, le recomendamos que utilice la función Notificaciones push de VoIP.

Perder el control

Las llamadas entrantes de teléfono y FaceTime son probablemente los primeros eventos que verás que interrumpen completamente tu aplicación. Cuando esto ocurra, tu app se suspenderá, independientemente de si hay una sesión de audio activa.

Si tu aplicación se suspende porque la sesión de audio se ha cedido a otro proceso, no hay necesidad de lógica adicional para manejar esto. Si la aplicación se suspende durante un largo periodo de tiempo, la conexión a la sesión finalizará. Otros clientes conectados a la sesión recibirán connectionDestroyed para la conexión del dispositivo, y una eventual limpieza será necesaria una vez que la aplicación no esté suspendida. Mientras tu controlador esté procesando los eventos de error y de delegado desconectado para la sesión, esto no debería ser diferente de un flujo de trabajo de desconexión voluntaria, o de cualquier otro. Los clientes pueden volver a conectarse tan pronto como se procese la limpieza de desconexión.