gpt4 book ai didi

iphone - 如何生成适用于所有 iOS 版本的唯一标识符?

转载 作者:技术小花猫 更新时间:2023-10-29 10:30:16 26 4
gpt4 key购买 nike

我想获得应该支持所有 iOS 版本的唯一标识符。任何人都可以帮助我解决这个问题。如您所知,苹果已弃用 UDID 方法,因此有可能使用 wifi-mac 地址生成唯一 ID。但苹果将在 iOS7 版本中删除 wifi mac 地址。所以我的要求是生成一个新的唯一代码,它应该适用于所有 iOS 版本。提前致谢..

注意:一旦用户重启设备或重新安装应用程序,请勿更改 UDID。

最佳答案

我正在更新我的应用程序,该应用程序仅基于支持 iOS 4.3 及更高版本的唯一标识符。因此,

1) 我无法使用 [UIDevice currentDevice].uniqueIdentifier; 因为它不再可用

2) 我无法使用 [UIDevice currentDevice].identifierForVendor.UUIDString 因为它仅适用于 iOS 6.0 及更高版本,无法用于较低的 iOS 版本。

3) mac 地址不是一个选项,因为它在 iOS-7 中是不允许的

4) OpenUDIDdeprecated不久前,iOS-6 也有问题。

5) 广告标识符也不适用于 iOS-5 及以下版本

最后这就是我所做的

a) 添加了 SFHFKeychainUtils到项目

b) 生成的 CFUUID key 字符串

 CFUUIDRef cfuuid = CFUUIDCreate(kCFAllocatorDefault);
udidString = (NSString*)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, cfuuid));

c) 将其保存到 Key Chain Utils 否则每次都会生成一个新的 Unique

最终代码

+ (NSString *)GetDeviceID {
NSString *udidString;
udidString = [self objectForKey:@"deviceID"];
if(!udidString)
{
CFUUIDRef cfuuid = CFUUIDCreate(kCFAllocatorDefault);
udidString = (NSString*)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, cfuuid));
CFRelease(cfuuid);
[self setObject:udidString forKey:@"deviceID"];
}
return udidString;
}

+(void) setObject:(NSString*) object forKey:(NSString*) key
{
NSString *objectString = object;
NSError *error = nil;
[SFHFKeychainUtils storeUsername:key
andPassword:objectString
forServiceName:@"LIB"
updateExisting:YES
error:&error];

if(error)
NSLog(@"%@", [error localizedDescription]);
}

+(NSString*) objectForKey:(NSString*) key
{
NSError *error = nil;
NSString *object = [SFHFKeychainUtils getPasswordForUsername:key
andServiceName:@"LIB"
error:&error];
if(error)
NSLog(@"%@", [error localizedDescription]);

return object;
}

enter image description here

For further Details

关于iphone - 如何生成适用于所有 iOS 版本的唯一标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17677655/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com