2012-07-02 23 views
6

gracias por tomarse el tiempo y el interés de leer esto y con suerte ayudarme.IOS Identificador de usuario único en dispositivos

Necesito un identificador de usuario único para IOS, y lo que quiero decir con identificador de usuario único es una cadena única que proporciona Apple que es única para el usuario, no dispositivo, lo que significa que seguirá siendo el mismo en todos los dispositivos. Pensé en el ID de Apple o algo así, pero no es posible, porque Apple no lo proporciona (al menos no que yo sepa), pero quiero algo similar a eso.

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

He comprobado esta respuesta: iOS unique user identifier. Y parece que podría ser la solución, pero no la entiendo, ya que no veo cómo sería única para cada nuevo usuario (pudiendo distinguir entre múltiples usuarios y el mismo usuario, pero dispositivo diferente).

Realmente aprecio a las personas que leen esto y tratan de ayudar. Gracias

PD: Yo uso Titanium's Appcelerator, no Apple's IOS SDK o algo por el estilo. Pero no es tan importante, lo que quieren es que el proceso para poder hacerlo con Appcelerator Titanium

PS: 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.-Crear un UUID (cambia con cada instalación) 2.-Almacenarlo en el llavero (Hasta donde yo sé, los valores guardados en el llavero son locales para el dispositivo) con un servicio predeterminado (I Creo que lo pondré con la aplicación id-com.bla.bla-), y también una cuenta predeterminada, creo que lo dejaré como "usuarios".

Todo será local, por lo que cada instalación lo hará con un UUID diferente para cada instalación (no es necesario para todos los usuarios) 3.-Guarde el UUID en NSUserDefaults. 4.-Guarde el UUID en el almacén de datos público de la nube. (El UUID en Cloud Store, Keychain y NSUserDefaults debe ser el mismo)

Por lo tanto, si se ejecutan 5 instalaciones, el público de la nube almacén de datos 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 ejecuta cada vez que se ejecuta la aplicación, comprobar primero si hay un valor almacenado en la tienda de nube pública. Aquí es donde estoy confundido, ¿cómo sabrá un dispositivo diferente qué UUID es tuyo? Quiero decir, hay 5 diferentes UUIDS para elegir. Tal vez no se supone que debe guardarse en el almacén de datos público, sino en el almacén de datos privado, pero para eso también necesitarí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 confundo en el 5º paso, la mayoría de las personas entiende esa solución, sin más explicaciones, así que debo ser ignorante en la forma en que algo funciona, ¿tal vez los servicios 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 quinto dispositivo (número aleatorio, podría ser el 2.o o 2.000) 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 responder 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 un novato en este asunto, pero me gustaría aprender. Estado atascado en este problema por días

Respuesta

2

La respuesta a la que se refirió es la forma correcta de identificar a sus usuarios. La solución es guardar el valor de esa identificación llamada UUID (ID de usuario único), en oposición a un UDID (ID de dispositivo único).

El único inconveniente de esto para usted como desarrollador es que el usuario podría eliminar e instalar la aplicación nuevamente y tener una ID diferente.

+0

Por favor, mira mi nota ^. Por cierto, gracias por responder! :) – Sismetic

2

Como dijo Daniel, el UUID es la forma correcta de identificar a sus usuarios. Solo quiero agregar esto; Usted ha dicho que

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

Bueno, accordint a este artículo de Wikipedia:

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

Así que puede estar bastante seguro de que el UUID será exclusivo de cada usuario.

Además, la dirección MAC se basa en la dirección MAC de su tarjeta ethernet, la marca de tiempo y otra información miscelánea. Esto se suma a la singularidad del UUID según la pregunta this en Superusuario:

[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 lo hacen.

Eso obviamente da 16.777.215 direcciones MAC únicas posibles por fabricante. Eso es bastante, por lo que el fabricante no debe volver a usar uno.

Básicamente, el UUID agrega un grado adicional de exclusividad a la dirección MAC.

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

Espero que esto ayude!

+0

Por favor, mira mi nota ^. Por cierto, gracias por responder! :) – Sismetic

+0

@Sismetic - No hay problema. Todos comenzamos así. – pasawaya

+0

Gracias por ser tan comprensivo :) Me encanta SO: P. ¿Podría ayudarme a comprender mejor el proceso? – Sismetic

Cuestiones relacionadas