iPhone设备ID(UDID)的替代方案

16

可能重复问题:
UIDevice uniqueIdentifier已弃用 - 现在该怎么办?

尽管苹果公司并未出现在巴塞罗那的MWC(移动世界大会)上,但可以肯定的是,在进一步的iOS SDK中获取设备ID将被废弃。

我不明白为什么苹果要限制这个功能,但这不是重点。

我必须为我的应用程序准备一个替代方案,因为我的用户被识别并且被知道为更好地使用我的应用程序(例如,不需要登录或创建帐户)。而我确信我不是唯一一个这样的情况。

那么,有人知道从哪里获取设备ID的替代方法吗? 是否有其他唯一标识符,例如MAC地址? 您如何准备您的应用程序?


你想要 iPhone 设备 ID 还是其他什么? - Anil Kothari
我想要另一个唯一标识符来代替deviceId,或者其他的用户标识方式。 - Martin
3个回答

5

更新

使用CFUUID生成UUID,然后在第一次启动时将其存储在KEYCHAIN中。可以像这样获取它...

NSString *uuid = nil;
CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
if (theUUID) {
  uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
  [uuid autorelease];
  CFRelease(theUUID);
}

苹果公司建议您不要通过uniqueIdentifier方法来区分设备,而应该按照应用程序的安装来区分。如果您坚持使用此方法,则明天他们可能会拒绝您的应用程序。希望这能对您有所帮助。


谢谢,但如果用户删除并重新安装应用程序,它将不再是相同的(我承认这种情况并不经常发生)。另外,此UUID是在一台机器上生成的,因此可能在我们服务器上的用户列表中不是唯一的。 - Martin
@Martin,将值存储在钥匙串中怎么样?这样一来,即使应用被卸载,该值也不会消失。此外,通过废弃uniqueIdentifier方法,苹果建议您不要按设备而是按应用程序安装进行标识。明天他们可能会因为这样做而拒绝您的应用程序..:/ - Ankit Srivastava
2
如果您没有将其存储在设备上,可以将通过此方式创建的UUID存储在iCloud中,然后从那里获取。这将为您提供特定用户唯一的UUID,这可能是您想要的内容。 - mattjgalloway
@Ankit:我从未使用过钥匙串,谢谢你的建议,听起来很酷!然而,我认为在重新安装后存储那个ID对我来说并不是非常重要。但是,仍有一个问题困扰着我:确保本地唯一标识符在发布到我们的服务器后不会与另一个冲突。 - Martin
@mattjgalloway:好的,这是我第二个问题的答案。感谢您的建议 ;) - Martin
@Martin:我认为UUID在不同的系统中是唯一的。虽然有可能会创建重复的UUID,但这种情况非常罕见,你不必担心它。 - lkiss80

2

试试这个

- (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];
}

谢谢,这和下面的答案一样。请看我的评论。 - Martin
然后您需要使用设备的MAC地址。 - hchouhan02

2
请实现获取安全UDID的新逻辑,该逻辑由第三方提供。 了解免费解决方案: 这个方法很好用,易于实现,而且不需要大费周折地替换已弃用的方法。

谢谢提供链接。网络上有几个不断增长的UID API,我还没有测试过其中的一个。 - Martin
嗨,安德烈,我已经更新了链接。 - Shantanu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接