【问题标题】:How to get unchanged device id from ios7 device programmatically如何以编程方式从 ios7 设备获取未更改的设备 ID
【发布时间】:2014-03-14 18:41:54
【问题描述】:

我需要获取唯一设备 ID 以填充数据库中的唯一用户 ID。我已经使用以下代码来获得它。

NSString *strApplicationUUID= [[[UIDevice currentDevice] identifierForVendor] UUIDString];

但是当我重新安装应用程序时,UUID 一直在变化。但据我所知,设备 ID 永远不会改变。为此,我与第三方 SSKeychain 一起使用了以下代码来保存和检索旧的 UDID:

NSString *Appname = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
    NSString *strApplicationUUID = [SSKeychain passwordForService:Appname account:@"manab"];
    if (strApplicationUUID == nil)
    {
        strApplicationUUID  = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
        [SSKeychain setPassword:strApplicationUUID forService:Appname account:@"manab"];
    }

现在的问题是当该应用程序的版本发生更改时,即应用程序 v2.0 从应用程序 v1.0 再次更改 UDID。所以逻辑对我来说很清楚,我并没有一直获得唯一的 UDID,我只是将 UDID 作为供应商或应用程序的基础。

如何以编程方式获得它?还有其他方法可以获得它,请告诉我正确的方向。

【问题讨论】:

  • 您应该阅读那篇文章以获取有关 UDID 的一些信息blog.appsfire.com/…
  • UDID 在 iOS 7 中不再可用(Apple 一直告诉开发人员它自 iOS 5 以来已被弃用)。如果用户从供应商处卸载所有应用程序然后重新安装它们,identifierForVendor 将被重置。如果需要唯一标识用户,则需要使用用户名和密码。
  • 嗨机器猫,你能告诉我如果有人需要识别他的设备,那么他怎么能做到这一点,必须有一个有效的方法......
  • 好问题。我有同样的问题兄弟。

标签: ios ios7 uuid


【解决方案1】:

我已经通过使用advertisingIdentifier 解决了这个问题。

正如我在那里看到的,advertisingIdentifier 是

“每个设备唯一的字母数字字符串,...”

为此,我将其用作唯一标识符(尽管它用于 投放广告)。

我的代码是:

-(NSString*)UniqueAppId
{
    NSString *Appname = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
    NSString *strApplicationUUID = [SSKeychain passwordForService:Appname account:@"manab"];
    if (strApplicationUUID == nil)
    {
        strApplicationUUID  = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
        [SSKeychain setPassword:strApplicationUUID forService:Appname account:@"manab"];
    }
    return strApplicationUUID;
}

并在需要时调用它

[self UniqueAppId];

【讨论】:

  • 嗨 manab ... AdvertisingIdentifer 是独一无二的,我同意这一点.. 但是如果您使用 AdvertisingIdentifer 并且您没有显示任何 iAD 或 iAD 未正确加载,Apple 将拒绝您的应用
【解决方案2】:

advertisingIdentifier 是一个不错的选择,因为它不会在应用程序更新或重新安装时发生变化。

但是当用户重置他们的设备时它也会发生变化,因此您可能需要根据您的要求重新考虑它。

供参考

How to get the UDID in iOS 6 and iOS 7

CFUUID Vs. advertisingIdentifier Vs. identifierForVendor

就我而言,我更喜欢使用用户的电子邮件地址作为唯一 ID。因此,只有当用户自己更改其唯一身份时,用户才会在系统上获取他的数据或识别。 :-)

问候

【讨论】:

    【解决方案3】:

    在 Objective-c 中

    如果您想在 IOS 7 及更高版本中获取唯一 ID,请使用以下内容:

    首先创建您自己的唯一 ID,并且您拥有 to save in the keychain。 现在use the vendor ID,如果同一供应商的所有应用从设备中删除,它将被重置。

    【讨论】:

      猜你喜欢
      • 2014-01-23
      • 1970-01-01
      • 2010-12-06
      • 2023-04-11
      • 2011-05-06
      • 2012-07-27
      • 2010-09-11
      • 2018-02-08
      • 1970-01-01
      相关资源
      最近更新 更多