Hintergrund Staat

iOS unterstützt Multitasking für alle Apps, aber es gibt ein paar Schritte, die ein Entwickler durchlaufen muss, damit das Vonage Video iOS SDK gut mit verschiedenen App-Status funktioniert. Dieses Dokument umfasst eine Reihe von Praktiken, die unserer Erfahrung nach mit den meisten Vonage Video-Apps gut funktionieren. Es ist jedoch kein Ersatz für die Lektüre der Apple-Dokumentation zu diesem Thema - insbesondere die Abschnitte "Strategien zur Handhabung von App-Statusübergängen", "Ausführung im Hintergrund" und "Tipps zur Entwicklung einer VoIP-App". Obwohl Apple die meisten Vonage Video-Apps nicht als VoIP-Apps betrachtet, sind die Inhalte zur Konfiguration von Audiositzungen und Socket-Konfiguration relevant und nützlich für das Verständnis dieses Dokuments.

Schnellstart - Einstellen der App-Berechtigungen

Damit die App im Hintergrund weiter Audio aufnimmt, wählen Sie in Xcode das Ziel der App und die Option Signing & Capabilities Registerkarte. Klicken Sie dann auf die Schaltfläche + Fähigkeit und fügen Sie dem Projekt die Fähigkeit Hintergrundmodi hinzu. Wählen Sie dann die Audio, Airplay, and Picture in Picture Option. Diese Einstellung verhindert auch, dass die App während der Wiedergabe und Aufnahme von Audio im Hintergrund in einen angehaltenen Zustand übergeht.

Wenn Ihre Anwendung Push-Benachrichtigungen mit hoher Priorität benötigt, die die Anwendung bei eingehenden Anrufen aufwecken, die native Benutzeroberfläche der Telefonanwendung verwenden oder über Halteereignisse benachrichtigt werden, wählen Sie die Option Voice over IP Fähigkeit in XCode.

Was Vonage Video im Hintergrund tun kann (und was nicht)

Mit dem SDK kann eine Anwendung kann jede der folgenden Aktionen im Hintergrund ausführen:

  • Halten Sie eine Sitzung aktiv.
  • Halten Sie eine reine Audio-Sitzung ab.
  • Setzen Sie Audio-/Video-Flags für Herausgeber und Abonnenten. Zum Beispiel, das Setzen der OTPublisher.publishAudio Eigenschaft zu YES ist erlaubt.
  • Veröffentlichen Sie mit einer benutzerdefinierten Videoerfassungsimplementierung, die die Kamera nicht erfasst (z. B. Veröffentlichung aus einer Datei oder einer synthetischen Videoquelle).

Eine App kann die Verwendung der Kamera wieder aufnehmen, sobald sie in den aktiven Zustand zurückkehrt.

Anwendungen kann nicht im Hintergrund die folgenden Aktionen durchführen:

  • Verwenden Sie die Kamera als Videoquelle für einen Verlag.
  • Richten Sie neue Ansichten mit Videos aus Streams ein.
  • Behalten Sie eine aktive Audiositzung bei, wenn ein Telefon- oder FaceTime-Anruf eingeht.
  • Verhindern Sie, dass andere Anwendungen System-Audio-Ressourcen beanspruchen.
  • Aufrechterhaltung einer Verbindung zu einer Sitzung ohne aktiven Verleger oder Teilnehmer.

Aktive Sitzungen im Hintergrund

Die oben beschriebene Konfiguration ermöglicht es Anwendungen, eine aktive Sitzung durchzuführen, selbst wenn sich die Anwendung im Hintergrund befindet, vermutlich weil der Endbenutzer die Home-Taste drückt, den Bildschirm sperrt oder URL-Inhalte in einem anderen Prozess öffnet. Die audio erlaubt es, dass der Prozess der Anwendung im Hintergrund nicht unterbrochen wird, wenn eine Audiositzung aktiv ist. Das bedeutet, dass die Audioerfassung und -wiedergabe in Ihrer Sitzung fortgesetzt werden kann, solange kein anderer Prozess Audioressourcen anfordert.

Wenn es richtig konfiguriert ist, zeigt iOS an, dass Ihre App im Hintergrund mit einer aktiven Audiositzung läuft. Dies wird durch einen roten Hintergrund der Statusleiste sowie durch eine zusätzliche Leiste angezeigt, die den Namen der App mit der aktiven Audiositzung angibt - in diesem Fall Ihre App.

Die Voice over IP Fähigkeit ist für die Aufrechterhaltung von langlebigen Signalisierungsverbindungen zu einem Anwendungsserver gedacht.

Wenn Sie die Option Voice over IP im Abschnitt "XCode-Fähigkeiten" zu verwenden, sollte Ihre App Funktionen implementieren, die diese Fähigkeit rechtfertigen, andernfalls kann die App Store-Überprüfung Ihre App ablehnen. Diese Fähigkeit sollte nicht verwendet werden, um die App aus anderen Gründen, die nicht mit Audio- oder Videokommunikation zusammenhängen, im Hintergrund laufen zu lassen.

Wenn Ihre Anwendung über Anwendungsereignisse benachrichtigt werden muss, empfehlen wir die Verwendung von Apple Push-Benachrichtigungen mit Ihrem Anwendungsserver, um die Anwendung aufzuwecken und einen Arbeitsablauf durchzuführen. Wenn Ihre Anwendung eingehende Anrufe implementiert, empfehlen wir die Verwendung des VoIP-Push-Benachrichtigungen.

Die Kontrolle verlieren

Eingehende Telefon- und FaceTime-Anrufe sind wahrscheinlich die ersten Ereignisse, die Ihre Anwendung vollständig unterbrechen. Wenn dies geschieht, wird Ihre Anwendung unterbrochen, unabhängig davon, ob eine Audiositzung aktiv ist.

Wenn Ihre Anwendung unterbrochen wird, weil die Audiositzung an einen anderen Prozess übergeben wurde, ist keine zusätzliche Logik erforderlich, um dies zu behandeln. Wenn die Anwendung über einen längeren Zeitraum unterbrochen wird, wird die Verbindung zur Sitzung beendet. Andere Clients, die mit der Sitzung verbunden sind, erhalten connectionDestroyed Ereignisse für die Geräteverbindung, und eine eventuelle Bereinigung wird notwendig sein, sobald die App nicht mehr ausgesetzt ist. Solange Ihr Controller die Fehler- und Trennungsereignisse für die Sitzung verarbeitet, sollte sich dies nicht von einem freiwilligen oder einem anderen Trennungsworkflow unterscheiden. Die Clients können die Verbindung wiederherstellen, sobald die Bereinigung des Verbindungsabbruchs verarbeitet wurde.