`

iOS5:[UIDevice uniqueIdentifier]的替代方案[转]

 
阅读更多

http://kensou.me/blog/?p=264

 

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

分享到:
评论

相关推荐

    IOS应用源码——UIDevice2.rar

    《iOS应用源码解析——基于UIDevice2》 在iOS应用开发中,了解并掌握源码是提升技术深度的关键步骤。本次我们关注的是"UIDevice2"相关的源码,这是一份与iOS设备信息交互密切相关的代码。"UIDevice"是苹果iOS SDK中...

    获取 ios 系统网络状况、电量

    综上所述,了解并使用`Reachability`库可以帮助我们监测iOS设备的网络状态,而通过`UIDevice`的电池状态和电量属性,我们可以获取电池相关信息。这些功能对于构建具有优秀用户体验的iOS应用来说非常重要。结合提供的...

    iOS App开发中通过UIDevice类获取设备信息的方法

    在iOS应用开发中,`UIDevice`类是获取设备相关信息的关键工具。这个类提供了丰富的属性和方法,使得开发者能够获取到设备的多个方面信息,包括但不限于设备名称、唯一标识符、系统名称、系统版本、设备型号以及电池...

    读取设备信息 ios

    在iOS 5之前,开发者可以直接通过`UIDevice`类的`uniqueIdentifier`属性来获取UUID。然而,由于隐私和安全原因,从iOS 5开始,苹果不再推荐使用`uniqueIdentifier`,因为它无法保证永久不变,且容易被滥用。替代方案...

    ios应用源码之获取当前硬件可用内存的例子uidevice 20181210

    本示例代码主要展示了如何使用UIKit中的UIDevice类来获取iOS设备的当前可用内存。UIDevice是苹果提供的一种系统服务接口,允许开发者获取设备的各种信息,包括硬件配置、电池状态、网络状态等。 首先,我们需要导入...

    UIDevice-DisplayName:返回任何iOS设备的友好名称

    UIDevice-DisplayName displayName()返回iOS设备的友好名称,其中不包括特定的类型信息(即“ iPhone X”) displayName(includeType: true)返回iOS设备的友好名称,其中还包括设备类型(例如“ iPhone X(GSM)”)...

    UIDevice获取IOS系统版本信息

    UIDevice类是一个单例,其唯一的实例( [UIDevice currentDevice] ) 代表了当前使用的设备。 通过这个实例,可以获得设备的相关信息(包括系统名称,版本号,设备模式等等)。 也可以使用使用该实例来监测设备的...

    IOS应用源码Demo-获取当前硬件可用内存的例子UIDevice-毕设学习.zip

    这个压缩包"IOS应用源码Demo-获取当前硬件可用内存的例子UIDevice-毕设学习.zip"提供了一个实例,教你如何利用`UIDevice`类来获取设备的可用内存信息,这对于进行性能优化和调试非常有用。下面将详细介绍这一知识点...

    iOS 旋转罗盘菜单

    在iOS应用开发中,"旋转罗盘菜单"是一种独特且吸引用户的交互设计,它通常用于展示一系列可选项,用户可以通过旋转模拟罗盘的方式来选择。这种菜单设计为用户提供了一种直观且有趣的交互方式,尤其适用于设置界面...

    iOS适应屏幕旋转的悬浮窗

    3. **处理屏幕旋转**:iOS设备支持多种屏幕方向,如Portrait(竖屏)、Landscape Left(左横屏)、Landscape Right(右横屏)等。为了使悬浮窗在屏幕旋转时保持正确的位置,你需要监听屏幕方向的变化。可以通过观察`...

    可以供Robotium等实现跨进程的Uiautomator.jar

    可以供Robotium等实现跨进程的Uiautomator.jar,直接导入即可调用 API e.g: UiDevice uiDevice = UiDevice.getInstance(getInstrumentation());

    IOS Toast的使用

    在iOS开发中,"Toast"通常指的是短暂显示在屏幕上的提示信息,用于向用户传达一些非阻塞式的通知或信息。这种设计模式源自Android系统,但在iOS中也被广泛应用,特别是在iPad这样的大屏幕设备上,可以提供更好的用户...

    iOS电量显示

    总结起来,要实现在iOS应用中判断手机是否充电以及获取电量剩余,主要涉及到`CFBatteryUnplugged`函数(判断充电状态)和`UIDevice`类的`batteryState`和`batteryLevel`属性(获取电量)。开发者可以通过监听通知和...

    IOS应用源码——获取当前硬件可用内存的例子UIDevice.zip

    这个"IOS应用源码——获取当前硬件可用内存的例子UIDevice.zip"提供了一个简单的示例,演示了如何利用Apple的UIKit框架中的UIDevice类来获取iOS设备的当前可用内存。下面将详细介绍这个知识点及其相关背景。 首先,...

    在IOS项目中获取手机设备的精确电量

    1. **监控系统事件**:iOS会定期发送电池状态变化的通知,我们可以通过监听这些通知来实时更新电量。使用`NotificationCenter`注册电池状态变更的观察者: ```swift NotificationCenter.default.addObserver( ...

    ahoy-ios:适用于在Ruby on Rails的Ahoy之上构建的Apple平台的分析和归因库

    淘iOS 适用于Apple平台的简单访问属性和分析库,可与您的Rails 后端集成。 :waning_gibbous_moon: 用户访问跟踪 :inbox_tray: 通过UTM和引荐来源网址参数访问归因 :tear-off_calendar: 简单,直接的内部事件跟踪安装...

    UIDevice扩展

    **UIDevice** 是iOS中的一个基础类,用于表示当前应用运行的设备。通过这个类可以获取到设备的基本信息,如操作系统版本、设备型号等。 #### 三、扩展功能介绍 ##### 1. 设备重启 - **功能**: `+ (int)reboot;` ...

    IOS按钮长按效果,类似微信录音按钮

    在iOS开发中,实现“长按”(Long Press)效果是一项常见的交互设计,尤其是在需要触发特定功能或操作的场景下,比如微信中的录音按钮。这个功能对于提升用户体验有着重要作用,因为它提供了一种非点击式的交互方式...

    IOS应用源码之获取当前硬件可用内存的例子UIDevice .zip

    这个压缩包"IOS应用源码之获取当前硬件可用内存的例子UIDevice .zip"提供了一个示例代码,用于演示如何利用苹果的UIKit框架中的UIDevice类来获取iOS设备的当前可用内存。这篇文章将深入探讨这个知识点,并详细解释其...

    swift-iOSApp获取唯一标识符方案

    6. **MAC地址**:iOS 7以后,苹果不再允许访问设备的MAC地址,以保护用户隐私。 7. **UUID(Universally Unique Identifier)**:在iOS 8之后,苹果推荐使用`NSUUID`来创建应用内部的唯一标识符。这个UUID只对单个...

Global site tag (gtag.js) - Google Analytics