Es posible descubrir el identificador del dispositivo iOS, utilizando Xcode. Necesito que cada aplicación descargada tenga un identificador único. Pensé en generar números aleatorios, ¡pero podrían generar el mismo número más de una vez! ¿Alguien tiene una idea?¿Crees un identificador único para dispositivos iOS?
Respuesta
he encontrado una manera muy simple de hacer esto, se hace así:
Prensa COMANDO +N y seleccione Cocoa Touch Class
.
Nombre su clase NSString+UUID
y pulse siguiente.
A continuación, reemplace el código en NSString+UUID.h
con:
@interface NSString (UUID)
+ (NSString *)uuid;
@end
Y en NSString+UUID.m
con:
@implementation NSString (UUID)
+ (NSString *)uuid {
NSString *uuidString = nil;
CFUUIDRef uuid = CFUUIDCreate(NULL);
if (uuid) {
uuidString = (NSString *)CFUUIDCreateString(NULL, uuid);
CFRelease(uuid);
}
return [uuidString autorelease];
}
@end
Ahora, cuando se necesita para obtener el UUID (es decir: almacenar usando NSUserDefaults cuando su carga de aplicaciones):
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSString *userIdentifierKey = @"user-identifier"
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:userIdentifierKey] == nil) {
NSString *theUUID = [NSString uuid];
[defaults setObject:theUUID forKey:userIdentifierKey];
[defaults synchronize];
}
// additional application setup...
return YES;
}
En la clase UIDevice apple ha proporcionado el método uniqueIdentifier pero ahora está obsoleto (para iOS5), en el método documentation encontrará cómo puede usar uniqueIdentifier.
probar esto
- (NSString *)getDeviceID
{
NSString *uuid = [self gettingString:@"uniqueAppId"];
if(uuid==nil || [uuid isEqualToString:@""])
{
CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
if (theUUID)
{
uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
[self savingString:@"uniqueAppId" data:uuid];
[uuid autorelease];
CFRelease(theUUID);
}
}
return uuid;
// this is depreciated
// UIDevice *device = [UIDevice currentDevice];
// return [device uniqueIdentifier];
}
probar este UIDevice-with-UniqueIdentifier-for-iOS-5, utiliza dirección MAC identificador como único del dispositivo.
¿Sabe si el MAC addr permanece constante en todo Wi-Fi y conexiones celulares, ¿o cambia cuando el usuario cambia de un tipo de red a la otra? – Crashalot
iOS6 proporciona un nuevo reemplazo [[[UIDev hielo currentDevice] identifierForVendor] UUIDString]
El valor de esta propiedad es el mismo para aplicaciones que vienen de la mismo proveedor que se ejecuta en el mismo dispositivo. Se devuelve un valor diferente para las aplicaciones en el mismo dispositivo que provienen de diferentes proveedores, y para las aplicaciones en diferentes dispositivos, según el proveedor.
Puede crear una categoría de UIApplication, UIDevice o como usted prefere como esto (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 la función
NSString* UUID() {
CFUUIDRef uuidRef = CFUUIDCreate(NULL);
CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
CFRelease(uuidRef);
return (__bridge NSString *)uuidStringRef;
}
esto genera un identificador único almacenado en el NSUserDefault para ser reutilizado cada vez que la aplicación lo necesite - Este identifie r se relacionará únicamente con las instalaciones de la aplicación, no con el dispositivo, pero se puede usar, por ejemplo, para rastrear el número de dispositivos suscritos, el servicio APN, etc.
Después de que se puede utilizar de esta manera:
NSString *uuid = [[UIApplication sharedApplication] getUUID];
Utilice esta: [[UIDevice currentDevice] identifierForVendor]
Para más información echa un vistazo a esta answer
- 1. IOS Identificador de usuario único en dispositivos
- 2. Identificador único para NSManagedObject
- 3. Identificador único para elementos HTML
- 4. Identificador único para teléfono Android
- 5. localmente único identificador
- 6. identificador único de php para clientes
- 7. Identificador único para una aplicación de iPhone
- 8. ¿Hay algún identificador único para wpf UIElement?
- 9. Generando un identificador global único en Java
- 10. ¿Cómo obtener un identificador de JVM único?
- 11. Identificador único de una Mac?
- 12. Cuál es el identificador único para un elemento DOM/nodo
- 13. Identificador único para safari móvil y en la aplicación en iOS
- 14. ¿Cómo compilar JavaScriptCore para dispositivos con iOS?
- 15. EKEventstore e identificador de calendario único
- 16. SQL Server identificador único equivalente en C#
- 17. Identificador de archivo único en Windows
- 18. Use varias columnas como identificador único para MySQL
- 19. ¿La manera correcta de tener un identificador único en Python?
- 20. ¿Cómo obtener un identificador único de OpenID/Google?
- 21. ¿Qué es un buen identificador de PC único?
- 22. dispositivos IOS como servidor web
- 23. Comunicación entre dos dispositivos iOS
- 24. Obtenga el identificador único de un subproceso en Java 1.4
- 25. ¿Hay un identificador único de objeto en Python?
- 26. Sensor Fusion en dispositivos iOS
- 27. ¿Es mejor usar un identificador único (GUID) o un bigint para una columna de identidad?
- 28. ¿Crees un complemento o una gema?
- 29. Identificador de gestos de barrido adecuado iOS
- 30. Cargando la secuencia de comandos JS solo para dispositivos iOS?
varias soluciones ya previstas en el SO, probar este Hilo http://stackoverflow.com/questions/6993325/uidevice-uniqueidentifier-deprecated-what-to-do-now –