适用于iOS 7.0及更高版本的iOS设备的唯一标识

时间:2014-07-15 08:38:52

标签: ios objective-c ios7

寻求帮助

我在获取设备标识符时遇到问题。实际上我使用UIDevice + IdentifierAddition.h,NSString + MD5Addition.h类获取标识符,但其返回所有设备的相同标识符,即 iPhone 4s(iOS 7.1)& iPhone 5(iOS 7.1.1)。

任何人都可以解决此问题。因为我想要一个特定于设备的东西。它是我的应用程序要求。

重要提示:我想在应用商店提交此应用,所以请按照指南回答

6 个答案:

答案 0 :(得分:26)

从iOS 7开始,不再可能获得任何唯一的设备标识符。

您的选择是:

答案 1 :(得分:12)

现在可以在 iOS 11.0 + 中使用,Apple推出了一个名为DeviceCheck API的新API,开发人员可以使用该API来唯一识别设备。

the documentation中所述:

  

使用DeviceCheck API,结合服务器到服务器API,   您可以在维护时为每个设备设置和查询两位数据   用户隐私。您可以使用此数据来识别具有此功能的设备   已经利用了您提供的促销优惠,或者   标记您已确定为欺诈的设备。该   DeviceCheck API还可以验证您收到的令牌是否来自   来自包含您的应用程序的正宗Apple设备。

另外,请查看以下24分钟开始的以下WWDC17视频: https://developer.apple.com/videos/play/wwdc2017/702/

修改

可以找到关于此Device Check主题的详尽教程here

答案 2 :(得分:8)

在目标c

NSString *uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

在Swift中

 var uniqueId=UIDevice.currentDevice().identifierForVendor.UUIDString as String
 println("Your device identifires =>\(uniqueId)")

答案 3 :(得分:5)

不幸的是,当您卸载应用程序时,identifierForVendor会发生变化,以确保它不会更改,并将其保存在钥匙串中

我使用了pod' SSKeychain'主页:{{3}}

这是代码

 + (NSString *)getDeviceId {
           NSString *appName=[[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
           NSString *strApplicationUUID = [SSKeychain passwordForService:appName account:@"MY_KEY"];
           if (strApplicationUUID == nil) {
               strApplicationUUID  = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
               [SSKeychain setPassword:strApplicationUUID forService:appName account:@"MY_KEY"];
            }
    return strApplicationUUID;
}

答案 4 :(得分:0)

[UIDevice uniqueIdentifier];在ios 5及以上版本中已弃用。

您可以使用此获取供应商的标识符 NSString * udid = [[UIDevice currentDevice] uniqueIdentifier];

并将其存储在钥匙串中,稍后再使用。

您也可以查看 1)NSUUID 2)CFUUID

您将在此处获得详细说明Unique device identification in ios

答案 5 :(得分:0)

如果您只尝试识别设备一次,即估算唯一身份用户的数量,那么我建议使用" advertisingIdentifier" ASIdentifierManager。

Apple Doc