iOS设备的唯一标识

我使用的Mac地址是iOS设备的唯一标识,但是从iOS7开始,系统总是返回02:00:00:00:00:00的值。 我已经为上述问题search了三个选项:

  1. 供应商标识
  2. 广告鉴定
  3. 使用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设备。 它们有点过时,但是标识符ForVendoradvertisingIdentifier仍然有效。

广告标识主要用于广告目的,但苹果鼓励使用此标识符来满足任何需求。

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跟踪应用程序

  1. 供应商的标识符
  2. NSUUID
  3. CFUUID

但是,如果您在工厂重置您的手机,此设备id将重置。

你会在这里得到详细的描述在iOS独特的设备识别