React-native or Native 获取及绑定设备唯一标识并存储到keychain

苹果官方对于iOS设备唯一标识的官方文档链接:
https://developer.apple.com/reference/uikit/uidevice/1620059-identifierforvendor

近日因为公司app有“一账号一设备”的需求,外包已完成此功能,个人也研究了一下,但发现和外包获取的不一样。所以想在此说明一下,以便大家参考。

设备唯一标识简介:
IDFV:
全拼:identifierForVendor
获取设备标识采用的是以下代码片段:
NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
来源:iOS6.0及以后
简要说明:IDFV是给Vendor(应用提供商)标识用户用的,每个设备在所属同一个Vendor的应用里,值都是相同的。准备的说IDFV的值是通过BundleID的反转的前两部分进行匹配,如果相同就是同一个Vendor,共享一个IDFV的值。
与IDFA(advertisingIdentifier)比较:
IDFV的值一定可以取到,所以从这个角度来说很适合作为内部用户行为分析的主id,来标示用户,替代openUDID。
而IDFA则不一定可以取到。
注意:如果用户将属于此Vender的所有App卸载,则idfv的值会被重置,即再重装此Vender的App,idfv的值和之前不同。

举例:
个人亲测:
a.不同开发者团队,同一个DNS反转的前两部分(如:com.taobao.app1中的com.taobao)相同,那么得到的IDFV是一样的。若将用户设备上与com.taobao相同的app都卸载掉重新安装,那么IDFV将会被重置。
b.同一个开发者团队下,同一个DNS反转的前两部分(如:com.taobao.app1中的com.taobao.app2)不同,那么得到的IDFV也是一样的。若将用户设备上与com.taobao相同的app都卸载掉重新安装,那么IDFV将会被重置。
c.同一个开发者团队下,同一个DNS反转的前两部分(如:com.baidu.app1中的com.taobao.app2)不同,那么得到的IDFV是不同的。若将用户设备上与com.taobao相同的app都卸载掉重新安装,那么IDFV将会被重置。

React-native or Native 获取及绑定设备唯一标识并存储到keychain_第1张图片
小结:接下来有闲余时间,会写一下关于:UUID/UDID/IDFA/MAC地址相关作为设备唯一标识的使用及局限性。今天就到这里啦~~~

你可能感兴趣的:(iOS,react-native)