perdido online esta donde desde descargar buscar iphone ios objective-c uniqueidentifier

online - descargar buscar mi iphone



Quiero una cadena de identificación única que detecte el dispositivo iPhone(como UDID)? (5)

Como dijo @danypata, use el identifierForVendor como se describe en esta respuesta .

O, alternativamente, puede utilizar la publicidad NSUDID como se describe aquí .

Sin embargo, estos pueden volver como nulos o cambiar con el tiempo. El usuario puede optar por no seguir el seguimiento del anunciante, por lo que no recomiendo usarlo para hacer un seguimiento de los usuarios para sus propios fines.

Supongo que depende de por qué estás rastreando su dispositivo en primer lugar. Mi actitud es que no necesito rastrear los hábitos de los usuarios PARA SIEMPRE. Solo necesito rastrear las tendencias generales de los usuarios y alguna información de DAU. Así que invento mi propio UDID, que cambiará en cada instalación de la aplicación. En mi próxima versión usaré el identifierForVendor y si es NIL lo haré yo mismo.

Así es como hago mi propio:

// this makes a device id like: UUID = 89CD872F-C9AF-4518-9E6C-A01D35AF091C // except that I''m going to attach some other attributes to it like the OS version, model type, etc. // the UUID that is stored in user defaults will be like the one above.. but the device id that gets returned // from this function and sent to [my online system] will have the extra info at the end of the string. - (void) createUUID { // for collecting some data.. let''s add some info about the device to the uuid NSString *thisDeviceID; NSString *systemVersion = [[UIDevice currentDevice]systemVersion]; NSString *model = [[UIDevice currentDevice]model]; NSString *retinaTag; if (retina) { retinaTag = @"Retina"; } else { retinaTag = @""; } NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; id uuid = [defaults objectForKey:@"uniqueID"]; if (uuid) thisDeviceID = (NSString *)uuid; else { CFStringRef cfUuid = CFUUIDCreateString(NULL, CFUUIDCreate(NULL)); thisDeviceID = (__bridge NSString *)cfUuid; CFRelease(cfUuid); [defaults setObject:thisDeviceID forKey:@"uniqueID"]; } //NSLog(@"UUID = %@", thisDeviceID); MYthisDeviceID = [NSString stringWithFormat:@"%@-%@-%@-%@",thisDeviceID,systemVersion,retinaTag,model]; //NSLog(@"UUID with info = %@", MYthisDeviceID);

}

Luego, la única cadena que se envía a mi servidor tiene un UDID y especificaciones sobre el dispositivo y el sistema operativo. Hasta que el usuario elimine por completo y vuelva a cargar la aplicación, las estadísticas muestran el uso en ese dispositivo. Para no obtener doble udids si se actualizan a un nuevo sistema operativo, puede recortar solo a la porción de udid.

No uso la dirección de mac en absoluto porque entendí que Apple no quería que lo hiciéramos. Aunque no puedo encontrar ninguna documentación que lo diga en este momento.

ACTUALIZACIÓN para iOS7:

Ahora uso este código que funciona bajo io6 y io7:

NSString *globalDeviceID; - (void) createUUID { NSString *thisDeviceID; NSString *systemVersion = [[UIDevice currentDevice]systemVersion]; NSString *model = [[UIDevice currentDevice]model]; NSString *retinaTag; if (retina) { retinaTag = @"Retina"; } else { retinaTag = @""; } NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; id uuid = [defaults objectForKey:@"deviceID"]; if (uuid) thisDeviceID = (NSString *)uuid; else { if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) { thisDeviceID = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; } else { CFStringRef cfUuid = CFUUIDCreateString(NULL, CFUUIDCreate(NULL)); thisDeviceID = (__bridge NSString *)cfUuid; CFRelease(cfUuid); } [defaults setObject:thisDeviceID forKey:@"deviceID"]; } NSLog(@"UUID = %@", thisDeviceID); globalDeviceID = [NSString stringWithFormat:@"%@-%@-%@-%@",thisDeviceID,systemVersion,retinaTag,model]; NSLog(@"UUID with info = %@", globalDeviceID); }

Quiero una cadena de identificación única para dispositivos iPhone en lugar de UDID y MAC .

1. Obtener UDID y MAC están en desuso por Apple.
2. Podemos usar UUID pero se cambiará después de reinstalar la aplicación o eliminar la aplicación.

Quiero cualquier valor único de dispositivo que permanezca igual después de reinstalar la aplicación O eliminar O actualizar la versión de iOS.


Lo que puede hacer es obtener un identificador único utilizando [[UIDevice currentDevice] identifierForVendor] o cualquier otro generador de identificadores únicos. Después de eso, debe almacenar ese valor en el llavero usando KeychainItemWrapper y usar. Una vez que almacena un valor en el llavero, no se eliminará incluso después de eliminar y volver a instalar la aplicación.

Aquí hay una guía para el acceso al llavero - Link


O simplemente use lo siguiente y guárdelo en NSUserDefaults

[NSProcessInfo processInfo].globallyUniqueString

Identificación global para el proceso. La ID incluye el nombre del host, la ID del proceso y una marca de tiempo, lo que garantiza que la ID sea única para la red.


Tratar

[[UIDevice currentDevice] identifierForVendor];

Es de iOS 6.


Yo sugeriría echar un vistazo a OpenUDID .

Creo que debajo utiliza la dirección MAC, por lo que si tiene razón al decir que el acceso a la dirección MAC está obsoleto, entonces probablemente no será de mucha utilidad, sin embargo, creo que no sería razonable que Apple eliminara el acceso; La dirección MAC tiene otras aplicaciones que solo identifican el dispositivo para los fines de UDID