J'ai un service de messagerie que j'utilise pour les notifications Push régulières. Par exemple, lorsqu'un utilisateur envoie un message, l'autre utilisateur reçoit une notification Push avec ce message. J'ai remarqué que si le téléphone est en wifi et 3g/4g, et que l'application est tuée (et l'écran est verrouillé), la notification sera reçue. Si l'appareil est uniquement sur wifi et que l'application est tuée (et que l'écran est verrouillé), la notification n'est pas reçue.
Mon hypothèse est que pour économiser la batterie, l'appareil se déconnecte du wifi après un certain temps, et c'est pourquoi les notifications Push ne sont pas reçues.
Mais lorsque j'utilise les notifications VOIP Push, la situation est différente. Même si l'application est tuée et que l'appareil est en wifi (et que l'écran est verrouillé), la notification sera reçue. Qu'est-ce que cela signifie? Comment le téléphone reçoit-il cette notification s'il se déconnecte du wifi?
Qu'est-ce que j'oublie ici?
De plus, pour ajouter à la réponse de Sivajee Battina, voici ce que vous pouvez lire dans les directives :
Il existe de nombreux avantages à utiliser PushKit pour recevoir des push VoIP:
- L'appareil n'est réveillé que lorsque des poussées VoIP se produisent, ce qui permet d'économiser de l'énergie.
- Contrairement aux notifications Push standard, auxquelles l'utilisateur doit répondre avant que votre application ne puisse effectuer une action, les push VoIP vont directement à votre application pour traitement.
Les push VoIP sont considérés comme des notifications de haute priorité et sont livrés sans délai.
Les push VoIP peuvent inclure plus de données que ce qui est fourni avec les notifications Push standard.
Votre application est automatiquement relancée si elle ne fonctionne pas lors de la réception d'un push VoIP.
Votre application dispose d'un runtime pour traiter un Push, même si votre application fonctionne en arrière-plan.
Ainsi, le troisième point confirme que vos notifications Push standard peuvent être retardées dans certaines circonstances, tandis que les notifications Push VoIP seront toujours envoyées instantanément.
Jetez également un œil à ceci question pour les raisons pour lesquelles les notifications Push standard sont retardées ou abandonnées.
Vous avez presque raison - c'est ainsi que fonctionne la VoIP. Extrait de Apple Docs:
Dans le passé, une application VoIP devait maintenir une connexion réseau persistante avec un serveur pour recevoir les appels entrants et d'autres données. Cela signifiait écrire du code complexe qui envoyait des messages périodiques dans les deux sens entre l'application et le serveur pour maintenir une connexion active, même lorsque l'application n'était pas utilisée. Cette technique a entraîné des réveils fréquents de l'appareil qui gaspillaient de l'énergie. Cela signifiait également que si un utilisateur quittait l'application VoIP, les appels du serveur ne pouvaient plus être reçus.
Au lieu de connexions persistantes, les développeurs doivent utiliser le framework PushKit, des API qui permettent à une application de recevoir des push (notifications lorsque des données sont disponibles) d'un serveur distant. Chaque fois qu'un Push est reçu, l'application est appelée à l'action. Par exemple, une application VoIP peut afficher une alerte lorsqu'un appel est reçu et fournir une option pour accepter ou rejeter l'appel. Il pourrait même commencer à prendre des mesures précurseurs pour lancer l'appel, dans le cas où l'utilisateur décide d'accepter.