`
anlulu
  • 浏览: 43387 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IOS7获取设备的唯一标识

    博客分类:
  • ios
阅读更多

WWDC 2013已经闭幕,IOS7 Beta随即发布,界面之难看无以言表...,简直就是山寨Android。

更让IOS程序猿悲催的是,设备唯一标识的MAC Address在IOS7中也失效了。

IOS系统中,获取设备唯一标识的方法有很多:

一.UDID(Unique Device Identifier)

 UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成。

二.UUID(Universally Unique Identifier) 

UUID是Universally Unique Identifier的缩写,中文意思是通用唯一识别码.

三.MAC Address

四.OPEN UDID

五.广告标示符(IDFA-identifierForIdentifier)

六.Vindor标示符 (IDFV-identifierForVendor)

Vendor是CFBundleIdentifier(反转DNS格式)的前两部分。来自同一个运营商的应用运行在同一个设备上,此属性的值是相同的;不同的运营商应用运行在同一个设备上值不同。

经测试,只要设备上有一个tencent的app,重新安装后的identifierForVendor值不变,如果tencent的app全部删除,重新安装后的identifierForVendor值改变。

 

但是很不幸,上面所有这些表示设备唯一号的标识,在IOS7中要么被禁止使用,要么重新安装程序后两次获取的标识符不一样。

由于IOS系统存储的数据都是在sandBox里面,一旦删除App,sandBox也不复存在。好在有一个例外,那就是keychain(钥匙串)。

通常情况下,IOS系统用NSUserDefaults存储数据信息,但是对于一些私密信息,比如密码、证书等等,就需要使用更为安全的keychain了。

keychain里保存的信息不会因App被删除而丢失。所以,可以利用这个keychain这个特点来保存设备唯一标识。

那么,如何在应用里使用使用keyChain呢,我们需要导入Security.framework ,keychain的操作接口声明在头文件SecItem.h里。

直接使用SecItem.h里方法操作keychain,需要写的代码较为复杂,我们可以使用已经封装好了的工具类KeychainItemWrapper来对keychain进行操作。

KeychainItemWrapper是apple官方例子“GenericKeychain”里一个访问keychain常用操作的封装类,在官网上下载了GenericKeychain项目后,

只需要把“KeychainItemWrapper.h”和“KeychainItemWrapper.m”拷贝到我们项目,并导入Security.framework 。KeychainItemWrapper的用法:

/** 初始化一个保存用户帐号的KeychainItemWrapper */
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"Account Number"
                                                                   accessGroup:@"YOUR_APP_ID_HERE.com.yourcompany.AppIdentifier"];  
 
//保存数据
[wrapper setObject:@"<帐号>" forKey:(id)kSecAttrAccount];    
 
[wrapper setObject:@"<帐号密码>" forKey:(id)kSecValueData];    
 
//从keychain里取出帐号密码
NSString *password = [wrapper objectForKey:(id)kSecValueData];      
 
//清空设置
[wrapper resetKeychainItem];

其中方法“- (void)setObject:(id)inObject forKey:(id)key;”里参数“forKey”的值应该是Security.framework 里头文件“SecItem.h”里定义好的key,用其他字符串做key程序会出错!

 

分享到:
评论

相关推荐

    iOS获取设备唯一标识的8种方法

    8种iOS获取设备唯一标识的方法,希望对大家有用。 UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可以改变设备的 UDID),移动网络可以利用 UDID ...

    Delphi跨平台(Win,Android,IOS)获取设备唯一标识符

    - `GetiOSDeviceIdentifier`: 用于获取iOS设备的唯一标识,可能包括IDFA、UUID等。 - `GetAndroidDeviceIdentifier`: 用于获取Android设备的唯一标识,可能使用ANDROID_ID或其他方式。 - `...

    获取手机唯一标识

    在Android开发中,获取手机的唯一标识是一个常见的需求,用于区分不同的设备,便于数据分析或个性化服务。Android系统提供了多种方式来获取设备的标识,但随着系统版本的更新和隐私保护政策的变化,这些方法的可用性...

    获取设备唯一标识的例子

    本文将深入探讨如何在Android和iOS平台上获取类似于"serial"(序列号)和"EMEI"(国际移动设备识别码)的设备唯一标识。 首先,让我们来看看Android系统。在Android中,获取设备的序列号可以通过`Build.SERIAL`属性...

    获取设备唯一标识符UUID

    首先,我们要明确一点:Apple出于隐私考虑,从iOS 7开始,不再推荐使用UDID(Unique Device Identifier)作为设备的唯一标识,而是提供了多个替代方案,如广告标识符(IDFA)、设备应用共享ID(Identifier for ...

    iOS获取设备的唯一标识

    在iOS开发中,获取设备的唯一标识是一个常见的需求,它有助于开发者区分不同的用户设备,进行个性化设置、数据同步或者分析用户行为。然而,由于隐私保护的考虑,Apple对获取设备唯一标识符的方法进行了严格的限制。...

    iOS获取唯一标识uuid

    iOS获取唯一标识,在不刷机的前提下,无论多次获取,还是卸载后重装程序,获取的 uuid 都不会发生改变

    获取iOS设备唯一标识

    本文将详细讲解如何在iOS系统中获取设备的唯一标识,并讨论相关的重要知识点。 首先,我们需要理解“UUID”(Universally Unique Identifier)的概念。UUID是一个128位的数字,设计用来在全球范围内生成唯一的...

    ios上取得设备唯一标志的解决方案

    本篇文章将深入探讨如何在iOS上合法且有效地取得设备的唯一标志,同时遵循Apple的隐私政策。 在iOS 5之前,开发者可以使用UDID(Unique Device Identifier)来标识每个设备。UDID是一个全局唯一的40位16进制字符串...

    ios-获取iOS设备名称及生成设备唯一标识符.zip

    在iOS开发中,获取设备名称和生成设备唯一标识符是两个关键操作,它们对于调试、统计分析、个性化服务以及安全措施都有重要作用。本资源“ios-获取iOS设备名称及生成设备唯一标识符.zip”提供了相关的代码库...

    获取移动设备唯一标识

    本文将详细讲解如何在Android和iOS平台上获取设备的唯一标识。 首先,我们来看看Android平台上的实现方法。在Android系统中,曾经有多种方式可以获取设备的唯一标识,如IMEI(International Mobile Equipment ...

    Delphi 12 控件之 ios,android,mswindows获取设备唯一标识符和mac地址.rar

    1. iOS:在iOS系统中,通常使用UDID(Unique Device Identifier)作为设备的唯一标识。然而,由于隐私保护政策的改变,自iOS 6开始,Apple不再提供UDID。现在,开发者可以使用广告标识符(IDFA,Identifier for ...

    iOS7获取UDID、IMEI、SN、ICCID、Mac地址等信息

    在iOS系统中,UDID(Unique Device Identifier)是设备独一无二的标识符,IMEI(International Mobile Equipment Identity)是国际移动设备识别码,SN(Serial Number)是设备序列号,而ICCID(Integrated Circuit ...

    获取 Windows Mobile 设备的唯一标识

    在开发针对Windows Mobile设备的应用程序时,...需要注意的是,随着移动平台的发展,如Windows Phone和现代的Android、iOS,获取设备唯一标识的方法可能会有所变化,因此开发者应始终关注最新的平台文档和技术更新。

    iOS 获取设备唯一标示符的方法详解

    iOS 2.0版本以后UIDevice提供一个获取设备唯一标识符的方法uniqueIdentifier,通过该方法我们可以获取设备的序列号,这个也是目前为止唯一可以确认唯一的标示符。好景不长,因为该唯一标识符与手机一一对应,苹果...

    unity获取设备ID

    unity获取设备唯一标识 android ios 包括ios7以上没有问题

    ios 获取IP Mac地址

    3. 如果需要识别特定设备,可以使用UDID(Unique Device Identifier)或者自定义的设备唯一标识。 总的来说,获取iOS设备的IP地址相对简单,但获取MAC地址则受到系统限制。在实际应用中,应遵循Apple的隐私政策,...

    Unity3d获得android和ios设备的唯一标识-附件资源

    Unity3d获得android和ios设备的唯一标识-附件资源

    ios开发获取手机唯一标识符和调用系统打电话拨号功能

    在早期的iOS版本中,开发者可以使用`UDID`(Unique Device Identifier)来获取设备的唯一标识,但出于隐私保护考虑,Apple在iOS 5之后限制了`UDID`的使用。因此,开发者需要寻找其他替代方案。 1. **广告标识符...

Global site tag (gtag.js) - Google Analytics