Comment fonctionnent les notifications iOS Push?

comment les notifications iOS" push " sont-elles livrées à un périphérique particulier sans que ce périphérique ait besoin de sonder un serveur?

Par exemple, disons que j'ai reçu un nouveau message sur Facebook. Facebook avise Apple que mon appareil devrait recevoir une notification en tant que telle. Mais comment Apple sait-il à quel périphérique/IP pousser le message?

72
demandé sur gonzobrains 2013-06-23 19:53:25

6 réponses

il était trop pour moi de mettre dans un commentaire ainsi.

de la documentation.

Apple Push Notification service (APNs) propage push notifications to devices have applications registered to receive those notifications. Chaque périphérique établit une connexion IP accréditée et cryptée avec le service et reçoit des notifications sur cette connexion persistante. Les fournisseurs se connectent avec les APN par l'intermédiaire d'un voie de communication protégée et persistante tout en surveillant les données entrantes destinées à leurs applications clientes. Lorsque de nouvelles données pour une application arrivent, le fournisseur prépare et envoie une notification par le canal à APNs, qui pousse la notification à l'appareil cible..

je suggère de lire la documentation pour plus d'informations et pour savoir comment utiliser et configurer. Tout y est.

Push Notifications

42
répondu Panama Jack 2017-05-09 18:11:25

chaque périphérique peut être mis à jour avec des données en utilisant leurs propres jetons de périphérique uniques. Cette photo explique tout . .

enter image description here

68
répondu Karan Alangat 2015-06-03 10:46:59

j'ai créé une infographie pour expliquer le flux de travail des notifications push. Espérons que cela est utile.

enter image description here

16
répondu Udit Agarwal 2016-01-04 08:55:40
Le périphérique

ne maintient pas le sondage sur le serveur pour les notifications push.

pour rester simple, considérez qu'un iPhone est connecté à internet. En se connectant à Internet iPhone établit la connexion au serveur de notifications Push D'Apple cette connexion est ouverte, ce qui signifie que les données peuvent être jetées à iPhone à partir du serveur au moment où les données arrivent au serveur.

Apple n'utilise pas de protocole HTTP pour les notifications Push mais si vous comprenez HTTP Le protocole est une méthodologie presque similaire.

http://en.wikipedia.org/wiki/Push_technology#HTTP_server_push

9
répondu user4248688 2014-11-13 14:44:15

Apn "Vue D'Ensemble De 151910920"

Apple Push Notification service (APNs) est la pièce maîtresse de la fonction de notification à distance. C'est un service robuste, sécurisé, et hautement efficace pour les développeurs d'applications pour propager l'information à iOS (et, indirectement, watchOS), tvOS, et macOS dispositifs.

lors du lancement initial de votre application sur le périphérique d'un utilisateur, le système établit automatiquement une connexion IP accréditée, cryptée et persistante entre votre application et APNs. Cette connexion permet à votre application d'effectuer la configuration pour lui permettre de recevoir des notifications, comme expliqué dans la configuration du Support de Notification à distance.

l'autre moitié de la connexion pour l'envoi de notifications-la voie sécurisée et persistante entre un serveur fournisseur et APNs-nécessite une configuration dans votre compte de développeur en ligne et l'utilisation de certificats cryptographiques fournis par Apple. Un fournisseur est un serveur, que vous déployez et gérez, que vous configurez pour fonctionner avec un Apn. La Figure 1-1 montre le chemin de livraison pour une notification à distance.

Figure 1-1 produisant une notification à distance à partir d'un fournisseur de l'application

image: ../Art/remote_notif_simple.jpg

avec la configuration de notification push terminée sur vos fournisseurs et dans votre application, vos fournisseurs peuvent ensuite envoyer des demandes de notification à APNs. APNs transmet les charges utiles correspondantes de notification à chaque appareil ciblé. Sur réception d'une notification, le système permet la charge utile de l'application sur le périphérique, et gère les interactions avec l'utilisateur.

Si une notification pour votre application arrive avec l'appareil sous tension mais avec l'app ne fonctionne pas, le système peut toujours afficher la notification. Si L'appareil est éteint lorsque APNs envoie une notification, APNs garde la notification et tente à nouveau plus tard (pour plus de détails, voir Qualité du Service, Les Notifications stock-Forward et Coalesced).

Responsabilités Du Fournisseur

vos serveurs fournisseurs ont les responsabilités suivantes pour participer avec APNs:

  • recevoir, via APNs, des tokens de périphérique globalement uniques, spécifiques à l'application et d'autres données pertinentes à partir d'instances de votre application sur les dispositifs de l'utilisateur. Cela permet à un fournisseur de connaître chaque instance d'exécution de votre application.
  • Déterminer, en fonction de la conception de votre système de notification, quand les notifications doivent être envoyées à chaque appareil.
  • élaboration et envoi de demandes de notification à APNs, chaque demande contenant une notification charge utile et des informations de livraison; APNs délivre alors les notifications correspondantes aux dispositifs prévus en votre nom.

pour chaque demande de notification à distance qu'un fournisseur envoie, il doit:

  • construire un dictionnaire JSON contenant la charge utile de la notification, comme décrit dans la création de la charge utile de la notification à distance.
  • ajouter la charge utile, un token de périphérique unique au monde, et d'autres informations de livraison à une demande HTTP/2. Pour plus d'informations sur les tokens de périphérique, consultez APNs-to-Device Connection Trust et Device Tokens. Pour plus d'informations sur le format de requête HTTP/2, ainsi que sur les réponses possibles et les erreurs de APNs, voir communiquer avec APNs.
  • envoyer la demande HTTP/2 à APNs, y compris les justificatifs d'identité cryptographiques sous la forme d'un jeton ou d'un certificat, sur un canal sécurisé persistant.
  • établir cette voie de communication protégée est décrit dans L'Architecture de sécurité.

Utilisant Plusieurs Fournisseurs

la Figure 1-2 montre le type de réseau virtuel qu'APNs active pour les appareils qui exécutent vos applications. Pour gérer la charge de notification, vous déployez généralement plusieurs fournisseurs, chacun avec sa propre connexion persistante et sécurisée à APNs. Chaque fournisseur peut alors envoyer des demandes de notification ciblant n'importe quel périphérique pour lequel le fournisseur a un token de périphérique valide.

Figure 1-2 Poussant à distance des notifications provenant de plusieurs fournisseurs de plusieurs périphériques

image: ../Art/remote_notif_multiple.jpg

qualité des Notifications de Service, de stockage et de coalescence

le service Apple Push Notification comprend un élément Quality of Service (QoS) qui exécute une fonction de stockage et de transfert. Si APNs tente de délivrer une notification et que le périphérique de destination est hors ligne, APNs stocke la notification pour une période limitée et la délivre lorsque le périphérique redevient disponible. Cette composante stocke seulement la notification la plus récente par périphérique et par application. Si un périphérique est hors ligne, l'envoi d'une demande de notification ciblant ce périphérique entraîne le rejet de la demande précédente. Si un appareil reste déconnecté pendant longtemps, toutes ses notifications stockées dans APNs sont rejetées.

pour permettre la fusion de notifications similaires, vous pouvez inclure un identificateur d'effondrement dans une demande de notification. Normalement, lorsqu'un appareil est en ligne, chaque demande de notification que vous envoyez à APNs donne lieu à une notification envoyée à l'appareil. Toutefois, lorsque la clé apns-collapse-id est présente dans votre en-tête de requête HTTP/2, APNs coalesces requêtes dont la valeur pour cette clé est la même. Par exemple, un service de nouvelles qui envoie le même titre deux fois pourrait utiliser la même valeur d'identificateur d'effondrement pour les deux demandes. APNs fusionnerait alors les deux demandes en une seule notification pour la livraison à l'appareil. Pour plus de détails sur la clé apns-collapse-id.

Architecture De Sécurité

APNs enforce end-to-end, validation et authentification cryptographiques utilisant deux niveaux de confiance: la confiance de connexion et la confiance de token de périphérique.

Connexion confiance des œuvres entre les fournisseurs et les APNs, et entre l'Apn et les périphériques.

Device token trust fonctionne de bout en bout pour chaque notification à distance. Il garantit que les notifications sont acheminées uniquement entre les points de départ (fournisseur) et de fin (périphérique) corrects.

un jeton de périphérique est une instance NSData opaque qui contient un identifiant unique assigné par Apple à une application spécifique sur un périphérique spécifique. Seuls les APNs peuvent décoder et lire le contenu d'un token d'appareil. Chaque instance d'application reçoit son token de périphérique unique lorsqu'elle s'enregistre avec APNs, et doit ensuite transmettre le token à son fournisseur, comme décrit dans la configuration du Support de Notification à distance. Le fournisseur doit inclure le jeton de périphérique dans chaque demande de notification push qui cible le périphérique associé; APNs utilise le jeton de périphérique pour s'assurer que la notification n'est délivrée qu'à la combinaison unique app-device pour laquelle elle est prévue.

APNs peut délivrer un nouveau dispositif de jeton pour une variété de raisons:

  • l'utilisateur installe votre application sur un nouvel appareil
  • L'utilisateur restaure l'appareil d'une sauvegarde
  • l'utilisateur réinstalle le système d'exploitation
  • autres événements définis par le système

en conséquence, les applications doivent demander le jeton de périphérique au moment du lancement, tel que décrit dans APNs-to-Device Connection Trust and Device Tokens. Pour des exemples de code, consultez S'Enregistrer pour recevoir des Notifications à distance.

pour établir des sessions TLS basées sur HTTP/2 avec APNs, vous devez vous assurer qu'un certificat racine global CA de GeoTrust est installé sur chacun de vos fournisseurs. Si un fournisseur exécute macOS, CE certificat racine est dans le porte-clés par défaut. Sur d'autres systèmes, ce certificat peut exiger une installation explicite. Vous pouvez télécharger ce certificat à partir du site Web des certificats racine de GeoTrust. Voici un lien direct vers le certificat.

la Figure 1-3 illustre l'utilisation de L'API de fournisseur APNs basée sur HTTP/2 pour établir la confiance, et l'utilisation de jetons d'authentification de fournisseur JWT pour l'envoi de notifications.

Figure 1-3 l'Établissement et l'utilisation de la base de jeton de connexion d'un fournisseur de confiance

image: ../Art/service_provider_ct.jpg

comme le montre la Figure 1-3, la confiance des fournisseurs fondée sur des jetons fonctionne comme suit:

votre fournisseur demande une connexion sécurisée avec APNs en utilisant la couche transport security (TLS), représentée par la flèche marquée" TLS initiation " dans la figure.

APNs donne alors à votre fournisseur un certificat APNs, représenté par la flèche suivante dans la figure (étiqueté "Certificat APNs"), que votre fournisseur valide ensuite.

à ce point, la confiance de connexion est établie et votre serveur fournisseur est activé pour envoyer des requêtes de notification push à distance basées sur des tokens à APNs. Chaque demande de notification envoyée par votre fournisseur doit être accompagnée d'un JWT d'authentification, représenté dans la figure par la flèche "Notification push"."

APNs répond à chaque poussée, représentée dans la figure comme la flèche étiqueté " réponse HTTP/2."

pour plus de détails sur les réponses que votre fournisseur peut recevoir pour cette étape, consultez la réponse HTTP/2 de APNs.

la Figure 1-4 illustre l'utilisation d'un certificat SSL émis par Apple pour établir la confiance entre un fournisseur et les NPA. Contrairement à la Figure 1-3, cette figure ne montre pas une poussée de notification elle-même, mais s'arrête à l'établissement d'une connexion de sécurité de la couche Transport (TLS). Dans le certificat de fiducie de régime, pousser les demandes de notification ne sont pas authentifiées, mais elles sont validées à l'aide du jeton de périphérique qui les accompagne.

Figure 1-4 Établir un certificat de fournisseur de services de connexion de confiance

image: ../Art/service_provider_ct_certificate_2x.png

comme le montre la Figure 1-4, la fiducie de fournisseur à APNs fondée sur un certificat fonctionne comme suit:

votre fournisseur demande une connexion sécurisée avec APNs utilisant la sécurité de la couche transport (TLS), représentée par la flèche marquée "TLS initiation" dans la figure.

APNs donne alors à votre fournisseur un certificat APNs, représenté par la flèche suivante dans la figure (intitulée "APNS certificat"), que votre fournisseur valide ensuite.

votre fournisseur doit alors envoyer son certificat de fournisseur fourni par Apple (que vous avez précédemment obtenu à partir de votre compte de développeur en ligne, comme expliqué dans " générer un universal APNs client Certificat SSL " dans L'aide Xcode) retour à APNs, représenté par la flèche marquée "Provider certificate."

APNs valide alors votre certificat de fournisseur, confirmant ainsi que la demande de connexion provenait d'un fournisseur légitime, et établit votre connexion TLS.

à ce point, la confiance de connexion est établie et votre serveur fournisseur est activé pour envoyer des requêtes de notification push à distance basées sur un certificat à APNs.

APNs-à-Connexion à l'Appareil de la Confiance et de l'Appareil Jetons

la confiance entre APNs et chaque périphérique est établie automatiquement, sans la participation de votre application, comme décrit dans cette section.

chaque dispositif possède un certificat cryptographique et une clé cryptographique privée, fournis par le système d'exploitation lors de l'activation initiale du dispositif et stockés dans le porte-clés du dispositif. Pendant l'activation, APNs authentifie et valide les connexion à l'appareil, basée sur le certificat et la clé, comme indiqué à la Figure 6-5.

Figure 1-5 Établir le lien de confiance entre un périphérique et un Apn

image: ../Art/service_device_ct.jpg

comme le montre la Figure 1-5, APNS-to-device trust fonctionne comme suit:

  • la négociation de Fiducie commence lorsque le dispositif initie une connexion TLS avec APNs, comme indiqué dans la flèche supérieure de la figure.
  • APNs renvoie un certificat APNs à l'appareil.
  • le système d'exploitation valide CE certificat et ensuite, comme indiqué dans la flèche" certificat de dispositif", envoie le certificat de dispositif à APNs.
  • enfin, comme l'indique la flèche du bas de la figure, APNs valide le certificat de dispositif, établissant la confiance.
  • avec une connexion TLS établie entre APNs et l'appareil, les applications de l'appareil peuvent s'enregistrer avec APNs pour recevoir leurs tokens d'appareil spécifiques à l'application pour les notifications à distance. Pour plus de détails et des exemples de code, consultez S'Enregistrer pour recevoir des Notifications à distance dans la configuration du Support de Notification à distance.

après avoir reçu le jeton de périphérique, une application doit se connecter au fournisseur associé de l'application et lui transmettre le jeton. Cette étape est nécessaire parce qu'un fournisseur doit inclure le jeton de périphérique plus tard quand il envoie une demande de notification, à APNs, ciblant l'appareil. Le code que vous écrivez pour transmettre le token est également affiché lors de L'enregistrement pour recevoir des Notifications à distance.

Qu'un utilisateur active un périphérique pour la première fois, ou que APNs ait émis un nouveau jeton de périphérique, le processus est similaire et est illustré à la Figure 6-6.

Figure 1-6 Gestion de l'appareil jeton

image: ../Art/token_generation.jpg

obtention et manipulation d'un jeton de dispositif spécifique à une application fonctionne comme suit:

votre application s'enregistre avec APNs pour les notifications à distance, comme indiqué dans la flèche du haut. Si l'application est déjà enregistré, et spécifique à l'application appareil jeton n'a pas changé, le système renvoie rapidement l'existant jeton à l'application et ce processus passe à l'étape 4.

Lorsqu'un nouveau jeton de périphérique est nécessaire, APNs génère une copie en utilisant les informations contenues dans le certificat de l'appareil. Il crypte le jeton à l'aide d'une clé token et le renvoie à l'appareil, comme indiqué dans la flèche centrale pointant vers la droite.

le système renvoie le token de périphérique à votre application en appelant votre application:didregisterpour les notifications avecdevicetoken: méthode delegate.

Lors de la réception du jeton, votre application (dans la méthode du délégué) doit transmettre à votre fournisseur dans les deux binaire ou en hexadécimal. Votre fournisseur ne peut pas envoyer de notifications à l'appareil sans ce token. Pour plus de détails, consultez la rubrique S'Enregistrer pour recevoir des Notifications à distance dans la section Configuration du Support de Notification à distance.

IMPORTANT

les jetons APNs sont de longueur variable. Ne pas coder en dur de leur taille.

lorsque votre fournisseur envoie une demande de notification push à APNs, il inclut un jeton de périphérique qui identifie un app-périphérique unique combinaison. Cette étape est montrée dans la flèche" Token, Payload " entre le fournisseur et APNs dans la Figure 6-7. APNs déchiffre le token pour s'assurer de la validité de la requête et pour déterminer le périphérique cible. Si APNs détermine que l'expéditeur et le destinataire sont légitimes, il envoie alors la notification à l'appareil identifié.

Figure 1-7 chemin de notification à distance du fournisseur à l'appareil

image: ../Art/token_trust.jpg

après que l'appareil a reçu la notification (et après la dernière étape indiquée à la Figure 1-7), le système transmet la notification à distance à votre application.

Ref: Service De Notification Push Apple

maintenant, Regardez ici pour comprendre le flux technique: comment mettre en œuvre le service de notification Apple Push sur L'Application iOS?

6
répondu Krunal 2018-05-22 17:07:18

il y a une très belle exaplanation des notifications push dans cet article .

Dans iOS, les applications ne peuvent pas faire beaucoup de choses dans le contexte. Les applications ne sont autorisés à faire ensemble limité d'activités de vie de la batterie est conservée.

mais que se passe-t-il si quelque chose d'intéressant se produit et que vous souhaitez en informer l'utilisateur, même s'il n'utilise pas actuellement votre application?

2
répondu Tarek 2015-03-06 06:33:33