Используйте команду ioreg и получите полученные результаты. Минималистская реализация:
- (NSString*)getConnectedIphoneUIID
{
NSTask *ioRegTask = [[NSTask alloc] init];
[ioRegTask setLaunchPath:@"/usr/sbin/ioreg"];
[ioRegTask setArguments:[NSArray arrayWithObjects:@"-Src",@"IOUSBDevice",nil]];
NSTask *grepTask = [[NSTask alloc] init];
[grepTask setLaunchPath:@"/usr/bin/grep"];
[grepTask setArguments:[NSArray arrayWithObjects:@"-i", @"usb serial number", nil]];
NSPipe *ioregToGrepPipe = [[NSPipe alloc] init];
[ioRegTask setStandardOutput:ioregToGrepPipe];
[grepTask setStandardInput:ioregToGrepPipe];
NSPipe *outputPipe = [[NSPipe alloc] init];
[grepTask setStandardOutput:outputPipe];
NSFileHandle *outputFileHandle = [[outputPipe fileHandleForReading] retain];
[ioRegTask launch];
[grepTask launch];
NSData *outputData = [[outputFileHandle readDataToEndOfFile] retain];
[ioRegTask release];
[grepTask release];
[outputData release];
NSString *nvcap = [[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding];
return nvcap;
}
Я мог бы добавить больше проверок и дополнительно проанализировать результаты, чтобы убедиться, что это действительно iPhone, на случай, если в списке будет больше устройств с установленным свойством «usb serial number». Проверка свойства «SupportsIPhoneOS» еще раз подтвердит подлинность устройства. Таким образом, я мог бы фактически создать список подключенных устройств iPhone / iPod и получить их UUID из свойства «серийный номер USB».