0

Apple 不允许将应用程序添加到使用 [UIDevice uniqueIdentifier] 的应用商店,因为该属性在 iOS SDK 6.0 中变为私有

什么是替代品?

4

2 回答 2

0
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

- (NSString*)deviceId {
    NSString *udidString;

    if (SYSTEM_VERSION_LESS_THAN(@"6.0")) {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        udidString = [defaults objectForKey:@"udidKey"];
        if (!udidString) {
            CFUUIDRef identifierObject = CFUUIDCreate(kCFAllocatorDefault);
            // Convert the CFUUID to a string
            udidString = (NSString *)CFUUIDCreateString(kCFAllocatorDefault, identifierObject);
            [defaults setObject:udidString forKey:@"udidKey"];
            [defaults synchronize];
            CFRelease((CFTypeRef) identifierObject);
        }

    } else {
        udidString = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    }
    return udidString;
}

如果在线得到警告:udidString = [[[UIDevice currentDevice] identifierForVendor] UUIDString];这意味着 Xcode SDK小于 6.0

Xcode 4.3包含 iOS SDK 5.1,Xcode 4.5包含 iOS SDK 6.0)

更新 Xcode iOS SDK:

  1. 只需下载 App Store 上可用的最新 Xcode(Apple 不提供仅下载 SDK 的选项)。
  2. 如果只想保留当前的 ​​Xcode 版本:

    • 下载最新的 Xcode 版本。
    • 从以下位置复制 iOS SDK 库:

最新的Xcode.app /Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

oldXcode.app /Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

重新打开旧的 Xcode,就是这样!

于 2013-05-13T07:50:26.700 回答
0

您可以使用/创建“您自己的”UDID:

+(NSString *)getUUID
{
    CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
    NSString * uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
    CFRelease(newUniqueId);

    return uuidString;
}

您应该记住,此方法将在每次调用时产生不同的 id,因此您应该以某种方式持久化它,因此它不是 UDID 的相同替代方案,但对于大多数用途来说,它甚至更好。

于 2013-05-13T08:28:09.730 回答