État d'origine

iOS prend en charge le multitâche pour toutes les applications, mais il y a quelques étapes qu'un développeur doit suivre pour que le SDK iOS de Vonage Video fonctionne bien avec différents états d'application. Ce document couvre un ensemble de pratiques que nous avons trouvées efficaces avec la plupart des apps In-App Video. Cependant, il ne remplace pas la lecture de la section Documentation Apple sur le sujet - en particulier les sections "Stratégies pour gérer les transitions d'état de l'application", "Exécution en arrière-plan" et "Conseils pour le développement d'une application VoIP". Bien qu'Apple ne considère pas la plupart des apps Vonage Video comme des apps VoIP, le contenu sur la configuration des sessions audio et la configuration des prises est pertinent et utile pour la compréhension de ce document.

Démarrage rapide - réglage des autorisations d'utilisation

Pour que l'application continue à enregistrer de l'audio en arrière-plan, sélectionnez la cible de l'application dans Xcode et sélectionnez l'option Signing & Capabilities onglet. Cliquez ensuite sur le bouton + Capacité et ajoutez la capacité Modes d'arrière-plan au projet. Sélectionnez ensuite l'option Audio, Airplay, and Picture in Picture (option de suspension). Ce paramètre empêchera également l'application de passer à un état suspendu lors de la lecture et de l'enregistrement audio en arrière-plan.

Si votre application a besoin de notifications push hautement prioritaires qui réveillent l'application en cas d'appels entrants, en utilisant l'interface utilisateur native de l'application téléphonique, ou qui sont notifiées d'événements de mise en attente, sélectionnez l'option Voice over IP dans XCode.

Ce que Vonage Video peut (et ne peut pas) faire en arrière-plan

En utilisant le SDK, une application peut effectuer chacune des opérations suivantes lorsqu'il se trouve en arrière-plan :

  • Maintenir une session active.
  • Soutenir une session audio uniquement.
  • Définir les drapeaux audio/vidéo pour les éditeurs et les abonnés. Par exemple, l'activation de l'indicateur OTPublisher.publishAudio à la propriété YES est autorisée.
  • Publier avec une implémentation de capture vidéo personnalisée qui n'acquiert pas la caméra (par exemple, publier à partir d'un fichier ou d'une source vidéo synthétisée).

Une application peut reprendre l'utilisation de la caméra dès qu'elle revient à l'état actif.

Cependant, les applications ne peut pas effectuer les opérations suivantes lorsqu'il se trouve en arrière-plan :

  • Utiliser l'appareil photo comme source vidéo pour un éditeur.
  • Créez de nouvelles vues avec des vidéos provenant de flux.
  • Maintenir une session audio active si un appel téléphonique ou FaceTime est reçu.
  • Empêcher d'autres applications d'acquérir des ressources audio du système.
  • Maintenir une connexion à une session sans éditeur ou abonné actif.

Sessions actives en arrière-plan

La configuration décrite ci-dessus permet aux applications d'exécuter une session active même lorsque l'application est en arrière-plan, probablement parce que l'utilisateur final appuie sur le bouton d'accueil, verrouille l'écran ou ouvre le contenu de l'URL dans un autre processus. L'application audio permet au processus de l'application de ne pas être suspendu en arrière-plan, si une session audio est active. Cela signifie que la capture et le rendu audio peuvent se poursuivre dans votre session, tant qu'un autre processus ne demande pas de ressources audio.

Lorsqu'il est correctement configuré, iOS indique que votre application fonctionne en arrière-plan avec une session audio active. Cela se traduit par un fond rouge dans la barre d'état, ainsi que par une barre supplémentaire indiquant le nom de l'application qui détient la session audio active - dans ce cas, il s'agit de votre application.

Les Voice over IP est destinée à maintenir des connexions de signalisation de longue durée avec un serveur d'application.

Si vous sélectionnez l'option Voice over IP dans la section Capacités XCode, votre application doit mettre en œuvre des fonctionnalités qui justifient cette capacité, faute de quoi l'App Store pourrait rejeter votre application. Cette capacité ne doit pas être utilisée pour maintenir l'exécution de l'app en arrière-plan pour d'autres raisons qui ne sont pas liées aux communications audio ou vidéo.

Si votre application a besoin d'être notifiée pour des événements d'application, nous vous recommandons d'utiliser Notifications push d'Apple avec votre serveur d'application pour réveiller l'application et exécuter un flux de travail. Si votre application met en œuvre des appels entrants, nous vous recommandons d'utiliser la fonction Notifications push VoIP.

Perdre le contrôle

Les appels téléphoniques et FaceTime entrants sont probablement les premiers événements que vous verrez qui interrompent complètement votre application. Dans ce cas, votre application sera suspendue, qu'il y ait ou non une session audio active.

Si votre application est suspendue parce que la session audio a été cédée à un autre processus, il n'est pas nécessaire d'ajouter une logique supplémentaire pour gérer cette situation. Si l'application est suspendue pendant une longue période, la connexion à la session s'arrête. Les autres clients connectés à la session recevront connectionDestroyed pour la connexion de l'appareil, et un nettoyage éventuel sera nécessaire une fois que l'application ne sera plus suspendue. Tant que votre contrôleur traite les événements délégués d'erreur et de déconnexion pour la session, cela ne devrait pas être différent d'un flux de travail de déconnexion volontaire ou autre. Les clients peuvent se reconnecter dès que le nettoyage de la déconnexion est effectué.