L'APN appareil jeton jamais changer, une fois créé?

une fois créé le jeton push notification device change-t-il un jour?

Exemple lorsque l'application est mise à jour? ou dans tout autre cas, elle peut changer??

87
demandé sur fernandohur 2011-07-11 19:06:27

12 réponses

À Partir De [La Documentation D'Apple ApplePushService] 2

la forme de cette phase de token trust assure que seule APNs génère le signe qu'il honorera plus tard, et il peut s'assurer qu'un jeton remis à lui par un appareil est le même que précédemment configuré pour ce périphérique, et uniquement pour cet appareil.

si l'utilisateur rétablit les données de sauvegarde à un nouvel appareil ou réinstalle le système d'exploitation, le jeton de l'appareil change.

65
répondu malinois 2017-11-27 06:40:08

la documentation officielle D'Apple n'est pas claire sur ce point. Ce que j'ai observé est ceci: le jeton est invariant pour un périphérique, une application et un domaine donnés (production vs. sandbox). Je crois que cela doit être vrai pour que le système fonctionne de manière fiable. Considérez la situation où une mise à jour d'application déclenche un nouveau token APN; si j'utilisais la plus grande nouvelle application de type Twitter, avec des notifications activées, que se passerait-il si je mettais à jour mon application à partir d'iTunes? Dois-Je est-ce que je m'attends à ce qu'il continue d'être envoyé des notifications même si je n'ai pas lancé les applications depuis que je "synchronise" la mise à jour sur mon périphérique? Le fait de changer l'application ne peut pas affecter le système APN puisque L'OS peut recevoir des notifications en votre nom même si vous n'avez pas lancé l'application mise à jour.

pour être clair, Apple déclare "une application doit enregistrer [avec des serveurs APN] chaque fois qu'il lance et de donner à son fournisseur le courant jeton." je suis tout à fait d'accord; ce faisant protégera votre application contre de mauvaises hypothèses ou des situations inhabituelles.

L'une des réponses à les tokens de notification push sont-ils uniques pour toutes les applications d'un seul appareil? indique que les jetons de périphérique sont uniques par" installation du système d'exploitation"; et que restaurer de la sauvegarde à un périphérique maintiendrait le jeton mais essuyer un périphérique le fera obtenir un nouveau jeton. Ce serait entièrement conformément aux intentions D'Apple d'un fonctionnement et d'une confidentialité sans faille: essuyer un appareil est assez sévère que peut-être il justifie une nouvelle association, mais un utilisateur qui restaure une image après une mise à jour du système d'exploitation voudrait préserver leurs notifications existantes. Si je me souviens de la récente mise à jour iOS5 sur mon iPad, j'ai restauré la sauvegarde la plus récente après la mise à jour, donc cela aurait maintenu la cohérence de mon token de notification. [Edit: restauration d'une sauvegarde sur un périphérique différent Ne PAS dupliquer le jeton.]

mise en garde: Je n'ai pas de connaissance définitive sur le sujet, juste une expérience raisonnable de travail avec APN (en tant que développeur tiers). Comme toujours, il est préférable de vérifier vos hypothèses.


Mise À Jour (Juin 2012):

j'ai récemment eu l'occasion de parler à des ingénieurs D'Apple et de faire quelques tests dans le monde réel, et je voulais présenter les résultats:

pour être complet, lorsque je parle de retourner un jeton APN, je suppose le contexte d'un seul identificateur/application bundle.

Premièrement, les ingénieurs D'Apple ont dit qu'il ne devrait pas être possible pour deux appareils de retourner le même APN. Malgré les commentaires ci-dessous, je n'ai pas été en mesure d'identifier une circonstance où cela échoue.

Deuxièmement, voici la séquence d'essai de mise à niveau et les résultats:

  1. démarrer avec iOS4 installé sur iPhone4; dispositif de sauvegarde dans iTunes

  2. Upgrade to iOS5

    D'un test précédent, je sais que le token APN est maintenant différent

  3. restaurer la sauvegarde sur le périphérique

    le jeton APN est maintenant le même que l'étape 1.

  4. Reset iOS (clean device))

    le Token APN change

  5. sauvegarder un téléphone différent d'iTunes et restaurer cette sauvegarde pour tester l'appareil; fondamentalement, je restaure le "mauvais" sauvegarde, comme si je commutais les téléphones.

    le jeton APN change de nouveau; en outre, il est distinct et ne correspond pas aux jetons ni le jeton original ni le jeton le "cloné" jeton.

  6. restaurer la sauvegarde "correcte" de l'appareil.

    le jeton APN est maintenant le même que l'étape 1.

  7. enfin, j'ai mis à jour le téléphone en iOS6 (beta2), restauré ma sauvegarde, et ré-testé. Comme prévu, le jeton a continué à correspondre au jeton de l'étape 1.

à ce point, Je suis assez sûr que les tokens APN ne peuvent pas être dupliqués entre différents périphériques; peut-être que cela s'est produit comme un bug dans les versions précédentes d'iOS, mais je suis sûr que iOS5 (et probablement iOS6) gèrent les tokens APN correctement.


Mise À Jour (Août 2012)

je viens de réaliser que je n'avais pas ajouté ceci: tokens de périphérique will changement. Un des devs D'Apple a partagé avec moi que les jetons font réellement expiration (au bout de 2 ans, je pense). Pour beaucoup de buts, c'est assez long ce qui peut être considéré comme invariant.

[Je ne suis pas inquiet si je dois mettre à jour mes scripts de test avec de nouveaux jetons tous les deux ans, surtout depuis que je change de téléphone chaque année.]

131
répondu Robert Altman 2017-05-23 12:26:24

je viens de le tester avec iOS9 et le jeton de périphérique change si je réinstaller une application.

39
répondu Nikolay Derkach 2017-02-27 00:41:07

Oui , les jetons de dispositifs peuvent changer.

chaque fois que votre application reçoit un token, elle devrait le stocker. Ensuite, chaque fois qu'un nouveau token est reçu (ce qui va arriver, éventuellement), comparez le nouveau token au token stocké et, s'ils sont différents:

  1. mettre à jour le stockage local de l'appareil, (y compris éventuellement à nil )
  2. mettez à jour n'importe quoi sur l'appareil qui utilise le token pour être conscient du nouveau token
  3. mettre à jour tous les API qui sont au courant de ce token vers le nouveau token.

en pratique, la dernière étape est la plus susceptible d'être non négligeable. Par exemple, si vous avez un service qui envoie des alertes météorologiques à un jeton d'appareil basé sur le code postal auquel l'appareil s'est abonné, alors vous devez passer le old_token et le new_token à ce service afin qu'il puisse mettre à jour Livraison.

Ergo, en général 100% des API acceptant un "jeton de périphérique" doivent aussi avoir une sorte de UPDATE facilité pour ce jeton. À pas construire pour ce est à construire pour les notifications mal livrées et non livrées.

21
répondu SG1 2013-11-23 19:50:44

le jeton de dispositif change de iOS 8 et plus tard

s'il vous Plaît voir le texte ci-dessous sur le site d'Apple. enregistrement, ordonnancement et traitement des notifications D'utilisateurs

le jeton périphérique est votre clé pour envoyer des notifications push à votre application sur un périphérique spécifique. Les tokens de périphérique peuvent changer, de sorte que votre application doit se réenregistrer chaque fois qu'elle est lancée et transmettre le token reçu à votre serveur. Si vous ne parvenez pas à mettre à jour le dispositif de jeton, à distance des notifications pourront pas faire leur chemin vers le périphérique de l'utilisateur. Les jetons de périphérique changent toujours lorsque l'utilisateur restitue des données de sauvegarde à un nouveau périphérique ou ordinateur ou réinstalle le système d'exploitation. Lors de la migration des données vers un nouvel appareil ou ordinateur, l'utilisateur doit lancer votre application Une fois avant que les notifications à distance puissent être livrées à cet appareil.

6
répondu Nitya 2016-02-18 17:55:01

il ne devrait pas changer, sauf si votre application est restaurée sur un nouveau périphérique (à ce moment-là, il ne sera plus demandé d'accepter les notifications push, et il vous enverra simplement l'appel enregistré à ce moment-là, vous devriez accepter le nouveau token).

mais Apple ne garantit pas qu'il ne change jamais (donc la documentation ne le mentionne jamais). Vous feriez mieux de programmer le pire et de supposer qu'il pourrait changer un jour. Aussi, l'envoi d'un jeton à votre serveur régulièrement vous permet de supprimez les tokens qui ne se sont pas enregistrés depuis un certain temps, et qui ont probablement désactivé votre application ou qui ont perdu leur intérêt il y a un certain temps (et la documentation spécifie ce comportement comme voulu!).

3
répondu Jake 2011-07-11 15:33:17

les liens deviennent rapidement obsolètes avec apple! je cite donc ce qui semble assez clair maintenant:

ne mettez jamais en cache les jetons de périphérique dans votre application; au lieu de cela, obtenez-les du système quand vous en avez besoin. APNs émet un nouveau token de périphérique pour votre application lorsque certains événements se produisent. Le dispositif de jeton est garanti d'être différents, par exemple, lorsqu'un utilisateur restaure un périphérique à partir d'une sauvegarde, lorsque l'utilisateur installe l'application sur un nouvel appareil, et lorsque l'utilisateur réinstalle le système d'exploitation. Récupérer le token, plutôt que de compter sur un cache, garantit que vous avez le token de périphérique actuel nécessaire à votre fournisseur pour communiquer avec APNs. Lorsque vous tentez de récupérer un jeton de périphérique mais qu'il n'a pas changé, la méthode fetch retourne rapidement.

de ce guide

1
répondu TheFuquan 2017-07-10 08:28:35

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 reconstitue l'appareil à partir 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 à l'appareil de jeton au moment du lancement.

Refer - Apple Docs

NB: Les jetons APNS sont de longueur variable. Ne pas coder en dur de leur taille.

1
répondu Lal Krishna 2018-04-19 06:34:42

comme référence à notification push d'Apple trucs

le jeton périphérique est votre clé pour envoyer des notifications push à votre application sur un périphérique spécifique. Les tokens de périphérique peuvent changer, de sorte que votre application doit se réenregistrer chaque fois qu'elle est lancée et transmettre le token reçu à votre serveur. Si vous ne mettez pas à jour le token du périphérique, les notifications à distance risquent de ne pas se retrouver sur le périphérique de l'utilisateur. Les jetons de périphérique changent toujours quand l'utilisateur restaure sauvegardez les données sur un nouvel appareil ou ordinateur ou réinstallez le système d'exploitation. Lors de la migration des données vers un nouvel appareil ou ordinateur, l'utilisateur doit lancer votre application Une fois avant que les notifications à distance puissent être livrées à cet appareil.

ne cache jamais un token de périphérique; récupère toujours le token du système quand tu en as besoin. Si votre application est déjà enregistrée pour des notifications à distance, appeler la méthode registerForRemoteNotifications n'entraîne pas de frais supplémentaires, et iOS retourne l'appareil jeton à votre délégué d'application immédiatement. En outre, iOS appelle votre méthode de délégué chaque fois que le jeton de périphérique change, pas seulement en réponse à votre enregistrement ou ré-enregistrement d'application.

0
répondu Mohit Gaur 2016-08-11 07:30:08

selon ce lien le jeton du dispositif

le jeton de dispositif inclus dans chaque requête représente l'identité le dispositif recevant la notification. APNs utilise des jetons pour identifier chaque application unique et dispositif de combinaison. il les utilise également pour authentifier le routage des notifications à distance envoyées à un appareil. Chaque fois que votre application fonctionne sur un appareil, il récupère ce token de APNs et le transmet à votre fournisseur. Votre fournisseur stocke le token et l'utilise lors de l'envoi de notifications à cette application et à ce périphérique particulier. le jeton lui-même est opaque et persistant, changeant seulement quand un appareil les données et les paramètres sont effacés. seuls les APN peuvent décoder et lire dispositif de jeton.

0
répondu lucianoenrico 2016-12-14 09:54:56

Oui cela peut changer. Idéalement, lorsque nous recevons un jeton via la méthode de rappel

  • (nul)application: (UIApplication *)application didRegisterForRemoteNotificationswithdevicetoken: (NSData *)deviceToken

l'application doit enregistrer / rafraîchir le token sur le serveur distant. Cela permettra de s'assurer que le token sur les APNS et votre serveur est maintenu dans la synchronisation.

selon Apple documentation ,

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 quand un nouveau dispositif de jeton est nécessaire, Apn génère un en utilisant les informations contenues dans le dispositif de certification. Il crypte le token à l'aide d'une clé token et le renvoie à l'appareil, comme indiqué dans le milieu, dirigé vers la droite flèche. Le système renvoie le token de périphérique vers votre application par l'appel de votre demande d'enregistrement: did register forremotenotificationswithdevicetoken: delegate méthode. Après avoir reçu le token, votre application (au sein du délégué) méthode) doit transmettre à votre fournisseur en binaire ou format hexadécimal. Votre fournisseur ne peut pas envoyer de notifications à appareil sans ce jeton. Pour plus de détails, voir S'inscrire pour recevoir Notifications à distance dans la configuration de la Notification à distance Soutien.

0
répondu iosCurator 2017-04-04 10:05:53

le relais dispositif token SUR l'installation de l'application.

cela signifie que si vous réinstallez l'application, il change ; il ne met pas plus si vous le faites à partir d'une sauvegarde, une mise à niveau iOS ecc..

La bonne façon de l'utiliser, pour éviter tout problème, c'est d'obtenir une donnée sur le NSPAppDelegate à chaque lancement de l'application, la méthode didRegisterForRemoteNotificationsWithDeviceToken

0
répondu Alberto Scampini 2017-07-11 14:58:28