苹果官方给出的代替[UIDevice uniqueIdentifier]获取UDID的方法
来源:互联网 发布:大话数据库 知乎 编辑:程序博客网 时间:2024/05/18 03:15
苹果关于UIDevice uniqueIdentifier的方法在文档中写到:
uniqueIdentifier
An alphanumeric string unique to each device based on various hardware details. (read-only) (Deprecated in iOS 5.0. Instead, create a unique identifier specific to your app.)
@property (nonatomic, readonly, retain) NSString *uniqueIdentifier
Special Considerations
Do not use the uniqueIdentifier property. To create a unique identifier specific to your app, you can call the CFUUIDCreate function to create a UUID, and write it to the defaults database using the NSUserDefaults class.
主要看划线的部分,之前看论坛的上有人提到一些第三方的解决方案,但是实际上苹果也给出了替代的解决方案
根据划线部分的提示,实际上只需要在第一次使用程序的时候用CFUUIDCreate创造一个 UUID,然后将它存到NSUserDefault中,当做以前的UDID来用就行了
不过直接调用CFUUIDCreate得到的还不是一个直接的NSString,需要经过一些步骤才能转换成我们熟悉UDID形式:
以下是我自己最终完成的代码,包括了生成和存储的过程:
补充:
关于CFUUIDCreate,在苹果文档上有说明:
CFUUIDCreate
Creates a Universally Unique Identifier (UUID) object.
CFUUIDRef CFUUIDCreate (
CFAllocatorRef alloc
);
关于UUID这个东西 wiki百科上写:
“通用唯一识别码 (Universally Unique Identifier, UUID) 是一个软件建构的标准,亦为自由软件基金会 (Open Software Foundation, OSF) 的组织在分散式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。UUID 的目的,是让分散式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。另外我们也可以在 e2fsprogs 套件中的 UUID 函式库找到实作。”
根据UUID产生的原理,你每产生一个,发生重复的概率非常低,几乎可以认为是不可能发生重复,所以这个UUID完全可以当做是对应一个使用这个软件的设备的唯一ID.
具体的原理可以看wiki:http://zh.wikipedia.org/wiki/UUID
uniqueIdentifier
An alphanumeric string unique to each device based on various hardware details. (read-only) (Deprecated in iOS 5.0. Instead, create a unique identifier specific to your app.)
@property (nonatomic, readonly, retain) NSString *uniqueIdentifier
Special Considerations
Do not use the uniqueIdentifier property. To create a unique identifier specific to your app, you can call the CFUUIDCreate function to create a UUID, and write it to the defaults database using the NSUserDefaults class.
主要看划线的部分,之前看论坛的上有人提到一些第三方的解决方案,但是实际上苹果也给出了替代的解决方案
根据划线部分的提示,实际上只需要在第一次使用程序的时候用CFUUIDCreate创造一个 UUID,然后将它存到NSUserDefault中,当做以前的UDID来用就行了
不过直接调用CFUUIDCreate得到的还不是一个直接的NSString,需要经过一些步骤才能转换成我们熟悉UDID形式:
以下是我自己最终完成的代码,包括了生成和存储的过程:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CFUUIDRef deviceId = CFUUIDCreate (
NULL
);
CFStringRef deviceIdStringRef = CFUUIDCreateString(
NULL
,deviceId);
CFRelease(deviceId);
NSString
*deviceIdString = (
NSString
*)deviceIdStringRef;
NSUserDefaults
*standardUserDefault = [
NSUserDefaults
standardUserDefaults];
[standardUserDefault setValue:deviceIdString forKey:@
"deviceId"
];
[deviceIdString release];
[standardUserDefault synchronize];
补充:
关于CFUUIDCreate,在苹果文档上有说明:
CFUUIDCreate
Creates a Universally Unique Identifier (UUID) object.
CFUUIDRef CFUUIDCreate (
CFAllocatorRef alloc
);
关于UUID这个东西 wiki百科上写:
“通用唯一识别码 (Universally Unique Identifier, UUID) 是一个软件建构的标准,亦为自由软件基金会 (Open Software Foundation, OSF) 的组织在分散式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。UUID 的目的,是让分散式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。另外我们也可以在 e2fsprogs 套件中的 UUID 函式库找到实作。”
根据UUID产生的原理,你每产生一个,发生重复的概率非常低,几乎可以认为是不可能发生重复,所以这个UUID完全可以当做是对应一个使用这个软件的设备的唯一ID.
具体的原理可以看wiki:http://zh.wikipedia.org/wiki/UUID
- 苹果官方给出的代替[UIDevice uniqueIdentifier]获取UDID的方法
- 苹果官方给出的代替[UIDevice uniqueIdentifier]获取UDID的方法
- 代替[UIDevice uniqueIdentifier]获取UDID的方法
- 获取UIDevice的uniqueIdentifier替代方法
- 苹果UDID(uniqueIdentifier)的替代方案
- 苹果UDID(uniqueIdentifier)的替代方案
- 当苹果因为UIDevice、udid、uniqueIdentifier而把我们的应用拒之门外invalid binary的时候,呕心沥血解决方法啊
- 去除 UIDevice uniqueIdentifier 方法调用时的警告
- 苹果udid获取方法
- iOS5:[UIDevice uniqueIdentifier]的替代方案
- iOS5:[UIDevice uniqueIdentifier]的替代方案
- iOS5:[UIDevice uniqueIdentifier]的替代方案
- iOS5:[UIDevice uniqueIdentifier]的替代方案
- 如何获取苹果手机的UDID
- 获取苹果手机UDID方法
- iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?
- iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?
- iOS不同版本获取UDID的方法
- c++内置类型和标准库类型
- acer(宏碁) Aspire S3-951 笔记本无线网卡连接不稳定原因及解决
- 自定义Android文件管理器----管理SD卡中的文件
- SpringMVC流程走向图
- 常用控制字符ASCII码
- 苹果官方给出的代替[UIDevice uniqueIdentifier]获取UDID的方法
- mfc解决回车键默认关闭窗口的一般方法
- android中处理多按钮怎么监听解决办法
- VS.NET2010水晶报表安装部署[VS2010]
- 判断ios版本
- Linux高编之进程————fork函数的使用(1)
- HDU 2955 Robberies(0-1 DP)
- java变量,初始化快,构造函数的执行顺序 .
- iOS7 状态栏