IOS7中的UDID替换

Avi*_*ash 14 udid ios ios7

是否有UDID的替代方案.我的应用程序不会进入App Store,因为我正在使用企业分发.那么有没有替代品.我绑定了广告标识符,打开udid,UIID和安全UDID.但如果手机重置,那么我将获得一个新的UDID.任何帮助,将不胜感激.

Nit*_*hel 16

对于6.0以上的iOS,您可以使用identifierForVendorCFUUIDRef.

-(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;
}//
Run Code Online (Sandbox Code Playgroud)

UPDATE

作为Leon Lucardie评论他是对的

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

  • 应用程序卸载/重新安装后,`identifierForVendor`将会更改.见[here](https://developer.apple.com/library/ios/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/identifierForVendor)`这个中的值在iOS设备上安装应用程序(或来自同一供应商的其他应用程序)时,属性保持不变.当用户从设备中删除所有该供应商的应用程序并随后重新安装其中一个或多个应用程序时,该值会更改 (7认同)

Avi*_*ash 3

在尝试了所有可能的替代方案之后。广告标识符是最好的方法。当我测试时,即使手机重置后它仍然保持不变。如果用户在设置中将其关闭,那么我们会得到一个空值。除了这个故障之外,这是迄今为止最好的替代品。如果我找到其他更好的替代品,我会更新。

  • 错误的决定,苹果将拒绝你的应用程序。您不得将广告标识符用于此目的,只能用于广告服务目的。 (2认同)