关于objective c:替代iPhone设备ID(UDID)

Alternative to iPhone device ID (UDID)

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
UIDevice uniqueIdentifier Deprecated - What To Do Now?

即使苹果没有参加过Barcelone的移动世界大会(MobileWorldCongress),但有一点是肯定的,即获取deviceid将在未来的iOSSDK中被否决。

我不明白苹果为什么要限制这一点,但这不是问题所在。

我必须将我的应用程序准备到另一个选项中,因为我的用户可以更好地使用我的应用程序(例如,不需要登录或创建帐户)。我敢肯定在这种情况下,我并不孤单。

所以有人知道从设备ID中得到另一个选择吗?例如,是否有其他唯一标识符,如MAC地址?你如何准备你的应用程序?


更新

使用cfuuid生成uuid怎么样?您可以在第一次发布时将其存储在keychain中。你可以这样得到它…

1
2
3
4
5
6
7
NSString *uuid = nil;
CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
if (theUUID) {
  uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
  [uuid autorelease];
  CFRelease(theUUID);
}

另外,通过取消uniqueidentifier方法,苹果建议您不要为每个设备标识,而是为每个应用安装标识。也许明天他们会决定拒绝你的应用程序。:希望这有帮助。


请实现新的逻辑以获得安全的UDID。它由第三方提供

了解免费解决方案:

这真的很好用,而且很容易实现,而不必为替换不推荐使用的方法而大惊小怪。


试试这个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
- (NSString *)getDeviceID
{
    NSString *uuid = [self gettingString:@"uniqueAppId"];
    if(uuid==nil || [uuid isEqualToString:@""])
    {
        CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
        if (theUUID)
        {
            uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
            [self savingString:@"uniqueAppId" data:uuid];
            [uuid autorelease];
            CFRelease(theUUID);
        }
    }
    return uuid;

// this is depreciated  
//  UIDevice *device = [UIDevice currentDevice];
//  return [device uniqueIdentifier];
}