美文网首页
iOS获取设备唯一标识和UUID方案

iOS获取设备唯一标识和UUID方案

作者: WMSmile | 来源:发表于2022-03-10 18:10 被阅读0次

    iOS获取设备唯一标识和UUID方案

    以下获取uuidString的方法,每次重启都会改变。

    UIDevice.current.identifierForVendor?.uuidString
    

    但是项目的要求是不变,并且删除app 只有也有有保留的需求。显然这个无法满足我们的需求。

    使用KeyChain解决

    来了解一下一KeyChain。keychain(钥匙串)存储在iOS系统中,并且恢复iPhone会使keychain的内容也恢复.但是删除App是不会影响keychain.
    不同App之间Keychain是不能相互访问的,但是可以通过配置keychain-sharing来解决。

    使用KeyChain保存到系统钥匙串中,然后再去获取相应的值,就可以保证删除app新装的app也能获取到第一次安装存储的值。显然是可以满足我们的需求的。

    下面使用KeychainAccess的第三方类库来实现。

    1、pod 引入包

      pod 'KeychainAccess'
    

    2、自己写的工具类

    //
    //  UUIDTool.swift
    //  KeychainDemo
    //
    //  Created by wumeng on 2022/3/10.
    //
    
    import UIKit
    
    import KeychainAccess
    
    struct UUIDTool{
    
        static let KEYCHAIN_SERVICE:String = "com.wumeng.KeychainDemo"
        static let IMEI_KEY:String = "IMEI"
        
        static func getUUID() -> String{
            let keychain = Keychain(service: KEYCHAIN_SERVICE)
            var uuid:String = ""
            do {
                uuid = try keychain.get(IMEI_KEY) ?? ""
            }
            catch let error {
                print(error)
            }
            print("1111 \(uuid)")
            if uuid.isEmpty {
                uuid = UUID().uuidString
                do {
                    try keychain.set(uuid, key: IMEI_KEY)
                }
                catch let error {
                    print(error)
                    uuid = ""
                }
            }
            return uuid
        }
        
    }
    
    

    开箱即用!

    使用方法:

    UUIDTool.getUUID()
    

    大功告成!

    相关文章

      网友评论

          本文标题:iOS获取设备唯一标识和UUID方案

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