Ich habe einen Messaging-Dienst, den ich für regelmäßige Push-Benachrichtigungen verwende. Wenn beispielsweise ein Benutzer eine Nachricht sendet, erhält der andere Benutzer eine Push-Benachrichtigung mit dieser Nachricht. Ich habe bemerkt, wenn das Telefon auf WLAN und 3g / 4g ist, und die App wird getötet (und der Bildschirm ist gesperrt), wird die Benachrichtigung erhalten. Wenn das Gerät nur über WLAN verfügt und die App beendet wird (und der Bildschirm gesperrt ist), wird die Benachrichtigung nicht empfangen.
Ich gehe davon aus, dass das Gerät nach einer gewissen Zeit vom WLAN getrennt wird, um die Batterie zu schonen, und deshalb werden Push-Benachrichtigungen nicht empfangen.
Aber wenn ich VOIP-Push-Benachrichtigungen verwende, ist die Situation anders. Selbst wenn die App beendet wird und das Gerät über WLAN verfügt (und der Bildschirm gesperrt ist), wird die Benachrichtigung empfangen. Was bedeutet das? Wie erhält das Telefon diese Benachrichtigung, wenn es vom WLAN getrennt wird?
Was fehlt mir hier?
Sie haben fast Recht - so funktioniert voIP. Auszug aus Apple Docs :
In der Vergangenheit musste eine VoIP-App ein persistentes Netzwerk pflegen Verbindung mit einem Server, um eingehende Anrufe und andere Daten zu empfangen. Das bedeutete, komplexen Code zu schreiben, der periodische Nachrichten zurücksandte zwischen der App und dem Server, um eine Verbindung aufrecht zu erhalten wenn die App nicht verwendet wurde. Diese Technik führte zu häufigen Geräten wacht auf, die Energie verschwendet. Es bedeutete auch, dass wenn ein Benutzer das VoIP beendet App, Anrufe vom Server konnten nicht mehr empfangen werden.
Anstelle von persistenten Verbindungen sollten Entwickler das PushKit verwenden Framework-APIs, mit denen eine App Push-Nachrichten empfangen kann (Benachrichtigungen wenn Daten verfügbar sind) von einem Remote-Server. Wann immer ein Push ist erhalten, wird die App zum Handeln aufgerufen. Zum Beispiel könnte eine VoIP-App eine Warnung anzeigen, wenn ein Anruf empfangen wird, und eine Option bereitstellen den Anruf annehmen oder abweisen. Es könnte sogar beginnen, vorbereitende Schritte zu unternehmen um den Anruf einzuleiten, falls der Benutzer sich entscheidet anzunehmen.
Darüber hinaus können Sie, um es Sivajee Battinas Antwort hinzuzufügen, dies in Richtlinien :
Die Verwendung von PushKit zum Empfang von VoIP-Push-Nachrichten hat viele Vorteile:
- Das Gerät wird nur geweckt, wenn VoIP-Pushs auftreten und Energie sparen.
- Im Gegensatz zu Standard-Push-Benachrichtigungen, auf die der Benutzer zuvor antworten muss Ihre App kann eine Aktion durchführen, VoIP-Push geht direkt in Ihre App für die Verarbeitung.
VoIP-Pushs gelten als Benachrichtigungen mit hoher Priorität und werden ohne Verzögerung geliefert.
VoIP-Push-Vorgänge können mehr Daten enthalten als mit Standard-Push-Benachrichtigungen bereitgestellt werden.
Ihre App wird automatisch neu gestartet, wenn sie nicht ausgeführt wird, wenn ein VoIP-Push empfangen wird.
Ihre App erhält Laufzeit, um einen Push zu verarbeiten, selbst wenn Ihr App läuft im Hintergrund.
So bestätigt der dritte Punkt, dass Ihre Standard-Push-Benachrichtigungen unter bestimmten Umständen verzögert werden können, während VoIP-Push-Benachrichtigungen immer rechtzeitig geliefert werden.
Schauen Sie sich auch diese Frage aus Gründen, warum Standard Push ist, an Benachrichtigungen werden verzögert oder gelöscht.
Tags und Links ios apple-push-notifications voip