UUID, uniqueIdentifier et iOS 5

2

Réponses

  • AliGatorAliGator Membre, Modérateur
    Oui d'ailleurs je lui ai mis un commentaire sur github pour lui indiquer que ça serait bien qu'il le rajoute dans son README
  • On peut l'utiliser safe dans une app amenée à  être publiée ?
  • 'Ceetix' a écrit:


    On peut l'utiliser safe dans une app amenée à  être publiée ?




    Je te dis ça bientôt ^^
  • JegnuX le sacrifié ! Cool ^^
  • AliGatorAliGator Membre, Modérateur
    Bah je vois pas pourquoi ça poserait problème : non seulement il respecte les préco d'Apple et crée un UUID maison, mais en plus il fait les choses propres et utilise la keychain pour le stocker pour qu'il soit persistant entre réinstallations.



    J'ai parcouru son code vite fait, moi ça m'a convaincu (contrairement à  OpenUDID qui est d'un complexe assez violent tout ça pour pouvoir partager un UDID entre plusieurs applis par un protocole un peu bizarre qui utilise des slots et de la redondance et tout... buldozer pour tuer la mouche quoi)
  • avril 2012 modifié #37
    Donc on est d'accord sur le cas de openUDID.

    ARRETEZ AVEC "LA" KEYCHAIN çA ME REND FOU



    @Aligator:

    Justement, JegnuX a dit qu'il avait utilisé OpenUDID (cf page 1).. ou alors j'ai râté le train en marche.
  • AliGatorAliGator Membre, Modérateur
    Heu pourquoi tu me parles de JegnuX qui a utilisé OpenUDID ?

    J'ai pas reparlé de JegnuX moi... juste parlé de ce que j'avais utilisé moi, et pourquoi, suite à  mes comparaisons...
  • avril 2012 modifié #39
    Si on lit les derniers posts ça porte à  confusion alors.




    • @Ceetix: [font=helvetica, arial, sans-serif]On peut l'utiliser safe dans une app amenée à  être publiée ?[/font]

    • @Jegnux: [font=helvetica, arial, sans-serif]Je te dis ça bientôt ^^[/font]

    • @Aligator: [font=helvetica, arial, sans-serif]Bah je vois pas pourquoi ça poserait problème[/font]





    [font=helvetica, arial, sans-serif]
    [/font]
  • AliGatorAliGator Membre, Modérateur
    avril 2012 modifié #40
    Ok mais c'est JegnuX qui porte à  confusion, pas moi image/tongue.png' class='bbc_emoticon' alt=':P' />

    Parce que tous les messages d'avant parlent de BPXL :

    - @Kixxx cite @Ceetix qui parle de BPXL, et dis qu'il arrive pas à  compiler

    - Je lui répond que c'est parce qu'il manque Security.framework (on parle toujours de BPXL là , du coup, forcément)

    - @Ceetix répond "On peut l'utiliser safe dans une appli" : il parlait déjà  de BPXL et pas OpenUDID et pose la question après plusieurs messages causant de BPXL, donc je suppose qu'il parle toujours de lui



    C'est là  que si JegnuX utilise OpenUDID et pas BPXL et répond à  @Ceetix qu'il va tester sous peu, il y a confusion car JegnuX va tester OpenUDID alors que Ceetix et tous les autres messages avant parlaient de BPXL image/tongue.png' class='bbc_emoticon' alt=':P' />



    (nan mais !)
  • Je parle de BPXL aussi. C'est Louka le porte à  confusion.
  • SmySmy Membre
    'ldesroziers' a écrit:


    ARRETEZ AVEC "LA" KEYCHAIN çA ME REND FOU




    Après Draken avec son Core Image, voici Louka et sa keychain...
  • AliGatorAliGator Membre, Modérateur
    image/grin.gif' class='bbc_emoticon' alt=';D' />

    @Louka t'as vu profites-en on te donne une excuse en or pour prendre des vacances image/thumbsup.gif' class='bbc_emoticon' alt='' />
  • avril 2012 modifié #44
    Bien non, puisque je cite:


    'JegnuX' a écrit:


    Oh collègue, j'utilise cette classe pour le push dans les deux apps Total ^^




    Et je parlais de OpenUDID à  ce moment là .

    Donc soit JegnuX n'a pas du tout compris que je parlais de openUDID, soit il parlait d'une autre app. Dans tous les cas ça prête quand même à  confusion.
  • 'ldesroziers' a écrit:


    Et je parlais de OpenUDID à  ce moment là .

    Donc soit JegnuX n'a pas du tout compris que je parlais de openUDID, soit il parlait d'une autre app. Dans tous les cas ça prête quand même à  confusion.




    Oh bah il se pourrait que je n'ai pas bien vu le message de igreg à  ce moment là ... image/rolleyes.gif' class='bbc_emoticon' alt='::)' />
  • Je viens de recevoir un mail de SmartAdServer qui eux ont choisi http://www.secureudid.org/
  • Bonjour à  tous,


     


    Je relance le sujet.


    J'utilise easy apns et cette histoire de "unique identifier me pose" problème" , j'ai essayé le code ci dessous (celui que aliGator a posté en début de sujet):



    NSString *deviceUuid;
    if ([dev respondsToSelector:@selector(uniqueIdentifier)])
    deviceUuid = dev.uniqueIdentifier;
    else {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    id uuid = [defaults objectForKey:@deviceUuid];
    if (uuid)
    deviceUuid = (NSString *)uuid;
    else {
    CFStringRef cfUuid = CFUUIDCreateString(NULL, CFUUIDCreate(NULL));
    deviceUuid = (__bridge NSString *)cfUuid;
    CFRelease(cfUuid);
    [defaults setObject:deviceUuid forKey:@deviceUuid];
    }
    }

    à  la place de:



    NSString *deviceUuid = dev.uniqueidentifier;

    mais l'appli ne passe toujours pas la validation..


     


    Quelqu'un a t'il réussi à  corriger ce problème aves easyapns?


    Merci à  tous.

  • Il semble que la recommandation maintenant soit d'utiliser identifierForVendor de UIDevice, disponible depuis iOS 6.0.


  • oui j'ai essayer mais quand j'utilise ce principe je n'ai aucune données rentrées dans ma base de données ...je ne sais pas pourquoi , 


  • Voilà  ce que j'ai fait avec la même problématique :





    NSString *deviceUuid = [BPXLUUIDHandler UUID];


        /*


    if ([dev respondsToSelector:@selector(uniqueIdentifier)])


    deviceUuid = dev.uniqueIdentifier;


    else {


    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];


    id uuid = [defaults objectForKey:@deviceUuid];


    if (uuid)


    deviceUuid = (NSString *)uuid;


    else {


    CFStringRef cfUuid = CFUUIDCreateString(NULL, CFUUIDCreate(NULL));


    deviceUuid = (__bridge NSString *)cfUuid;


    CFRelease(cfUuid);


    [defaults setObject:deviceUuid forKey:@deviceUuid];


    }


    }*/


        


     


     


     


    Et ça juste marche.

  • merci je suis entrain d'essayer par contre j'ai des erreurs:



    Undefined symbols for architecture armv7:
    "_kSecReturnAttributes", referenced from:
    +[BPXLUUIDHandler UUID] in BPXLUUIDHandler.o
    +[BPXLUUIDHandler reset] in BPXLUUIDHandler.o
    "_SecItemCopyMatching", referenced from:
    +[BPXLUUIDHandler UUID] in BPXLUUIDHandler.o
    +[BPXLUUIDHandler reset] in BPXLUUIDHandler.o
    "_kSecClass", referenced from:
    _CreateKeychainQueryDictionary in BPXLUUIDHandler.o
    "_kSecReturnData", referenced from:
    +[BPXLUUIDHandler UUID] in BPXLUUIDHandler.o
    "_kSecAttrService", referenced from:
    _CreateKeychainQueryDictionary in BPXLUUIDHandler.o
    "_kSecClassGenericPassword", referenced from:
    _CreateKeychainQueryDictionary in BPXLUUIDHandler.o
    "_kSecAttrAccount", referenced from:
    _CreateKeychainQueryDictionary in BPXLUUIDHandler.o
    "_kSecValueData", referenced from:
    +[BPXLUUIDHandler storeUUID:] in BPXLUUIDHandler.o
    "_kSecAttrAccessGroup", referenced from:
    _CreateKeychainQueryDictionary in BPXLUUIDHandler.o
    "_SecItemAdd", referenced from:
    +[BPXLUUIDHandler storeUUID:] in BPXLUUIDHandler.o
    "_SecItemDelete", referenced from:
    +[BPXLUUIDHandler reset] in BPXLUUIDHandler.o
    "_SecItemUpdate", referenced from:
    +[BPXLUUIDHandler storeUUID:] in BPXLUUIDHandler.o
    ld: symbol(s) not found for architecture armv7
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    il y a t'il autre chose à  installer à  part les 2 fichiers h et m?

  • en fait il fallait installer le framework "security".


     


    Bon toujours rien ne rentre dans ma base donnée.


     


    Avant j'ai un numero de device à  40 chiffres mais la je pense que le problème est que maintenant j'ai un numero de device comme cela:


     


    TBC50697-8UB5-4F02-8C90-2BD1E55L75D9


     


    tu n'as pas recontré ce robléme avec easyapns?

  • De mon côté ça marche, je stocke la chaine avec les tirets dans la base.


    En fait easyapns vérifie juste dans le code php que la chaine a une taille inférieure à  40 caractères.


    Après il y a le schema de la base de donnée, il est réglé sur CHAR(40) et ça passe.


     


    En fait, l'intérêt de stocker cette chaine s'est reduit depuis que ce n'est plus le vrai UUID.


    Tu pourrais t'en passer.


     


    Les autres champs sont-ils bien stockés ?

  • cela marche très bien en mode développement quand je met "unique identifier" mais apple le  refuse evidemment .


    il ne veut juste pas stocker dans la base quand je le change avec la méthode que tu m'as donné.


    je vais suivre tes conseils et m'en passer , je vais voir ce que cela donne.


    Mais c'est bizarre que cela fonctionne pas.


    Merci en tout cas pour tous ses bons conseils.


  • c'est vraiment tres bizarre j'ai un enregistrement seulement si je laisse:



    NSString *deviceUuid=dev.uniqueIdentifier;

    si je l'enlève ou si je me sert de ta méthode , je n'ai pas d'enregistrement et le returndata ( NSLog(@Return Data: %@", returnData);) n'est pas vide.


     


    bref un peu galère cette histoire..


  • voila l'erreur que j'obtiens:


     


    Fatal error: Device ID must be 40 characters in length


     


    donc cela vient de la table, le numero du device doit obligatoirement faire 40 caracteres d'ou l'erreur.


    tu n'as pas eu ce problème alors, j'ai fais regarder dans le code php


  • L'erreur est généré par le code php dans le fichier class_apns.php :



     else if(strlen($deviceuid)!=40) $this->_triggerError('Device ID must be 40 characters in length.', E_USER_ERROR);

    dans ma version de ce fichier, je n'ai pas le même code (j'ai <40 et pas != 40), j'ai dû faire la modif sans tracer (c pas bien).


     


    Donc tu modifies ce fichier et tout ira bien.


     


    J'ai trouvé la solution en cherchant le message d'erreur sur google :


    "easyapns Device ID must be 40 characters in length"

  • AliGatorAliGator Membre, Modérateur
    Met à  jour easyapns sur ton serveur. ça fait genre plus d'un an qu'ils l'ont mis à  jour pour corriger ce cas des 40 caractères (mon post d'avant date d'avril 2012 quand même, ça ait plus d'un an et demi que les UDID sont dépréciés et même interdits par Apple et que tous les frameworks se sont mis à  jour, mais si tu utilises encore une version de mathusalem avec sa limitation de l'époque et le champ dans la base limité à  40, c'est sur tu ne vas pas aller loin !
  • Note que pour avoir la dernière version, il faut aller sur github, le site easyapns.com n'étant pas à  jour.


  • c'est bon j'ai effectivement corriger dans le fichier le cas des 40 caractères, ça fonctionne très bien , merci à  tous.


    J'ai une autre question, j'ai donc mis à  jour mon appli mais j'avais déjà  une centaines d'appli rentrer dans ma base de données avec un numero de device (uniqueIdentifier).


    Seront ils pris en compte lors de mes envois de notifications car les personnes qui font effectuer la mise en jour seront en doublon dans ma base avec 2 numéro de device différents du coup.


    Dois je vider ma base de données et quand ils feront la mise a jour leur device seront dans ma base sans doublon.

  • up pour la base de données, dois-je la vider?


    merci


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