111 votes

Le jeton de périphérique change-t-il une fois créé?

Une fois créé, le jeton de périphérique de notification push change-t-il?

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

148voto

Robert Altman Points 2535

Apple officiel de la documentation n'est pas claire sur ce point. Ce que j'ai observé est le suivant: le jeton est invariante pour un appareil donné, l'application et le domaine (production vs bac à sable). Je crois que cela doit être vrai pour que le système fonctionne de manière fiable. Prenons le cas où une mise à jour d'application déclenche un nouvel APN jeton; si j'utilisais le plus grand nouveau Twitter-comme l'app, avec les notifications activées, ce qui allait se passer quand je l'ai mise à jour mon application depuis iTunes? Dois-je avoir l'espoir qu'il va continuer à recevoir les notifications même si je n'ai pas exécuter les applications depuis que j'ai "sync" de la mise à jour sur moi périphérique? La loi de modification de l'application ne peut pas affecter le système de l'APN depuis l'OS permet de recevoir des notifications sur votre compte même si vous n'avez pas exécuter la mise à jour de l'app.

Pour être clair, Apple déclare que "L'application doit s'inscrire [avec APN serveurs] à chaque fois qu'il lance et donner son fournisseur actuel jeton". Je suis entièrement d'accord; cela permettra de protéger votre application contre les mauvaises hypothèses ou de situations inhabituelles.

L'une des réponses à sont notifications push jetons unique à travers toutes les applications pour un seul appareil? indique que l'appareil jetons sont uniques par "installation du système d'exploitation"; et que la restauration à partir d'une sauvegarde d'un dispositif permettrait de maintenir le jeton mais le nettoyage d'un périphérique va l'amener à obtenir un nouveau jeton. Ce serait tout à fait compatible avec Apple intentions d'un fonctionnement sans faille et de la vie privée: le nettoyage d'un appareil est suffisamment grave pour que peut-être il justifie d'une nouvelle association, mais un utilisateur de la restauration d'une image après une mise à jour OS voudrait préserver leurs notifications. 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 à niveau, de sorte que ce serait maintenu ma notification de jeton de cohérence. [Edit: la restauration d'une sauvegarde à un différent de l'appareil ne va PAS reproduire le jeton.]

mise en garde: Je n'ai pas définitif de connaissances sur le sujet, juste un peu raisonnable d'expérience de travail avec l'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 une chance à un> appel à des ingénieurs de chez Apple et b> exécuter quelques vrais tests, et j'ai voulu présenter les résultats:

Pour être complet, quand je parle de retour d'un APN de jeton, je suis en supposant que le contexte d'un seul identifiant de lot/de l'application.

Tout d'abord, les ingénieurs de chez Apple a déclaré qu'il ne devrait pas être possible pour les deux périphériques à retour 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 mise à niveau de la séquence de test et les résultats:

  1. Démarrer avec iOS4 installé sur iPhone4; unité de sauvegarde dans iTunes

  2. La mise à niveau vers iOS5
    À partir d'un précédent test, je sais que l'APN jeton est maintenant différente

  3. Restaurer la sauvegarde de l'appareil
    L'APN jeton est désormais la même que l'étape 1.

  4. Réinitialiser iOS (propre appareil)
    L'APN Jeton de changements

  5. Sauvegarde d'un autre téléphone à iTunes et restaurer une sauvegarde sur le périphérique de test; en gros, je suis en train de restaurer le "mal" de sauvegarde, comme si j'étais la commutation des téléphones.
    L'APN jeton de change à nouveau; de plus elle est différente et ne correspond pas aux jetons, soit de l'original de jeton ou de la "cloné" jeton.

  6. Restaurer le "corriger" la sauvegarde de l'appareil.
    L'APN jeton est désormais la même que l'étape 1.

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

À ce point, je suis assez confiant sur le fait que l'APN les jetons ne peuvent pas être dupliqués entre différents appareils; peut-être ce qui s'est passé comme un bogue dans les versions antérieures d'iOS, mais je suis convaincu que iOS5 (et sans doute iOS6) sont de la manipulation de l'APN jetons correctement.


Mise À Jour (Août 2012)

Je viens de réaliser que je n'avais pas ajouté ceci: appareil jetons va changer. L'une des Apple devs partagé avec moi que les jetons ne fait 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 j'ai changer de téléphone tous les ans.]

75voto

malinois Points 4239

À Partir De La Documentation D'Apple ApplePushService

La forme de cette phase de jeton de confiance garantit que seuls les APNs génère le jeton dont il sera plus tard l'honneur, et il peut assurer lui-même 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 restaure les données de sauvegarde sur un nouvel appareil ou réinstalle le système d'exploitation, le dispositif de jeton de changements.

24voto

SG1 Points 1061

OUI, appareil de jetons peut changer.

À tout moment votre application reçoit un jeton, il doit le stocker. Ensuite, à chaque fois qu'un nouveau jeton est reçu (ce qui va arriver, en fin de compte, de comparer le nouveau jeton pour le jeton stocké et, si elles sont différentes:

  1. Mise à jour du périphérique de stockage local, (y compris, éventuellement, à l' nil)
  2. Mise à jour quoi que ce soit sur le périphérique qui utilise le jeton pour être au courant de la nouvelle jeton
  3. Mise à jour des Api qui sont conscients de ce jeton à un nouveau jeton.

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 dispositif de jeton basé sur ce code postal de l'appareil a souscrit, alors vous avez besoin pour passer l' old_token et de la new_token pour le service de sorte qu'elle peut mettre à la livraison.

Ergo, généralement de 100% de l'Api de l'acceptation d'un "dispositif de jeton" doit aussi avoir une certaine sorte d' UPDATE installation pour que le jeton. Pour ne pas construire pour cela est de construire pour mis et remis en non-transmission des notifications.

3voto

not really Jake Points 3440

Il ne faut pas changer, à moins que votre application est restauré sur un nouvel appareil (à ce point, il ne sera pas demandé d'accepter les notifications push de nouveau, et tout simplement de vous envoyer le régime enregistré d'appel à laquelle vous devez accepter le nouveau jeton).

Mais Apple ne garantit pas qu'il ne change jamais (d'où la documentation mentionne jamais). Vous meilleur programme pour le pire et suppose qu'il peut changer un jour. Aussi, l'envoi d'un jeton à votre serveur régulièrement vous permet de supprimer les jetons qui n'ont pas enregistré pour un certain temps, et ont probablement désinstallé votre application ou de la perte de l'intérêt tout à l'heure (et la documentation ne précise pas ce que voulait comportement!).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X