iOS 10中是否有新的设备标识符?

时间:2016-06-29 13:41:09

标签: ios ios10

有没有人找到一种在iOS 10中唯一识别设备的新方法?我还没有看到任何文件提到该领域的变化,我想在我向供应商提交标识符之前询问。

1 个答案:

答案 0 :(得分:1)

如果您要提交到商店,您剩下的唯一真实标识符是AdSupport框架的广告标识符。

如果你想进一步沿着兔子洞走下去并可能进入一些不安全的API领域,你可以挂钩到IOKit并尝试在设备上获取电池标识符。这取自{Agioiello UIDevice - (NSString *)batteryID { void *IOKit = dlopen("/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit", RTLD_LAZY); NSParameterAssert(IOKit); mach_port_t *kIOMasterPortDefault = dlsym(IOKit, "kIOMasterPortDefault"); NSParameterAssert(kIOMasterPortDefault); CFMutableDictionaryRef (*IOServiceNameMatching)(const char *name) = dlsym(IOKit, "IOServiceNameMatching"); NSParameterAssert(IOServiceNameMatching); mach_port_t (*IOServiceGetMatchingService)(mach_port_t masterPort, CFDictionaryRef matching) = dlsym(IOKit, "IOServiceGetMatchingService"); NSParameterAssert(IOServiceGetMatchingService); kern_return_t (*IORegistryEntryCreateCFProperties)(mach_port_t entry, CFMutableDictionaryRef *properties, CFAllocatorRef allocator, UInt32 options) = dlsym(IOKit, "IORegistryEntryCreateCFProperties"); NSParameterAssert(IORegistryEntryCreateCFProperties); kern_return_t (*IOObjectRelease)(mach_port_t object) = dlsym(IOKit, "IOObjectRelease"); NSParameterAssert(IOObjectRelease); CFMutableDictionaryRef properties = NULL; mach_port_t service = IOServiceGetMatchingService(*kIOMasterPortDefault, IOServiceNameMatching("charger")); IORegistryEntryCreateCFProperties(service, &properties, kCFAllocatorDefault, 0); IOObjectRelease(service); service = 0; NSDictionary *dictionary = (__bridge NSDictionary *)properties; NSData *batteryIDData = [dictionary objectForKey:@"battery-id"]; CFRelease(properties); properties = NULL; dlclose(IOKit); return [NSString stringWithUTF8String:[batteryIDData bytes]]; } 扩展名

{{1}}

这仍适用于iOS 10。