Identificador único de usuario de IOS en todos los dispositivos

gracias por tomarse el time y el interés de leer esto y, con suerte, de ayudarme.

Necesito un identificador de usuario único para iOS, y lo que quiero decir con un identificador de usuario único es una cadena única que Apple proporciona que es única para el usuario y no para el dispositivo, lo que significa que permanecerá igual en todos los dispositivos. Pensé en Apple ID o algo por el estilo, pero no es posible, porque Apple no lo proporciona (al less no lo sé), pero quiero algo similar a eso.

No puede ser el UDID, porque (además de estar en desuso) no es persistente en todos los dispositivos. Quiero esto para autenticar a un usuario, sin que el usuario tenga que iniciar session o registrarse. Es posible hacerlo, porque algunas aplicaciones lo hacen. No entré ni nada con otro dispositivo, pero me autenticó. Pensé que era con la ID de Apple, pero eso no es posible.

Verifiqué esta respuesta: Identificador de usuario único de iOS . Y parece que podría ser la solución, pero no lo entiendo, ya que no veo cómo sería único para cada nuevo usuario (ser capaz de distinguir entre múltiples usuarios y el mismo usuario, pero en dispositivo diferente)

Realmente aprecio a la gente que lee esto e intenta ayudar. Gracias

PD: uso Appcelerator de Titanium, no IOS SDK de Apple ni nada por el estilo. Pero no es tan importante, solo quiero que el process sea posible con Appcelerator de Titanium

PD: NOTA:

¡Gracias por responder y tan rápido! Lo he leído muchas veces y simplemente no lo entiendo. ¿Podrían ayudarme a entenderlo un poco mejor?

La forma en que lo entiendo es esto.

1.-Cree un UUID (cambia con cada installation) 2.-Guárdelo en el llavero (por lo que yo sé, los valores guardados en el llavero son locales para el dispositivo) con un service pnetworkingeterminado (creo que lo pondré la aplicación id-com.bla.bla-), y también una count pnetworkingeterminada, creo que la dejaré como "usuarios".

Todo esto será local, por lo que cada installation hará esto, con un UUID diferente para cada installation (no es necesario para cada usuario) 3.-Guarde el UUID en NSUserDefaults. 4.-Guarde el UUID en el almacén de datos público de la nube (el UUID en la tienda de datos de la nube, Keychain y NSUserDefaults debería ser el mismo)

Entonces, si se ejecutan 5 instalaciones, la tienda de datos públicos de la nube debería ser así

An Array of 5 values: [ XXXX-EEEEE-FFFFF, SFSDFFWE-WERW-SDFS, XXXX-XXXXX-XXXXX, ZZZZZ-ZZZZ-ZZZZX, XZXZZX-ZXZXZXS-ADADS ] 

5.-Todo esto se ejecutará cada vez que ejecute la aplicación, comprobando primero si hay un valor almacenado en la tienda de la nube pública. Aquí es donde estoy confundido, ¿cómo sabrá un dispositivo diferente cuál UUID es tuyo? Quiero decir, hay 5 UUIDS diferentes para elegir. Tal vez no se debe save en el almacén de datos público, sino en el almacén de datos privado, pero para eso también debería identificar a cada usuario. Aquí es donde me siento tan confundido.

Si no hay un UUID configurado, ejecute los últimos 4 pasos.

Entonces, me siento confundido en el quinto paso, la mayoría de las personas entiende esa solución, sin más explicaciones, entonces debo ser ignorante en la forma en que algo funciona, ¿quizás en los services en la nube? Creo que el problema es que tal vez no entiendo cómo funciona iCloud, y cómo almacena sus valores. Simplemente no entiendo cómo el dispositivo 5º (número aleatorio, podría ser el segundo o 2000º) de X que ejecuta la aplicación, sabrá que el UUID XXX … es el UUID del usuario X y no el UUID del usuario Z.

Gracias de nuevo por contestar tan rápido, pensé que tal vez tendría que esperar un par de días, no un par de minutos. Perdóname por mi ignorancia, soy una especie de noob en este asunto, pero me gustaría aprender. Estuve atrapado en este problema por días

La respuesta a la que te refieres es la forma correcta de identificar a tus usuarios. La solución es save el valor de esa identificación llamada UUID (ID de usuario único), en lugar de UDID (ID de dispositivo único).

La única desventaja de esto, por supuesto, para usted como desarrollador es que el usuario podría eliminar e instalar la aplicación nuevamente y tener una identificación diferente.

Como dijo Daniel, el UUID es la forma correcta de identificar a sus usuarios. Solo quiero agregar esto; dijiste eso

No veo cómo sería único para cada nuevo usuario

Bueno, de acuerdo con este artículo de Wikipedia:

Los UUID generados aleatoriamente tienen 122 bits aleatorios … solo después de generar 1.000 millones de UUID por segundo durante los próximos 100 años, la probabilidad de crear un solo duplicado sería aproximadamente del 50%. La probabilidad de que un duplicado sea de alnetworkingedor del 50% si cada persona en la tierra posee 600 millones de UUID.

Entonces, puedes estar bastante seguro de que el UUID será único para cada usuario.

Además, la dirección MAC está basada en la dirección MAC de su tarjeta ethernet, la timestamp y otra información diversa. Esto agrega a la singularidad del UUID como de acuerdo con esta pregunta sobre el Superusuario:

[Las direcciones MAC] son ​​razonablemente únicas.

  • Los primeros 3 octetos definen al fabricante.
  • Los últimos 3 octetos generalmente se generan en el momento de la grabación de PROM. Depende del fabricante cómo hacen esto.

Obviamente, da 16,777,215 posibles direcciones MAC exclusivas por fabricante. Eso es bastante, así que el fabricante no debería volver a usar uno.

Entonces, básicamente, el UUID agrega un grado adicional de singularidad a la dirección MAC.

En resumen, para sus intenciones y propósitos, el UUID sería perfecto.

¡Espero que esto ayude!

Intereting Posts