Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone设备ID(UDID)的替代方案_Iphone_Objective C_Ios_Validation_Uniqueidentifier - Fatal编程技术网

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

iPhone设备ID(UDID)的替代方案,iphone,objective-c,ios,validation,uniqueidentifier,Iphone,Objective C,Ios,Validation,Uniqueidentifier,可能重复: 即使苹果没有参加Barcelone的MWC(移动世界大会),但可以肯定的是,在未来的iOS SDK中,获取deviceID将被弃用 我不明白苹果为什么要限制这一点,但这不是主题 我必须为我的应用程序准备一个替代方案,因为我的用户已被识别并知道如何更好地使用我的应用程序(例如,不需要登录或创建帐户)。我相信我不是唯一一个这样的人 那么有人知道获取设备ID的替代方案吗?是否存在其他唯一标识符,例如MAC地址?如何准备应用程序?试试这个 - (NSString *)getDeviceID

可能重复:

即使苹果没有参加Barcelone的MWC(移动世界大会),但可以肯定的是,在未来的iOS SDK中,获取deviceID将被弃用

我不明白苹果为什么要限制这一点,但这不是主题

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

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

试试这个

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

更新

使用CFUUID生成UUID怎么样。您可以在第一次发布时将其存储在钥匙链中。。 你可以这样得到它

NSString *uuid = nil;
CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
if (theUUID) {
  uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
  [uuid autorelease];
  CFRelease(theUUID);
}
此外,苹果还反对uniqueIdentifier方法,建议您不要识别每个设备,而是每个应用程序安装。可能是明天,他们可能会因为这样做而决定拒绝您的应用程序..:/
希望这有帮助。

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


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

你想要iphone设备id或其他什么?我想要另一个唯一的标识符,即deviceId,或另一种识别用户的方法。谢谢,但如果用户删除并再次安装应用程序,情况就不一样了(我承认,这种情况并不经常发生)。另外,这个UUID是在机器上生成的,因此在我们服务器上的用户列表中可能不是唯一的。@Martin将值存储在keychain中怎么样…?这不会在卸载应用程序后消失…?此外,通过弃用uniqueIdentifier方法,苹果建议您不要识别每个设备,而是每个应用程序插件很高。可能明天他们会因为这样做而决定拒绝你的应用程序..://@Martin请检查更新。你可以将这种方式创建的UUID存储在iCloud中,如果你没有将其存储在设备上,则可以从中提取。这将给你一个特定用户独有的UUID,这可能是你想要的?@Ankit:我从未使用过keychain,thanks的建议,听起来很酷!但是,我认为在重新安装后存储该ID对我来说不是很重要。但我仍然面临一个问题:确保本地唯一标识符在发布到我们的服务器后不会与另一个标识符冲突。谢谢,这与下面的答案相同。请参阅我的评论。然后你必须使用mac addres有几个UID api正在网络上发展。我还没有测试其中的一个。嗨,Andre,我已经更新了链接。