usando un identificador único de iPhone o dispositivo iOS

Estoy haciendo una request de reserva de la aplicación. Necesito enviar una key única desde el dispositivo iPhone / iOS al server.

¿Puedo usar GUID de iPhone? es decir, [UIDevice uniqueIdentifier] ¿Es legal? ¿Los medios legales la aceptarán Apple?

¿Cuál es la mejor propiedad para identificar de manera única un iPhone o dispositivo iOS? Si no, entonces ¿qué sería la otra forma de identificar un dispositivo de manera exclusiva?

En realidad necesito reserva de reference no. generado por la aplicación. debe ser único.

Cree un UUID: una cadena que contiene un UUID. El formatting estándar para los UUID representados en ASCII es una cadena puntuada por guiones, por ejemplo, 68753A44-4D6F-1226-9C60-0050E4C00067.

+ (NSString *)newUUID { CFUUIDRef theUUID = CFUUIDCreate(NULL); CFStringRef string = CFUUIDCreateString(NULL, theUUID); CFRelease(theUUID); return (NSString *)string; } 

Apple anunció que en mayo de 2013 comenzará a rechazar la aplicación que usa el UDID para rastrear el comportamiento del usuario

esta es una alternativa al UDID:

Puede crear una categoría de UIApplication, UIDevice o como prefiera así (ejemplo ARC)

 @interface UIApplication (utilities) - (NSString*)getUUID; @end @implementation UIApplication (utilities) - (NSString*)getUUID { NSUserDefaults *standardUserDefault = [NSUserDefaults standardUserDefaults]; static NSString *uuid = nil; // try to get the NSUserDefault identifier if exist if (uuid == nil) { uuid = [standardUserDefault objectForKey:@"UniversalUniqueIdentifier"]; } // if there is not NSUserDefault identifier generate one and store it if (uuid == nil) { uuid = UUID (); [standardUserDefault setObject:uuid forKey:@"UniversalUniqueIdentifier"]; [standardUserDefault synchronize]; } return uuid; } @end 

UUID () es esta function

 NSString* UUID () { CFUUIDRef uuidRef = CFUUIDCreate(NULL); CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef); CFRelease(uuidRef); return (__bridge NSString *)uuidStringRef; } 

esto genera un identificador único almacenado en NSUserDefault para reutilizarlo siempre que la aplicación lo necesite: este identificador único relacionado con la aplicación no se instala en el dispositivo, pero se puede usar, por ejemplo, para rastrear el número de dispositivos suscritos al service APN, etc. …

Después de eso puedes usarlo de esta manera:

  NSString *uuid = [[UIApplication shanetworkingApplication] getUUID]; 

No hay un GUID que conozco, ¿te refieres a [UIDevice uniqueIdentifier] ? Puede usar eso, pero se está desaprobando en iOS 5, por lo que es mejor que busque otros medios para identificar sus dispositivos.

No me referiré a lo que está bajo NDA, pero pruebe esta solución , ya que el autor anuncia que "Genera un identificador único basado en la dirección Mac del dispositivo en combinación con el identificador del package". Sin embargo, tenga en count que los dispositivos jailbroken pueden cambiar su dirección Mac AFAIK.

Con iOS 6 vino el identificador ForVendor, puede usarse en múltiples aplicaciones del mismo proveedor y, aunque identifica un dispositivo, puede usarlo en combinación con el almacén de valores key de iCloud, por ejemplo, para identificar al usuario en todos los dispositivos.

Ole Begemnn lo explica todo muy bien en su blog: http://oleb.net/blog/2012/09/udid-apis-in-ios-6/