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的用法:
其中方法“- (void)setObject:(id)inObject forKey:(id)key;”里参数“forKey”的值应该是Security.framework 里头文件“SecItem.h”里定义好的key,用其他字符串做key程序会出错!
相关推荐
8种iOS获取设备唯一标识的方法,希望对大家有用。 UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可以改变设备的 UDID),移动网络可以利用 UDID ...
- `GetiOSDeviceIdentifier`: 用于获取iOS设备的唯一标识,可能包括IDFA、UUID等。 - `GetAndroidDeviceIdentifier`: 用于获取Android设备的唯一标识,可能使用ANDROID_ID或其他方式。 - `...
在Android开发中,获取手机的唯一标识是一个常见的需求,用于区分不同的设备,便于数据分析或个性化服务。Android系统提供了多种方式来获取设备的标识,但随着系统版本的更新和隐私保护政策的变化,这些方法的可用性...
本文将深入探讨如何在Android和iOS平台上获取类似于"serial"(序列号)和"EMEI"(国际移动设备识别码)的设备唯一标识。 首先,让我们来看看Android系统。在Android中,获取设备的序列号可以通过`Build.SERIAL`属性...
首先,我们要明确一点:Apple出于隐私考虑,从iOS 7开始,不再推荐使用UDID(Unique Device Identifier)作为设备的唯一标识,而是提供了多个替代方案,如广告标识符(IDFA)、设备应用共享ID(Identifier for ...
在iOS开发中,获取设备的唯一标识是一个常见的需求,它有助于开发者区分不同的用户设备,进行个性化设置、数据同步或者分析用户行为。然而,由于隐私保护的考虑,Apple对获取设备唯一标识符的方法进行了严格的限制。...
iOS获取唯一标识,在不刷机的前提下,无论多次获取,还是卸载后重装程序,获取的 uuid 都不会发生改变
本文将详细讲解如何在iOS系统中获取设备的唯一标识,并讨论相关的重要知识点。 首先,我们需要理解“UUID”(Universally Unique Identifier)的概念。UUID是一个128位的数字,设计用来在全球范围内生成唯一的...
本篇文章将深入探讨如何在iOS上合法且有效地取得设备的唯一标志,同时遵循Apple的隐私政策。 在iOS 5之前,开发者可以使用UDID(Unique Device Identifier)来标识每个设备。UDID是一个全局唯一的40位16进制字符串...
在iOS开发中,获取设备名称和生成设备唯一标识符是两个关键操作,它们对于调试、统计分析、个性化服务以及安全措施都有重要作用。本资源“ios-获取iOS设备名称及生成设备唯一标识符.zip”提供了相关的代码库...
本文将详细讲解如何在Android和iOS平台上获取设备的唯一标识。 首先,我们来看看Android平台上的实现方法。在Android系统中,曾经有多种方式可以获取设备的唯一标识,如IMEI(International Mobile Equipment ...
1. iOS:在iOS系统中,通常使用UDID(Unique Device Identifier)作为设备的唯一标识。然而,由于隐私保护政策的改变,自iOS 6开始,Apple不再提供UDID。现在,开发者可以使用广告标识符(IDFA,Identifier for ...
在iOS系统中,UDID(Unique Device Identifier)是设备独一无二的标识符,IMEI(International Mobile Equipment Identity)是国际移动设备识别码,SN(Serial Number)是设备序列号,而ICCID(Integrated Circuit ...
在开发针对Windows Mobile设备的应用程序时,...需要注意的是,随着移动平台的发展,如Windows Phone和现代的Android、iOS,获取设备唯一标识的方法可能会有所变化,因此开发者应始终关注最新的平台文档和技术更新。
iOS 2.0版本以后UIDevice提供一个获取设备唯一标识符的方法uniqueIdentifier,通过该方法我们可以获取设备的序列号,这个也是目前为止唯一可以确认唯一的标示符。好景不长,因为该唯一标识符与手机一一对应,苹果...
unity获取设备唯一标识 android ios 包括ios7以上没有问题
以下是对“swift-iOSApp获取唯一标识符方案”的详细解释。 首先,我们要了解几个常见的标识符: 1. **UDID(Unique Device Identifier)**:这是一个早期的设备唯一标识符,但已被Apple禁止在App Store中使用。 2...
3. 如果需要识别特定设备,可以使用UDID(Unique Device Identifier)或者自定义的设备唯一标识。 总的来说,获取iOS设备的IP地址相对简单,但获取MAC地址则受到系统限制。在实际应用中,应遵循Apple的隐私政策,...
Unity3d获得android和ios设备的唯一标识-附件资源