iOS获取唯一UUID/UDID的解决方案

前言

查看了苹果官方提供的获取关于唯一UUID方法,有一个叫做KeychainItemWrapper.h的很早的类,下载下来研究了一下后,自己写了个Demo放在了Github上,感兴趣的同学可以下载下来看一下。

  • 提供两个方法供选择

1.google到了SFHFKeychainUtils,一个基于KeyChain封装的简单操作的第三方类库。
2.自己写的UDIDManager,同样的也是基于KeyChain封装的库

使用方法
  • SFHFKeychainUtils使用方法

1.引入SFHKeychainUtils.h/m文件(ARC中配置targets->Build Phases->SFHKeychainUtils.m添加-fno-objc-arc)
2.引入Security.framework类库

  • UDIDManager使用方法

1.引入UDIDManager.h/m文件
2.引入Security.framework类库

核心代码
SFHFKeychainUtils用法
#pragma mark -获取唯一UUID
- (NSString*)getUUID {
     NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
     NSString *userName = infoDict[@"CFBundleName"];
     NSString *serviceName = infoDict[@"CFBundleIdentifier"];
     NSString *uuid = [SFHFKeychainUtils getPasswordForUsername:userName andServiceName:serviceName error:nil];
     if (uuid.length==0) {
          uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
          [SFHFKeychainUtils storeUsername:userName andPassword:uuid forServiceName:serviceName updateExisting:1 error:nil];
     }
     return uuid;
}
UDIDManager用法
  // 清除UDID
  // [UDIDManager clearUDID];
  // 获取UDID
  NSString *udid = [UDIDManager UDID];
  if (udid == nil) {
      udid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
      if ([UDIDManager saveUDID:udid]) {
          NSLog(@"save OK");
      } else {
          NSLog(@"save fail");
      }
  }
    
  NSLog(@"udid %@", [UDIDManager UDID]);

个人体验

个人觉得还是UDIDManager使用起来比较方便一些

说明

哪位有更好的解决方法希望能给我留言,大家一起学习,一起进步

你可能感兴趣的:(iOS获取唯一UUID/UDID的解决方案)