UUID unique et Push
Bonjour à tous,
Je suis à la recherche d'un moyen simple pour récupéré un identifiant unique par device. Mon service de backend utilise cet identifiant afin d'envoyer les notifications push. Ce qui permet par exemple de pouvoir envoyer du push sur plusieurs device ayant le même compte de connecté.
Après plusieurs recherches il semble que tous les moyens fournis par Apple ne sont pas fiable/unique (après réinstallation de l'application par exemple), et qu'il est nécessaire de stocker l'UUID dans le keychain.
Comment faite vous cela de votre coté ?
J'ai trouvé ceci sur le forum : https://github.com/blackpixel/BPXLUUIDHandler, mais le projet n'est plus maintenu depuis quelques années maintenant...
Avez vous d'autres solutions ?
Merci, bonne journée !
Réponses
C'est effectivement volontaire. C'est pour cela que je suis à la recherche d'un moyen d'identifié de ma manière unique un device...
En le stockant dans le keychain normalement pas de soucis il me semble ?
Sauf en cas de restauration, mais dans ce cas pas de soucis normalement si on ne le récupère pas.
C'est indispensable à la gestion du push
Quand l'appli s'enregistre pour recevoir les notifications push, ça renvoie le Token Identifier. C'est la seule chose nécessaire pour envoyer des notifications.
Tu l'envoies à ton serveur, il l'associe au compte de l'utilisateur, et c'est tout.
Le Token Identifier peut changer, et alors ? Si tu le mets à jour sur le serveur, ça ne change rien.
Yes de ce coté là tout fonctionne parfaitement.
Sauf que coté serveur, le push est envoyé sur toutes les sessions associé à un compte (avec un check sur l'identifiant des devices). Par exemple si une personne est connecté à un iPhone et un iPad avec le même compte, le push sera envoyé sur les deux devices. Pas de soucis ça marche.
Maintenant imaginons que la personne désinstalle l'application, puis la réinstalle. Le serveur n'est pas au courant de cela, et a la prochaine connexion après ré installation, une nouvelle session est créé, avec un nouveau token de push.
-> On se retrouve donc avec un device qui reçoit en double les notifications !
Une solution seraient donc de stocker dans le keychain un identifiant "unique", de façon à ce que meme en cas de désinstallation cela ne pose pas soucis.
Note que le serveur doit aussi aller voir régulièrement la liste des tokens à nettoyer. Je n'ai pas le temps d'aller voir dans la doc, mais je me rappelle bien que c'est marqué dedans. (Quoi qu'il y a eu pas mal de modifs avec les notifications push sous iOS 9).
Oui nous avons constaté le soucis justement... (utilisation de GCM) A priori à cause d'une désinstallation, puis ré installation.
Car actuellement le serveur vérifie l'identifiant du device (que je pensais unique jusqu'a ce soucis) pour envoyer le push..
Utilisez l'API v2 d'Apple pour l'envoi des notifications push, et vous saurez si un token ne correspond plus à un device valide (réinstallation ou suppression de l'app): L'envoi d'une notif se solde dans ce cas là par un code de retour "410". Le token peut alors être supprimé de la base.
Donc au pire l'overhead consistera en l'envoi d'une seule notification inutile par device réinstallé/ayant désinstallé l'application.
De toute façon, il n'existe aucun moyen d'obtenir un identifiant fixe.