2012-03-11 15 views
5

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?

+2

varias soluciones ya previstas en el SO, probar este Hilo http://stackoverflow.com/questions/6993325/uidevice-uniqueidentifier-deprecated-what-to-do-now –

Respuesta

4

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; 
} 
4

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.

0

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]; 
} 
3

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.

Ver: https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/doc/uid/TP40006902-CH3-SW49

1

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]; 
0

Utilice esta: [[UIDevice currentDevice] identifierForVendor]

Para más información echa un vistazo a esta answer

Cuestiones relacionadas