寻求帮助
我在获取设备标识符时遇到问题。实际上我使用UIDevice + IdentifierAddition.h,NSString + MD5Addition.h类获取标识符,但其返回所有设备的相同标识符,即 iPhone 4s(iOS 7.1)& iPhone 5(iOS 7.1.1)。
任何人都可以解决此问题。因为我想要一个特定于设备的东西。它是我的应用程序要求。
重要提示:我想在应用商店提交此应用,所以请按照指南回答
答案 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。