iOS设备的唯一标识
我使用的Mac地址是iOS设备的唯一标识,但是从iOS7开始,系统总是返回02:00:00:00:00:00的值。 我已经为上述问题search了三个选项:
- 供应商标识
- 广告鉴定
- 使用IOUnit框架获取序列号
由于IOUnitFramework没有被appstore批准,所以不能在我的应用程序中使用它。 供应商标识和广告标识的价值很大。
有没有其他可能的方法来唯一标识ios设备?
提前致谢
在钥匙串中存储唯一标识符是另一种select。 但是我们不能直接从我们的ios设备访问钥匙串。那么是否有其他的方式来唯一标识设备?
不,苹果公司不允许你唯一识别设备。 这与用户隐私有关。 由于您不是识别用户,而是设备 。
也不要使用ASIdentifierManager
来识别设备,苹果现在拒绝使用这个识别设备的应用程序。 ASIdentifierManager
仅用于广告目的。
剩下的唯一选项是[[UIDevice currentDevice] identifierForVendor]
或将您自己的自定义创buildID保存到钥匙串。 保存到您自己的创buildID钥匙链将确保如果用户删除应用程序以后重新安装,您仍然可以访问此值。
您可以使用设备的UDID来唯一标识iPhone设备
从这个方法创buildUIID
- (NSString *)createUUID { CFUUIDRef theUUID = CFUUIDCreate(NULL); CFStringRef string = CFUUIDCreateString(NULL, theUUID); CFRelease(theUUID); [[NSUserDefaults standardUserDefaults] setObject:(__bridge NSString *)string forKey:@"UUID"]; [[NSUSerDefaults standardUserDefaults] synchronize]; return (__bridge NSString *)string; }
在需要设备UDID的地方使用此function
- (NSString*)UUID { return [[NSUserDefaults standardUserDefaults] ObjectForKey:@"UUID"]; }
你可以检查这个链接和这个链接 。 它显示了多种方式来识别您的iOS设备。 它们有点过时,但是标识符ForVendor和advertisingIdentifier仍然有效。
广告标识主要用于广告目的,但苹果鼓励使用此标识符来满足任何需求。
advertisingIdentifier是新AdSupport.framework的一部分。 ASIdentifierManager单例公开方法advertisingIdentifier并调用返回NSUUID类的一个实例。
NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
供应商的标识符也返回一个UUIDstring:
NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
有很多方法可以获得唯一的标识符。 你可以像一些人推荐你一样获得identifierForVendor,或者在mokujin推荐你的时候创build一个UUID。 即使有像SecureUDID,OpenUDID等外部源库,但所有这些都有同样的问题,如果你删除你的应用程序并重新安装,你会得到不同的标识符。
我一直在一家大公司工作,他们使用MDM(移动铁),让你可以得到真正的UDID。 我认为你没有在你的项目中使用MDM,所以我build议你使用这里为我和其他用户推荐的select之一,并将其保存在你的钥匙串中。 在此之后,你应该检查你的钥匙链是否有这个价值,如果没有,你应该得到它并保留它。
不要将它保存在NSUserDefaults中,因为如果你删除了你的应用程序,那么你的信息将被删除。
为了使用您的钥匙串,我build议您使用Apple KeychainItemWrapper中的这个类
苹果杀死跟踪应用程序的方式,虽然我们可以使用下面的id跟踪应用程序
- 供应商的标识符
- NSUUID
- CFUUID
但是,如果您在工厂重置您的手机,此设备id将重置。
你会在这里得到详细的描述在iOS独特的设备识别