zoukankan      html  css  js  c++  java
  • 利用SAMKeyChain生成唯一设备号

    1、背景

    由于传统已知的三种方法获取uuid都不能保证它唯一不变,那么我们可以利用钥匙串服务,来生成并存储一个唯一不变的字符,作为唯一的设备id.

    /** 利用CFUUIDCreateString函数生产UUID, 卸载应用重新安装后会不一致*/
    + (NSString *)getUUID{
        CFUUIDRef uuid = CFUUIDCreate(NULL);
        NSString *UUID = (__bridge_transfer NSString *)CFUUIDCreateString(NULL, uuid);
        CFRelease(uuid);
        return UUID;
    }
     
    /**  卸载应用重新安装后会不一致*/
    + (NSString *)getUUID{
        return [UIDevice currentDevice].identifierForVendor.UUIDString;;
    }
     
    /** 不会因为应用卸载改变 
      * 但是用户在设置-隐私-广告里面限制广告跟踪后会变成@"00000000-0000-0000-0000-000000000000"
      * 重新打开后会变成另一个,还原广告标识符也会变
      */
    + (NSString *)getUUID{
        return [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
    }
    

    2、利用SAMKeyChain生成并保存唯一设备号

    /*利用SAMKeyChain生成并保存唯一设备号*/
    - (NSString *)getDeviceNumber {
        // 首先获取钥匙串中的设备号
        NSString *deviceNumber = [SAMKeychain passwordForService:kKeyChainService account:kKeyChainAccount];
        if (0 == deviceNumber.length) {
            // 获取设别id
            deviceNumber = [[UIDevice currentDevice] identifierForVendor].UUIDString;
            // 将-去掉
            deviceNumber = [deviceNumber stringByReplacingOccurrencesOfString:@"-" withString:@""];
            [SAMKeychain setPassword:deviceNumber forService:kKeyChainService account:kKeyChainAccount];
        }
        return deviceNumber;
    }
    
    /*使用的时候*/
        NSString *deviceNumber = [self getDeviceNumber];
        NSLog(@"deviceNumber: %@", deviceNumber);
    

    3、注意事项

    假设我们的APP 有普通版:appNormal,收费版:appPro,可能会使用不用的bundleID:com.wjw.appNormal、com.wjw.appPro作为区分生成设备id,两套代码里 “kKeyChainService”,“kKeyChainAccount”里如果都一样,若已经安装了appNormal,后安装的appPro里就能取到之前生成的设备id。如果先安装的app删除,再安装新app,新app就会生成新的设备id.

  • 相关阅读:
    Tengine 2.1.2 (nginx/1.6.2)安装配置,淘宝 Web 服务器
    Grafana3.0.1+Zabbix3.0.4监控系统平台搭建
    邮件服务器配置
    python批量连接mysql
    虚拟主机ip配置,nginx.conf文件配置及日志文件切割
    运维自动化的必要条件
    python扫描端口脚本
    zabbix_windowsagent_cpu
    ftp传输文件到指定服务器
    pstools工具使用
  • 原文地址:https://www.cnblogs.com/wjw-blog/p/14505465.html
Copyright © 2011-2022 走看看