如何以编程方式从ios7设备获取未更改的设备id

如何以编程方式从ios7设备获取未更改的设备id,ios,ios7,uuid,Ios,Ios7,Uuid,我需要获取唯一的设备id以在数据库中填充唯一的用户id。我已经使用了下面的代码来获得它 NSString*StrapApplicationUUID=[[UIDevice currentDevice]identifierForVendor]UUIString] 但当我重新安装应用程序时,UUID一直在变化。但据我所知,设备id从未改变。为此,我使用以下代码与第三方SSKeychain一起保存和检索旧UDID: NSString *Appname = [[[NSBundle mainBundle]

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

NSString*StrapApplicationUUID=[[UIDevice currentDevice]identifierForVendor]UUIString]

但当我重新安装应用程序时,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"];
    }
现在的问题是,当该应用程序的版本发生更改时,即app v2.0 form app v1.0,然后UDID再次发生更改。因此,逻辑对我来说很清楚,我不是一直都在获得唯一的UDID,我只是将UDID作为供应商或应用程序的基础


如何通过编程实现这一点?是否有其他方法实现这一点,请告诉我正确的方向。

我已通过使用解决了这一问题

正如我在那里看到的,广告识别器是

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

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

我的代码是:

-(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];

advertisingIdentifier是一个很好的选择,因为它不会在应用程序更新或重新安装时更改

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

参考

在我的情况下,我更喜欢使用用户的电子邮件地址作为唯一Id。因此,只有当用户自己更改其唯一标识时,用户才能在系统上获取其数据或标识。:-)

在Objective-c中考虑

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

首先,创建您自己的唯一ID和您拥有的
现在,如果从设备中删除同一供应商的所有应用程序,它将被重置。

您应该阅读这篇文章,了解有关UDID的一些信息,UDID在iOS 7中不再可用(苹果一直告诉开发人员,它从iOS 5开始就被弃用)<如果用户卸载供应商的所有应用程序,然后重新安装,则会重置供应商的代码>标识。如果你需要唯一地识别一个用户,你需要使用用户名和密码。嗨,机器人猫,你能告诉我,如果有人需要识别他的设备,那么他怎么能做到这一点,必须有一个有效的方法,因为是…伟大的问题。我也有同样的问题,兄弟,你好,曼纳布。。。广告识别器是独一无二的我同意。。但是,如果您使用的是AdvertisingIdentifier,并且没有显示任何iAD或iAD加载不正确,苹果将拒绝您的应用程序