在IOS7中更换UDID

UDID是否有其他select? 我的应用程序不会去App Store,因为我使用企业分布。 那么有没有更换。 我绑绑广告标识符,打开udid,UIID和安全的UDID。 但是,如果手机重置,那么我将得到一个新的UDID。 任何帮助,将不胜感激。

对于6.0以上的iOS,你可以使用identifierForVendor或者CFUUIDRef

 -(NSString*)uniqID { NSString* uniqueIdentifier = nil; if( [UIDevice instancesRespondToSelector:@selector(identifierForVendor)] ) { // iOS 6+ uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; } else { // before iOS 6, so just generate an identifier and store it uniqueIdentifier = [[NSUserDefaults standardUserDefaults] objectForKey:@"identifierForVendor"]; if( !uniqueIdentifier ) { CFUUIDRef uuid = CFUUIDCreate(NULL); uniqueIdentifier = ( NSString*)CFUUIDCreateString(NULL, uuid); CFRelease(uuid); [[NSUserDefaults standardUserDefaults] setObject:uniqueIdentifier forKey:@"identifierForVendor"]; } } return uniqueIdentifier; }// 

UPDATE

正如Leon Lucardie评论的,他是对的

应用程序卸载/重新安装后,identifierForVendor将会更改。 请参阅此处此应用程序(或来自同一供应商的另一个应用程序)安装在iOS设备上时,此属性中的值保持不变。 当用户从设备上删除所有供应商的应用程序并随后重新安装其中的一个或多个应用程序时,值会更改。

您必须创build供应商ID,然后使用钥匙串保存它,并使用date时间重置您的手机后重新获取它

检查这个链接UUID和UDID的iOS7

尝试所有可能的replace之后。 广告标识符是最好的方法。 即使在我testing后重置手机后,它仍然是一样的。 如果用户在设置中closures它,那么我们得到一个空值。 除此之外,这是迄今为止最好的替代品。 将更新,如果我find其他更好的替代品。

简单,只需使用以下代码:

 -(NSString *)getUID{ if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) { // This is will run if it is iOS6 and above return [[[UIDevice currentDevice] identifierForVendor] UUIDString]; } else { // This is will run before iOS6 and you can use openUDID or other // method to generate an identifier return [OpenUDID value]; } } 

正如你所理解的,如果你打算支持iOS 5,那么你应该使用OpenUDID(即使在iOS 5上,苹果也限制读取UDID)。 在这里有一些答案,你会简单地被苹果拒绝(我的代码已被批准在我的几个应用程序)。

请注意,如果您的用户将删除应用程序(或所有供应商的应用程序,如果有几个),然后重新安装,那么identifierForVendor将会改变。

我使用组合APNS令牌和vendorId。 两者都被检查以validation手机身份,并在手机和服务器上更新相应的手机和服务器。

当应用程序被卸载和/或重置并存储几个月时,两者都可能改变,然后两个值都会改变。

这将导致手机下一次安装应用程序,它将被识别为一个新的。

除此之外,我在服务器上运行一个进程,标记为已删除任何未连接到服务器两个月的设备。

在这种情况下,用户身份validation是必需的,手机又被添加到客户的设备池中。

我只有一个应用程序,但一旦我有第二个我可能包括advertisingId。

这些由Ole的博客文章应该是有帮助的:

iOS 5: http : //oleb.net/blog/2011/09/how-to-replace-the-udid/ iOS 6+: http : //oleb.net/blog/2012/09/udid-apis-in -ios-6 /

您可以在iOS 6 + Swift 2.2版本之后使用。

 var uniqueIdentifier: NSString! uniqueIdentifier = UIDevice.currentDevice().identifierForVendor?.UUIDString