适用于iOS 7.0及以上版本的iOS设备的唯一标识
寻找你的帮助
获取设备标识符时遇到问题。 其实我正在使用一个UIDevice + IdentifierAddition.h,NSString + MD5Addition.h类来获得标识符,但它返回相同的标识符为我所有的设备,即iPhone 4s(iOS 7.1)和iPhone 5(iOS 7.1.1)。
任何人都可以解决这个问题。 因为我想要一个独特的设备特定的东西。 它是我的应用程序要求
重要提示:我想在应用程序商店提交这个应用程序,所以请回答一定要按照指导方针
从iOS 7开始,不再有可能获得任何唯一的设备标识符。
您的select是:
- 创build您自己的唯一ID并将其保存在钥匙串中 。
- 使用供应商ID ,如果同一供应商的所有应用都从设备中删除,则供应商ID将被重置。
在目标c
NSString *uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
在Swift中
var uniqueId=UIDevice.currentDevice().identifierForVendor.UUIDString as String println("Your device identifires =>\(uniqueId)")
现在,在iOS 11.0以上的版本中 ,Apple已经推出了一个名为DeviceCheck API
的新API,开发人员可以通过它来唯一标识一个设备。
正如文件中所提到的 :
使用DeviceCheck API与服务器到服务器API结合使用,您可以设置和查询每个设备的两位数据,同时保持用户的隐私。 您可以使用这些数据来识别已经利用您提供的促销优惠的设备,或者标记您确定为欺诈的设备。 DeviceCheck API还允许您validation您收到的令牌是否来自包含您的应用的真实Apple设备。
另外,从24分钟开始查看以下WWDC17video: https : //developer.apple.com/videos/play/wwdc2017/702/
不幸的是,当你卸载你的应用程序时,identifierForVendor会改变,以保证它不会改变,保存在钥匙串中
我用荚'SSKeychain'主页: https : //github.com/soffes/sskeychain
这是代码
+ (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; }
[UIDevice uniqueIdentifier]; 已在ios 5及更高版本中弃用。
您可以使用此NSString * udid = [[UIDevice currentDevice] uniqueIdentifier]获取供应商的标识符;
并将其存储在钥匙串中,稍后再使用。
你也可以检查1)NSUUID 2)CFUUID
你会得到详细的说明在这里独特的设备识别在IOS
如果你只想识别一个设备一次,即估计唯一用户的数量,那么我build议使用ASIdentifierManager的“advertisingIdentifier”。
苹果文件
- 在实例化时从按下状态开始UIPanGesture事件
- NSDecimalNumber decimalNumberWithString:忽略当前的语言环境
- Appstore Failure在二进制文件中没有体系结构。 Lipo未能检测到软件包可执行文件中的任何体系结构。“在SoftwareAssets / SoftwareAsset
- 什么是在Swift中的java接口或目标c协议的等价物?
- XIB文件的iOS Localizable.strings文件?
- 安装coremltools时出错
- 以编程方式更改UITableView的大小
- SpriteKit didBeginContact调用但不是didEndContact
- 自定义键盘教程