持续创作,加速成长!这是我参与「掘金日新计划 · 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实现应用程序之间的数据共享。