Get serial number of device on iOS 8

前端 未结 4 1704
孤独总比滥情好
孤独总比滥情好 2021-02-14 23:44

For an in-house application, we were using the following code UIDevice+serialNumber to get the device serial number. However, it seems that with iOS 8, the registry key \"IOPlat

4条回答
  •  一整个雨季
    2021-02-15 00:40

    As Helger stated above, UDID is no longer available in iOS 6+ due to security / privacy reasons. Instead, use identifierForVendor or advertisingIdentifier Please check UDID Replacement APIs

    For iOS 8+

    + (NSString *)deviceUUID
    {
    if([[NSUserDefaults standardUserDefaults] objectForKey:[[NSBundle mainBundle] bundleIdentifier]])
        return [[NSUserDefaults standardUserDefaults] objectForKey:[[NSBundle mainBundle] bundleIdentifier]];
    
    @autoreleasepool {
    
        CFUUIDRef uuidReference = CFUUIDCreate(nil);
        CFStringRef stringReference = CFUUIDCreateString(nil, uuidReference);
        NSString *uuidString = (__bridge NSString *)(stringReference);
        [[NSUserDefaults standardUserDefaults] setObject:uuidString forKey:[[NSBundle mainBundle] bundleIdentifier]];
        [[NSUserDefaults standardUserDefaults] synchronize];
        CFRelease(uuidReference);
        CFRelease(stringReference);
        return uuidString;
     }
    }
    

    You can use identifierForVendor after that store them to keychain and use later. Because value of keychain will not changed when re-install app.

    I used to use Open UDID for this purpose. Don't know if it still works.

提交回复
热议问题