iOS5之后,原来获取iPhone的DeviceId的接口:[UIDevice uniqueIdentifier] 被废弃!
这个改动会影响非常多的人,尤其是数据分析者。由于iPhone取IMEI困难(属于私有方法),所以大多数应用将DeviceId,也就是uniqueIdentifier作为IMEI来使用。如果这个接口被废弃,那么,我们就需要寻求一个新的方式来标识唯一的设备。
官方推荐的方法是,每个应用内创建一个UUID来作为唯一标志,并将之存储,但是这个解决方法明显不能接受!原因是,你每次创建的UUID都是不一样的,意味着,你卸载后重新安装这个软件,生成的UUID就不一样了,无法达到我们将之作为数据分析的唯一标识符的要求。
现有的解决方案是,使用iPhone的Mac地址,因为Mac地址也是唯一的。unix有系统调用可以获取Mac地址。但是有些事情需要注意:
1.iPhone可能有多个Mac地址,wifi的地址,以及SIM卡的地址。一般来讲,我们取en0的地址,因为他是iPhone的wifi的地址,是肯定存在的。(例外情况依然有:市面上依然存在一部分联通的阉割版无wifi的iPhone)
2.Mac地址涉及到隐私,不应该胡乱将用户的Mac地址传播!所以我们需要将Mac地址进行hash之后,才能作为DeviceId上传。
网上已经有现成的解决方案:
https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5
本文出自 “风沙” 博客,请务必保留此出处
http://kensou.blog.51cto.com/3495587/655083
分享到:
相关推荐
IOS应用源码——UIDevice2.rar
UIDevice最常见的用法就是用来监测iOS设备的电量了,然后再实现电池状态通知非常方便,除此之外还有传感器等信息的获取,这里我们就来总结一下iOS App开发中通过UIDevice类获取设备信息的方法:
UIDevice-DisplayName displayName()返回iOS设备的友好名称,其中不包括特定的类型信息(即“ iPhone X”) displayName(includeType: true)返回iOS设备的友好名称,其中还包括设备类型(例如“ iPhone X(GSM)”)...
UIDevice类是一个单例,其唯一的实例( [UIDevice currentDevice] ) 代表了当前使用的设备。 通过这个实例,可以获得设备的相关信息(包括系统名称,版本号,设备模式等等)。 也可以使用使用该实例来监测设备的...
ios应用源码之获取当前硬件可用内存的例子uidevice .
可以供Robotium等实现跨进程的Uiautomator.jar,直接导入即可调用 API e.g: UiDevice uiDevice = UiDevice.getInstance(getInstrumentation());
淘iOS 适用于Apple平台的简单访问属性和分析库,可与您的Rails 后端集成。 :waning_gibbous_moon: 用户访问跟踪 :inbox_tray: 通过UTM和引荐来源网址参数访问归因 :tear-off_calendar: 简单,直接的内部事件跟踪安装...
IOS应用源码——获取当前硬件可用内存的例子UIDevice.zip
IOS应用源码之获取当前硬件可用内存的例子UIDevice .zip
THMultipeer 适用于 iOS 7 的附近连接库(蓝牙或 wifi) THMultpeer 是 Apple ...THMultipeer.me().info = [ " model " : UIDevice. currentDevice ().model] THMultipeer.me().broadcast() 委托方法 /* * * New pe
很多时候我们需要设备的唯一标识符,但自从 iOS 5.0 之后,苹果公司开始限制 [UIDevice currentDevice].uniqueIdentifier 的访问,而现在,这个接口已经被移除,多了一个新的 identifierForVendor 接口。对每个单独...
UIDevice. currentDevice (). deviceType 设备类型的布尔检查(适用于任何地方): if UIDevice. currentDevice (). isIPhone { // Do some iPhone related stuff... } 视图大小的布尔检查(用于视图控制器):...
前两年IOS应用源码-主要是用于毕业设计学习的。
个人总结,仅供参考;废话一句,全为二十。
UIDeviceComplete是一个iOS库,旨在作为UIDevice扩展的集合,它提供UIDevice当前缺少的功能,例如确定您拥有哪个iOS设备(即iPhone X,iPhone 8,iPhone SE,iPad Pro,iPhone 7等)或确定屏幕。设备尺寸(以英寸为...
MGCopyAnswer-From-UIDevice 如何从 UIDevice 类 PRIVATE API 获取设备信息
类别UIDevice+isIPAD{.h,.m} UILabel+Font{.h,.m} UIScreen+Frame{.h,.m} UIView+Frame{.h,.m} UIView+Xib{.h,.m} UIViewController+Xib{.h,.m} NSManagedObject+Map{.h,.m} NSManagedObject+Extension{.h,.m} ...
20-iOS SDK使用指南:利用UIDevice/NSLocale访问设备数据 移动信息化 Informatization 22-BYOD:CIO的第二十二条军规 24-XTools谢亿民:移动信息化不是简单的云落地 开发工具 Tool 26-Mono for Android 4.2初探 ...
确定当前iOS设备的确切硬件。 发牌 特此免费授予获得此软件和相关文档文件(“软件”)副本的任何人无限制地处理软件的权利,包括但不限于使用,复制,修改,合并的权利,发布,分发,再许可和/或出售本软件的副本,...