J'ai deux applications sur l'iTunes Store - les deux implémentent des notifications Push. Pendant que je testais l'envoi de notifications à ces applications de production, j'ai remarqué qu'un Push destiné à l'application A était intitulé et ouvrait l'application B.
Ces deux applications sont installées sur le même téléphone. J'ai regardé dans le tableau de mon appareil et j'ai vu que les jetons d'appareil (et bien sûr, l'ID d'appareil) répertoriés pour les deux applications étaient les mêmes.
Au besoin, j'utilise deux certificats différents sur le serveur - un pour chaque application. J'ai en quelque sorte supposé que le jeton ou le certificat de l'appareil acheminerait le message vers la bonne application, mais ce n'est clairement pas le cas.
Je peux voir dans NSLog que les jetons envoyés depuis chaque application sont en effet les mêmes.
Le jeton d'appareil doit-il être unique pour chaque application? Dans l'affirmative, vous pouvez savoir comment mon téléphone de test pourrait envoyer le même jeton d'appareil pour les deux applications à mon serveur. Gardez à l'esprit qu'il s'agit de deux applications actuellement sur l'App Store.
Merci pour toute aide!
[~ # ~] note [~ # ~]: c'est une ancienne réponse qui est vrai uniquement pour iOS <= 6. Voir réponse de user1641761 pour l'approche actuelle.
Deviner. Les jetons d'appareil ne sont PAS uniques à l'association téléphone-application. Ils sont uniques au téléphone uniquement. Si vous avez plusieurs applications avec Push sur le même téléphone, elles utiliseront toutes le même jeton d'appareil. Le certificat que vous utilisez pour envoyer la notification dictera à quelle application il va.
iOS 7 gère cela différemment. C'est UNIQUE maintenant.
Veuillez consulter le point 1 de cet article: http://urbanairship.com/blog/2013/10/03/how-ios-7-handles-Push-differently
"Avant iOS 7, le jeton de l'appareil était le même dans toutes les installations d'applications sur un appareil donné. Différentes applications sur votre téléphone, que ce soit Tap Tap Revenge ou USA Today, utilisaient la même adresse, c'est-à-dire le jeton d'appareil, pour acheminer le Push notification. Les informations d'identification de sécurité que vous associez à un message garantiraient qu'elles parviennent à la bonne application. Sur iOS 7, Apple est allé plus loin et s'est assuré que les jetons d'appareil sont désormais différent dans chaque installation d'application. Cela permet de protéger davantage la confidentialité des utilisateurs en supprimant un autre identifiant au niveau du téléphone. "
Voir aussi le jeton d'appareil ios 7 est différent pour le même appareil
Partager ma compréhension et quelques réponses des développeurs de Apple:
Cela dit, souvenez-vous que Apple se réserve le droit de modifier un appareil APNToken comme bon lui semble, alors ne l'utilisez pas pour identifier de manière unique un appareil/utilisateur.
Le jeton d'appareil pour la notification Push est spécifique à l'application. Pas spécifique à l'appareil. Le jeton d'appareil sera différent et unique pour plusieurs applications dans le même appareil.
Selon Apple,
En prenant en charge les notifications à distance, vous pouvez fournir des informations à jour aux utilisateurs de votre application, même lorsque l'application n'est pas en cours d'exécution. Pour pouvoir recevoir et gérer les notifications à distance, votre application doit:
Activez les notifications à distance.
Inscrivez-vous avec Apple Service de notification push (APN) et recevez un jeton d'appareil spécifique à l'application.
Envoyez le jeton d'appareil à votre serveur fournisseur de notifications.
Implémentez la prise en charge de la gestion des notifications distantes entrantes.
Un jeton d'appareil spécifique à l'application est unique au monde et identifie une combinaison app-appareil. Lors de la réception d'un jeton d'appareil d'APN dans votre application, il est de votre responsabilité d'ouvrir une connexion réseau avec votre fournisseur. Il est également de votre responsabilité, dans votre application, de transmettre ensuite le jeton de l'appareil avec toutes les autres données pertinentes que vous souhaitez envoyer au fournisseur. Lorsque le fournisseur envoie ultérieurement des demandes de notification à distance aux APN, il doit inclure le jeton d'appareil, ainsi que la charge utile de notification. Pour plus d'informations à ce sujet, voir Présentation des APN.
Ne cachez jamais les jetons d'appareil dans votre application; au lieu de cela, récupérez-les du système lorsque vous en avez besoin. APNs émet un nouveau jeton d'appareil pour votre application lorsque certains événements se produisent. Le jeton d'appareil est garanti différent, par exemple, lorsqu'un utilisateur restaure un appareil à partir d'une sauvegarde, lorsque l'utilisateur installe votre application sur un nouvel appareil et lorsque l'utilisateur réinstalle le système d'exploitation. La récupération du jeton, plutôt que de s'appuyer sur un cache, garantit que vous disposez du jeton d'appareil actuel nécessaire à votre fournisseur pour communiquer avec les APN. Lorsque vous essayez de récupérer un jeton d'appareil mais qu'il n'a pas changé, la méthode de récupération revient rapidement.
Vous pouvez consulter Apple ici Guide de programmation des notifications locales et distantes
Vous ne pouvez pas utiliser le jeton comme identifiant unique, mais supprimer l'ancien jeton à l'aide de la sauvegarde dans keygen (aide d'iTunes) et supprimer l'ancien jeton et en ajouter un nouveau dans votre base de données.