Obtenga UDID en iOS 8 +

Necesito get el UDID de mi iPhone para usar en mi aplicación iOS.

Alguna información sobre mi aplicación:

  • Mi aplicación no es para el público y nunca llegará a la tienda , así que puedo usar bibliotecas de terceros. Solo lo utilizarán algunos empleados en el trabajo.

  • Mi dispositivo siempre estará conectado a una Mac, mientras que mi aplicación se está ejecutando.

De la forma en que lo veo, solo hay 2 maneras en que esto se puede lograr.

  1. Use una biblioteca de terceros para get el UDID dentro de mi aplicación iOS.
  2. Dado que el iPhone siempre estará conectado a una Mac mientras se ejecuta mi aplicación, ¿qué hay de get el UDID a través de Mac y transferirlo de alguna manera a mi aplicación en el iPhone?

Cualquier idea sería apreciada. Gracias.

Edit: La pregunta es, ¿conoces bibliotecas de terceros o una mejor manera de que mi aplicación obtenga automáticamente el UDID del iPhone mientras se está ejecutando?

Edición 2: Sé que esto se puede hacer usando solo mi teléfono debido a esta aplicación web: http://get.udid.io/

¿Como funciona esto?

Si está intentando leer el UDID para automatizar algo en Mac, puede usar algo como system_profiler SPUSBDataType para get el UDID, para mi teléfono la input:

  Product ID: 0x12a8 Vendor ID: 0x05ac (Apple Inc.) Version: 7.01 Serial Number: 7bed*********************************33 Speed: Up to 480 Mb/sec Manufacturer: Apple Inc. Location ID: 0x1d110000 / 6 Current Available (mA): 500 Current Requinetworking (mA): 500 Extra Operating Current (mA): 1600 

El Serial Number línea es el UDID (lo he destacado porque soy estúpidamente paranoico).

Tenga en count que, sin el UDID , nunca podría haber tenido la aplicación en el teléfono en primer lugar.

Podría ejecutar un pequeño process daemon en la Mac, leer esta información y crear un service bonjour que brinde la información a los solicitantes, es un SMOP.

Es muy sencillo. Vaya a la Ventana Xcode y select Dispositivos o puede encontrarlo en el Organizador. introduzca la descripción de la imagen aquí

http://www.raywenderlich.com/2915/ios-code-signing-under-the-hood/organizerudid

Desde un vistazo rápido en línea, parece que puedes usar un marco privado llamado libMobileGestalt.dylib .

Después de vincular la biblioteca e importar el encabezado, debería poder hacer algo como esto ( reference ):

 CFStringRef value = MGCopyAnswer(kMGUniqueDeviceID); NSLog(@"Value: %@", value); CFRelease(value); 

En mi Mac, puedo encontrar ese dylib particular aquí:

 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libMobileGestalt.dylib 

Use este código en ios 9

 NSUUID *tempUUID = [[UIDevice currentDevice] identifierForVendor]; NSString *stringForUDID = [tempUUID UUIDString]; NSCharacterSet *notAllowedChars = [[NSCharacterSet characterSetWithCharactersInString:@"1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"] invertedSet]; NSString *resultString = [[stringForUDID componentsSeparatedByCharactersInSet:notAllowedChars] componentsJoinedByString:@""]; NSLog(@"Final string %@", resultString); 

Aquí está el proyecto github que parece correcto para su requerimiento

Aquí está el código que funciona

 #import <Foundation/Foundation.h> #import <CoreFoundation/CoreFoundation.h> #import <liblockdown.h> #include <stdio.h> ... LockdownConnectionRef connection = lockdown_connect(); CFStringRef udid = (CFStringRef)lockdown_copy_value(connection, NULL, kLockdownUniqueDeviceIDKey); CFShow(udid); lockdown_disconnect(connection); 

Utilice esto: [[[UIDevice currentDevice] identifierForVendor] UUIDString];