【问题标题】:UDID Replacement in IOS7IOS7中的UDID替换
【发布时间】:2013-09-18 09:29:35
【问题描述】:

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

【问题讨论】:

  • 尝试获取设备令牌。
  • @Tendulkar 当设备被擦除或设备内容被擦除时它会改变。
  • 你不能在 iOS 7 中创建 UDID 在这里查看苹果文档developer.apple.com/library/ios/documentation/uikit/reference/…
  • @user2739931:你找到解决办法了吗?
  • @user2739931 我也很感兴趣,因为我需要确定哪个智能手机正在访问我的企业应用程序

标签: ios ios7 udid


【解决方案1】:

对于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;
}//

更新

作为Leon Lucardie评论他是对的

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

【讨论】:

  • identifierForVendor 将在应用程序卸载/重新安装后更改。见hereThe value in this property remains the same while the app (or another app from the same vendor) is installed on the iOS device. The value changes when the user deletes all of that vendor’s apps from the device and subsequently reinstalls one or more of them.
  • 使用上面的代码这对我有用,这就是为什么我把它作为一个答案,我也在卸载/重新安装后将它测试到设备中。
  • 它可以工作,但前提是您有来自同一供应商的其他应用程序以将标识符存储在设备上。如果用户只有一个来自某个供应商的应用程序,则标识符将在重新安装后更改。考虑到在大多数情况下是后者,它不是 UDID 的非常可靠的替代品
  • @all 广告标识符将保持不变,即使在卸载并重新安装应用程序时也是如此。但是当手机内容被删除时我会松开它。即使使用 UIID 也是一样的。还有什么建议吗?或者这个问题没有其他选择。我什至尝试了 Mac 地址,它也已在 IOS7 中删除
  • @all 广告标识符将保持不变,即使在卸载并重新安装应用程序时也是如此。但是当手机内容被删除时我会松开它。即使使用 UIID 也是一样的。还有什么建议吗?或者这个问题没有其他选择。我什至尝试了 Mac 地址,它也已在 IOS7 中删除
【解决方案2】:

您必须创建供应商 ID,然后使用钥匙串保存它,并在您使用日期时间重置手机后取回它

查看此链接UUID and UDID for iOS7

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 错误的决定,苹果会拒绝你的应用。您不得将广告标识符用于此目的,它只允许用于广告服务目的。
    • 我已经在问题部分提到我要进行企业分发
    【解决方案4】:

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

    -(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(Apple 限制读取 UDID,即使在 iOS 5 上也是如此)。在这里有一些答案,您只会被Apple拒绝(我的代码已在我的几个应用程序中获得批准)。

    请注意,如果您的用户删除应用程序(或所有供应商应用程序,如果有多个)并重新安装,identifierForVendor 会发生变化。

    【讨论】:

    • @all Advertising Identifier 将保持不变,即使在卸载并重新安装应用程序时也是如此。但是当手机内容被删除时我会松开它。即使使用 UIID 也是一样的。还有什么建议吗?或者这个问题没有其他选择。我什至尝试了 Mac 地址,它也已在 IOS7 中删除
    【解决方案5】:

    我使用 APNS 令牌和 vendorId 的组合。两者都经过检查以验证手机身份,当其中一个发生变化时,我会在手机和服务器中相应地更新它们。

    当应用程序被卸载和/或重置并存储几个月后,两者仍有可能发生变化,那么这两个值都会发生变化。

    这会导致手机下次安装应用时,会被识别为新的。

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

    在这种情况下,需要进行用户身份验证,并将手机再次添加到客户的设备池中。

    我只有一个应用程序,但一旦我有了第二个应用程序,我可能会包含 adsId。

    【讨论】:

      【解决方案6】:

      【讨论】:

      • @all 广告标识符将保持不变,即使在卸载并重新安装应用程序时也是如此。但是当手机内容被删除时,我会松开它。即使使用 UIID 也是一样的。还有什么建议吗?或者这个问题没有其他选择。我什至尝试了 Mac 地址,它也已在 IOS7 中删除
      【解决方案7】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-05
        • 2014-01-23
        • 2014-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多