2014-09-17 13 views
6

Ho bisogno di un modo per identificare gli utenti della mia app, ma senza avere un sistema di login.Come identificare utenti unici senza utilizzare un sistema di login (iOS)

Ho esaminato l'UUID che mi dà una parte di una risposta al mio problema, ma poiché non è il vero UDID, non è "davvero unico": se l'utente reinstalla l'app, ottiene un nuovo UUID, e questo non può funzionare per me.

C'è un modo per ottenere il numero di serie del dispositivo o qualcosa di unico nel suo genere? Qualunque cosa del tipo che potevo ottenere dal dispositivo senza che l'utente riempisse alcun campo.

+0

Se l'utente re-installa l'app, ottiene un nuovo UUID, ma è UNICO anche se viene modificato. Quindi puoi fare affidamento su di esso. – Malloc

+0

Sì, ma non posso sapere se è lo stesso utente o no; so che non è mai stato assegnato e non lo sarà mai più, ma non posso dire se è ancora il mio John Doe o no –

+0

Hai provato [identifierForVendor] (https://developer.apple.com/library/ios/documentation/ uikit/reference/UIDevice_Class/Reference/UIDevice.html # // apple_ref/occ/instp/UIDevice/identifierForVendor) o [advertisingIdentifier] (https://developer.apple.com/Library/ios/documentation/AdSupport/Reference/ASIdentifierManager_Ref /ASIdentifierManager.html#//apple_ref/occ/instp/ASIdentifierManager/advertisingIdentifier)? – jMelnik

risposta

1

Dopo un po 'abbiamo deciso che era inaffidabile, impossibile o davvero fastidioso ottenere ID utente univoci senza chiedere loro di riempire un certo tipo di campo e registrarsi effettivamente.

Abbiamo quindi deciso di usare i loro numeri di telefono formattatore criptati utilizzando il seguente processo:

  • chiedere il numero di telefono & codice * internazionale (+1, 32, ecc)
  • verificare l'integrità del telefono numero programatically
  • Se soddisfacente, chiedere all'utente di verificare con avviso
  • Se va bene, inviare il codice pin e attendere la convalida
  • Se validi, iscrizione ai dati base.

nome utente dell'utente è: numero di telefono formattato (32.495.555,556 mila per esempio), e che stringa viene poi hash SHA-256, e alla fine abbiamo fatto salvo che super-lunga stringa al database e riconoscere tutti come quello.

Se avete qualche domanda si prega di chiedere qui così posso dare qualche chiarimento. Se hai un'idea migliore sarei comunque felice di sentirlo.

+0

SHA-256 non è crittografia. – zaph

+0

hai ragione, è hashing. colpa mia –

4

È possibile provare a utilizzare una stringa casuale univoca memorizzata in Memorizzazione valori-chiave in iCloud dell'utente.

Quindi, quando l'utente avvia la tua app per la prima volta, si nota che il suo iCloud non memorizza alcun valore in modo da generarlo e memorizzarlo. E quando l'utente avvierà l'app la prossima volta vedrai questo valore e agirà di conseguenza.

Ciò che è più importante anche se l'utente reinstallerà la tua app o effettuerà il ripristino dei dati di fabbrica del dispositivo, sarai comunque in grado di identificare l'utente in base al valore nel suo iCloud.

+0

forse qualche codice o link per dare un'idea di questo? – Esqarrouth

+0

Proverò a trovare un esempio da uno dei vecchi progetti ... pubblicheremo non appena trovato – Vanger

+1

Siamo spiacenti, ho appena controllato e non posso condividere il codice dal mio vecchio progetto. Ma mi sono ricordato delle librerie che fanno esattamente le cose necessarie: https://github.com/fabiocaccamo/FCUUID Date un'occhiata a questo. – Vanger