UUID unique et Push

TerflogagTerflogag Membre
septembre 2016 modifié dans API UIKit #1

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

  • Je crois que c'est volontaire la non mise à  jour. On ne peut plus avoir accès à  l'UDID que par iTunes avec connection de l'appareil au Mac par câble USB. Ou alors ça aurait changé récemment.
  • TerflogagTerflogag Membre
    septembre 2016 modifié #3


    Je crois que c'est volontaire la non mise à  jour. On ne peut plus avoir accès à  l'UDID que par iTunes avec connection de l'appareil au Mac par câble USB. Ou alors ça aurait changé récemment.




    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 :/ 


  • CéroceCéroce Membre, Modérateur
    septembre 2016 modifié #4

    C'est indispensable à  la gestion du push :/

    En quoi ?

    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.
  • TerflogagTerflogag Membre
    septembre 2016 modifié #5


    En quoi ?


    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. 


  • CéroceCéroce Membre, Modérateur
    septembre 2016 modifié #6

    -> On se retrouve donc avec un device qui reçoit en double les notifications !

    Avez-vous constaté ce problème ??? Parce que je pense que si le token a changé, alors le device n'est plus associé avec sur l'APNS.

    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).
  • TerflogagTerflogag Membre
    septembre 2016 modifié #7


    Vous avez constaté ce problème ??? Parce que je pense que si le token a changé, alors le device n'est plus associé avec.


    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.


Connectez-vous ou Inscrivez-vous pour répondre.