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

Kar*_*ngh 15 objective-c ios ios7

寻求你的帮助

获取设备标识符时我遇到了问题.实际上我使用的是UIDevice + IdentifierAddition.h,NSString + MD5Addition.h类来获取Identifier,但它为我的所有设备返回相同的标识符,iPhone 4s(iOS 7.1)和iPhone 5(iOS 7.1.1).

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

重要提示:我想在应用程序商店提交此应用程序,所以请回答必须符合指南

rck*_*nes 26

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

你的选择是:


Muh*_*air 13

现在有可能在iOS 11.0+中,Apple引入了一个新的API DeviceCheck API,开发人员可以通过它来唯一地识别设备.

文档所述:

使用DeviceCheck API,结合服务器到服务器API,您可以设置和查询每个设备的两位数据,同时保持用户隐私.您可以使用此数据来识别已经利用您提供的促销优惠的设备,或标记您已确定为欺诈的设备.DeviceCheck API还允许您验证您收到的令牌是否来自包含您的应用的正版Apple设备.

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


编辑:

有关此Device Check主题的详细教程可在此处找到.


Avi*_*are 8

在目标c

NSString *uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
Run Code Online (Sandbox Code Playgroud)

在斯威夫特

 var uniqueId=UIDevice.currentDevice().identifierForVendor.UUIDString as String
 println("Your device identifires =>\(uniqueId)")
Run Code Online (Sandbox Code Playgroud)

  • @NathanFiscaletti谢谢.identifierForVendor与来自同一设备上运行的同一供应商的应用程序相同.对于来自不同供应商的同一设备上的应用程序以及不同供应商的不同设备上的应用程序,将返回不同的值.相反,使用NSUUID生成自定义UUID并将其存储在钥匙串中(因为如果删除并重新安装应用程序,则不会删除钥匙串). (2认同)

nah*_*ada 5

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

我用pod'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;
}
Run Code Online (Sandbox Code Playgroud)