【iOS开发】手机唯一标识符

568 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情


UDID

项目说明
全称Unique Device Identifier,设备唯一标识符
格式40个字符长度的字符串(字母+数字)
特点每台 iOS设备唯一的、仅与设备相关的,这点与设备序列号相似
作用区分 iOS 设备(包括 iPhone、iPad 等),将其他数据与设备关联起来
场景设备注册、埋点统计等
  • 获取方法
    • 通过 iTunes/Finder 查看
    • 通过 Xcode 查看 Window->Devices and Simulators->identifier
    • 通过代码获取 [UIDevice currentDevice].identifierForVendor.UUIDString

iOS5之后,苹果出于隐私考虑,禁用了获取 UDID 的 API,并且禁止上架试图获取 UDID 的应用。 日常开发中,可以用 UUID 替代。

UUID

项目说明
全称Universally Unique Identifier,通用唯一标识符
格式通过小横线连接起来的32位的十六进制序列。例如0DEF9507-EB5A-471A-8BC7-638A0B0A327D
特点只在某一时空是唯一的,当每次卸载应用之后获取到的UUID都是不一样的
作用将这个UUID保存在keychain里面,以此作为唯一标识符,区分 iOS 设备(包括 iPhone、iPad 等),将其他数据与设备关联起来
场景设备注册、埋点统计等|
  • UUID的获取方式

    • 通过代码获取 NSString *uuid = [NSUUID UUID].UUIDString;
  • 如何存储UUID?

    • 用Keychain(钥匙串)存储。
  • 什么是 Keychain?

    • Keychain是苹果在OS X/iOS系统中提供的一种安全存储敏感信息的工具。所谓敏感信息,即用户ID、password、certificate等。
    • Keychain里面存储的数据是item,这些item是以key-value的形式存储的,可以理解为Dictonary。利用Keychain存储这些信息可以提高用户体验,免除用户重复输入用户名和密码等繁琐的操作。
    • Keychain Service安全机制能够保障存储的信息不会被窃取,所以可以用来存储UUID等。
  • 为什么要用 Keychain 存储 UUID?

    • Keychain的数据并非是存放在应用程序的沙盒中,所以即使当用户删除app,存储的资料依然在keychain中。用户再一次安装该应用程序的时候又可以从keychain中获取数据。
    • Keychain的数据有经过加密,更安全。
    • Keychain提供了一个公共区"keychain access group",可以通过这个group实现应用程序之间的数据共享。