2017-07-10 1 views
8

Ich habe einen Messaging-Dienst, den ich für regelmäßige Push-Benachrichtigungen verwenden. 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.Unterschied zwischen voip Push und regulären Push beim Aufwachen App aus dem Hintergrund

Meine Annahme ist, dass, um die Batterie zu sparen, das Gerät von Wifi nach einer bestimmten Zeit trennt, und deshalb Push-Benachrichtigungen nicht erhalten werden.

Aber wenn ich VOIP Push-Benachrichtigungen verwenden, 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?

+0

Ich glaube nicht, dass Wi-Fi vollständig getrennt ist, wenn Ihr iOS-Gerät in den Schlafmodus wechselt. Wifi-Chip auf iOS könnte folgen Wake on Wireless LAN usw. Der Grund, warum Voip Push immer geliefert wird, ist, weil VOIP garantiert so ist, in Echtzeit! Alle anderen Nicht-VoIP-Push-Nachrichten, einschließlich stiller Benachrichtigungen, sind nicht zuverlässig und iOS kann sie selektiv fallen lassen, um den Akku im Energiesparmodus zu schonen. – Ayush

Antwort

1

Das ist fast richtig - so funktioniert voIP. Auszug aus Apple Docs:

In der Vergangenheit hatte eine VoIP-Anwendung, um eine permanente Netzwerk Verbindung mit einem Server erhalten eingehende Anrufe und andere Daten zu empfangen. Dies bedeutete das Schreiben komplexer Code, der regelmäßige Nachrichten zurück und zwischen der App und dem Server, um eine Verbindung lebendig, auch , wenn die App nicht verwendet wurde. Diese Technik führte zu häufigen Geräten , die Energie verschwendet. Es bedeutete auch, dass, wenn ein Benutzer die VoIP App beendet, Anrufe vom Server nicht mehr empfangen werden konnten.

Anstelle von persistenten Verbindungen sollten Entwickler die PushKit Framework-APIs verwenden, die es einer App ermöglichen, Push-Nachrichten (Benachrichtigungen , wenn Daten verfügbar sind) von einem Remoteserver zu empfangen. Immer wenn ein Push empfangen wird, wird die App zur Aktion aufgerufen. Zum Beispiel könnte eine VoIP-App eine Warnung anzeigen, wenn ein Anruf empfangen wird, und eine Option zu annehmen oder den Anruf ablehnen. Es könnte sogar beginnen, die vorausgehenden Schritte zu nehmen, um den Anruf einzuleiten, falls der Benutzer sich entscheidet anzunehmen.

1

Außerdem hinzuzufügen Sivajee Battina Antwort, ist es das, was Sie in der guidelines lesen:

Es gibt viele Vorteile bei der Verwendung PushKit VoIP erhalten drückt:

  • Die Gerät wird nur geweckt, wenn VoIP-Pushs auftreten, spart Energie.
  • Im Gegensatz zu Standard-Push-Benachrichtigungen, auf die der Benutzer vor reagieren muss, können VoIP-Pushs direkt zur App weitergeleitet werden.
  • VoIP-Pushs werden als Benachrichtigungen mit hoher Priorität betrachtet und werden ohne Verzögerung geliefert.

  • VoIP-Pushs 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, auch wenn Ihre App im Hintergrund läuft.

So ist der dritte Punkt bestätigt, dass Ihre Standard-Push-Benachrichtigungen kann unter bestimmten Umständen verzögert, während VoIP-Push-Benachrichtigungen werden immer in einer angemessenen Frist geliefert werden.

Werfen Sie auch einen Blick auf diese question aus Gründen, warum Standard Push-Benachrichtigungen verzögert oder gelöscht werden.

Verwandte Themen