欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

iOS获取设备唯一标识的实现步骤

程序员文章站 2022-06-09 20:37:08
1. 常用的uuidudid是一个40位十六进制序列(越狱的设备通过某些工具可以改变设备的 udid),移动网络可以利用 udid 来识别移动设备。许多开发者把 udid 跟用户的个人信息关联起来,网...

1. 常用的uuid

udid是一个40位十六进制序列(越狱的设备通过某些工具可以改变设备的 udid),移动网络可以利用 udid 来识别移动设备。

许多开发者把 udid 跟用户的个人信息关联起来,网络窥探者会从多个应用收集这些数据,然后顺藤摸瓜得到这个人的许多隐私数据,同时大部分应用确实在频繁传输 udid 和私人信息。 为了避免集体诉讼,苹果最终决定在 ios 5 的时候,将这一惯例废除。

获取uuid的方法:

2. mac 地址

mac地址,用来表示互联网上每一个站点的标示符,是一个六个字节(48位)的十六进制序列。前三个字节是由 ieee 的注册管理机构 ra 负责给不同厂家分配的”编制上唯一的标示符,后三个字节由各厂家自行指派给生产的适配器接口。

mac 地址在网络上用来区分设备的唯一性,接入网络的设备都有一个mac地址,他们肯定都是唯一的。一部 iphone 上可能有多个 mac 地址,包括 wifi 的、sim 的等,但是 itouch 和 ipad 上就有一个 wifi 的,因此只需获取 wifi 的 mac 地址就好了。一般会采取 md5(mac 地址 + bundleid)获取唯一标识。

但是 mac 地址和 udid 一样,存在隐私问题, ios 7 之后,所有设备请求 mac 地址会返回一个固定值,这个方法也不攻自破了。

获取mac在github找到一个挺好的方法:

2.1 首先导入下面几个库:

iOS获取设备唯一标识的实现步骤

2.2 新建一个文件,继承nsobject,在.m文件导入头文件,以及定义一些宏

如果出现 “_res_9_ninit", referenced from:”这种报错,是因为没有添加步骤1的几个库

3.uuid+自己存储

3.1 获取uuid的两个方法

很明显uuid已经不足以支持设备的唯一性了,目前很多app都有新用户的优惠,但是又要保证每台设备绑定一个账户,如果单纯使用uuid的话已经满足不了这个需求,所以,这里需要用keychain保存,这样即使卸载app在安装,获取到的uuid也是唯一性的。

3.2 首先在项目中添加 keychain sharing

iOS获取设备唯一标识的实现步骤

3.3 导入第三方库 security.framework

iOS获取设备唯一标识的实现步骤

3.4 核心代码(代码有点多)

在github搜索sskeychain可以找到,只要 sskeychain.h 和 sskeychain.m 文件即可

3.4 创建新类,引用 sskeychain 封装

以上就是ios获取设备唯一标识的实现步骤的详细内容,更多关于ios获取设备唯一标识的资料请关注其它相关文章!

相关标签: iOS 设备 标识