美文网首页iOS DeveloperDevSupportiOS 开发
iOS获取唯一UUID/UDID的解决方案

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

作者: 小码农_gjw | 来源:发表于2016-08-17 17:06 被阅读381次
    前言

    查看了苹果官方提供的获取关于唯一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的解决方案

        本文链接:https://www.haomeiwen.com/subject/lrqesttx.html