1
mynameisz 2016-06-03 17:16:33 +08:00
感谢分享。
|
2
TonyYOYO 2016-06-03 18:17:29 +08:00
IDFV 是啥。。
|
3
Tankpt 2016-06-03 18:38:18 +08:00
好牛逼
|
4
zjddp 2016-06-03 19:06:04 +08:00
|
5
lizhenda 2016-06-03 19:54:15 +08:00
这个不错哦~收藏下
|
7
mushank OP @TonyYOYO identifierForVendor ,具体解释可以查看一下苹果官方文档,还是很容易理解的,另外 4L 那个博客解释的也很清楚喔。
|
9
mushank OP @lizhenda 嗯嗯,已经加入公司实际项目使用过,暂时效果良好,如有问题欢迎提 Issue 或者直接 Pull request 哈!
|
10
loveuqian 2016-06-04 00:10:47 +08:00
我记得你的项目没有 IDFA 相关的东西是不能使用 IDFA 的?
我之前做智能硬件 app 的时候也在研究唯一标识符 最终结果还是由硬件告诉我他的 mac 地址来确定唯一 |
11
mokaiZz 2016-06-04 00:18:13 +08:00 via iPhone 1
为什么要 IDFA 呢,随机生成一个 uuid 就行了呀
|
13
mushank OP @loveuqian 另外苹果关闭了获取 iOS 设备的 UDID 接口和获取 WIFI 模块 Mac 地址的接口,所以目前而言采用 keychain 保存 IDFV 可能是最好的解决方案了。
|
14
mushank OP @mokaiZz 随机生成一个也是可以的,只要能确保其唯一性。另外要做的就是保证你随机生成的 UDID 在各种复杂情况下不会丢失或被重置。
|
15
564425833 2016-06-04 10:28:35 +08:00 via iPhone
感谢分享
|
16
daniellu 2016-06-04 20:55:23 +08:00
为什么不用 identifierForVender 呢?这个不是更好么?可以保证同 vender 是绝对一样的(模拟器不可测试)
|
18
mushank OP @daniellu 该厂商所有 App 都被卸载后, IDFV 是会改变得,所以进一步采用 keychain 确保其前后一致。
|
19
fhefh 2016-06-05 13:47:42 +08:00
mark~~
|
20
iyeatse 2016-06-05 16:48:02 +08:00
提交了个 PR = =
|
22
Dashit 2016-06-07 17:46:55 +08:00
不开 keychain 同步怎么办?
|
23
mushank OP @Dashit 即使不开 iCloud 同步, App 被卸载 /重装 /iOS 系统升级之后、 UDID 也依旧在的。
|
26
vincentxue 2016-06-08 21:31:58 +08:00 via iPhone
楼主为什么要重复造轮子… https://github.com/fabiocaccamo/FCUUID
|
27
mushank OP @vincentxue 自我觉得自己这个更简简洁易用。。。
|
28
daniellu 2016-06-17 18:12:30 +08:00
@mushank 刚刚查过了, identifierForVendor 对于同一个厂商来说,是不变的。如果是从 store 下载的, store 会给设定 vendor ,如果是用企业证书分发,是会用 bundle id 判断。这个个人觉得不会出现同一个供应商的程序卸载之后会不同,如果这样的话,也不需要提供这个 API 了。
唯一需要注意的是,用 bundle id 判断的时候, iOS 6 和 iOS 7+判断部分不同( iOS 6 是前 2 部分, 7+不是)。 The value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor. Normally, the vendor is determined by data provided by the App Store. If the app was not installed from the app store (such as enterprise apps and apps still in development), then a vendor identifier is calculated based on the app ’ s bundle ID. The bundle ID is assumed to be in reverse-DNS format. On iOS 6, the first two components of the bundle ID are used to generate the vendor ID. if the bundle ID only has a single component, then the entire bundle ID is used. On IOS 7, all components of the bundle except for the last component are used to generate the vendor ID. If the bundle ID only has a single component, then the entire bundle ID is used. |