美文网首页
UIID 和 UDID 的生成

UIID 和 UDID 的生成

作者: 黑羽肃霜 | 来源:发表于2018-12-18 20:36 被阅读48次

概念

这里讲到的 UIID 和 UDID 是我们开发过程中抽象出来的两个概念。我们可以认为:

  • UIID: user installed ID, 也就是用户在 app 安装周期内,当前 app 内记录本机的唯一标识符。
  • UDID: user device ID,用户在 非刷机前提下,当前 app 内记录的本机的唯一标识符

区别在于他们的生命周期。

  • UIID: 在 APP 卸载以后,标识符消失。重新安装 app 后生成一个新的
  • UDID: 不随卸载而改变,除非刷机。

背景

看到这里,肯定会觉得奇怪。

我们通过 iTunes 或其他的 第三方工具看到的本机识别码明明是固定的。 为什么会说刷机之后改变了?

iOS 5 开始,已经不允许开发者直接获取设备上的 UDID 因为涉及用户的隐私。
从那之后,有过许许多多的替代方案用作设备的唯一识别码。我们文首提到的 UIIDUDID 就是针对这种方案下做的。

其实,定义唯一标识符的协议方式有很多种。你可以使用自定义的方式,例如加上时间戳、多位随机数等等。特别是跟业务逻辑相关的识别码,一定有一套自己的协议。
UIIDUDID最大的区别在于存储方式和使用时长的区别。

UIID

根据上文的阐述,这个 ID 是存在 app 安装的周期内的。那么我们可以认为他是一个存在 app 所在沙盒内的一个字符串。我们可以存在 cacheNSUserDefault

UDID

很多文章中使用了 IDFA 的方式来进行唯一的标识符 直译就是广告 ID, 在同一个设备上的所有App都会取到相同的值,是苹果专门给各广告提供商用来追踪用户而设的,用户可以在 设置|隐私|广告追踪 里重置此id的值,或限制此id的使用,故此id有可能会取不到值.

至于持久化,我们可以借用 keychain来作为保存的对象。

下面是一段 swift 的代码

import AdSupport
import KeychainAccess // 第三方库

fileprivate let keychainServiceName = "igg.gameAssistant.uuid.service"
fileprivate let UDIDKey = "igg.gameAssistant.udid"
fileprivate let keychain = Keychain(service: keychainServiceName)

func createUDID() -> String {
        let isUserOpenAdTrackingFuction = ASIdentifierManager.shared().isAdvertisingTrackingEnabled
        var UUIDString = ""
        
        if isUserOpenAdTrackingFuction {
            UUIDString = ASIdentifierManager.shared().advertisingIdentifier.uuidString.lowercased()
        } else {
            UUIDString = UUID().uuidString.lowercased()
        }
        
        keychain[UDIDKey] = UUIDString
        return keychain[UDIDKey]!
    }

相关文章

  • UIID 和 UDID 的生成

    概念 这里讲到的 UIID 和 UDID 是我们开发过程中抽象出来的两个概念。我们可以认为: UIID: user...

  • iOS keyChain 的使用

    一、利用KeyChain生成靠谱的UDID 首先我们回顾一下iOS不同版本获取机器UDID的方法 iOS 5.0i...

  • UDID和UUID的区别

    UDID和UUID的区别 1.1【UDID】 UDID的全名为 Unique Device Identifier ...

  • iOS 面试题(二)

    1.UDID和UUID UDID UDID的全名为Unique Device Identifier :设备唯一标识...

  • iOS证书开发流程

    一、99美元账号开发流程: 1、登陆账号生成开发证书和生产证书 2、添加测试设备的udid 3、创建应用id 4、...

  • Swift & OC 获取 设备UUID

    swift: let User_UIID = UIDevice.currentDevice().identifie...

  • 阿里推送个人总结:

    先说一下推送不用三方推送实现的原理:简单来说,1.iPhone的UDID和App的Boundle Id生成devi...

  • day11-特殊权限

    《 用户管理 》 特殊权限 【suid (set uiid)】 set uid 简称 suid ...

  • UDID和UUID

    1、UDID(Unique Device Identifier) UDID是Unique Device Ident...

  • UUID 和 UDID

    UDID 全名是 Unique Device Identifier ,设备唯一标识符。适合设备有关的,而且只和设备...

网友评论

      本文标题:UIID 和 UDID 的生成

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