如何获取ios设备的唯一标识

很多地方都会需要用到唯一标志。

比如:

1. 我们相用一个设备的唯一标志当作用户id,特别是网络游戏,这样就可以省去注册的麻烦。

2. 想把app相关的文件加密,密钥哪里来的?有些人可能会说hard code,但是hard code的key比较容易被破解。而去hard code密钥加密的文件可以copy到其他设备。比如游戏的本地文件保存了一些游戏相关的数据,那么只要有一台机器购买100个金币,然后就可以把本地文件copy给其他设备,其他设备也可以有100金币了,因为所有的设备用的是同一个hard code密钥。

如果我们可以获取设备唯一的标识比如一个id,那么我们就可以用这个id当作用户名,或者直接用这个id当作密钥。这样就会好很多。比如游戏本地文件就具有唯一性了,就算copy到其他设备,别人也用不了,因为密钥不一样。

以前的iphone是可以获取设备的udid的,很简单:

[UIDevice currentDevice] uniqueIdentifier] 

但是后来苹果公司禁止了。(如果没有记错的话,应该是从ios5开始就不能用了)

反正现在是用不了了。

在网上查了一下,在github上找到一个办法,

https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5

基本原理就是读取wifi芯片的mac地址,然后转换成一个hash值。

实验了一下,可行,我用的是ios skd 8

不知道苹果会不会把mac地址也禁止了。

所以最好的办法还是先使用上面的办法去获取,如果失败了,就加个错误处理,比如再采用hard code获取其他产生id的方式。

时间: 2024-10-27 03:07:54

如何获取ios设备的唯一标识的相关文章

Android开发 - 获取Android设备的唯一标识码(Android 6.0或更高)

在我们的APP开发中,通常需要获取到设备的唯一标识.在Android6.0之前,有很多方法我们可以方便获取到硬件的唯一标识,但是在Android6.0之后,Android系统大幅限制了我们获取设备的硬件信息. Android6.0之前的方法(已过时) DEVICE_ID通getSystemService(Context.TELEPHONY_SERVICE).getDeviceId()获取,但是6.0之后必须申请READ_PHONE_STATE,并且获取到的这个值在不同的厂商和设备中并不可靠. M

进阶篇-安卓系统:1.获取安卓设备的唯一标识

无论是pc端的软件还是安卓端的软件,有时候在出售时如果没有被买断或者购买版权,那么就需要一套一套的卖,并且要保证禁止软件的拷贝. 在pc端的软件可以在代码中加上检测硬盘序列号.这样的话拷贝到另一台电脑上就不可以用了,因为硬盘序列号识别错误.那么在安卓端没有硬盘就需要获取一些其它硬件的参数来唯一标识设备. 1.获取IMEI标识码:IMEI(International Mobile Equipment Identity)是国际移动设备标识的缩写. TelephonyManager Telephony

获取iOS设备唯一标识

[获取iOS设备唯一标识] 1.已禁用-[UIDevice uniqueIdentifier] 苹果总是把用户的隐私看的很重要.-[UIDevice uniqueIdentifier]在iOS5实际在iOS5的时候已经被遗弃了,但是iOS7中已经完全的禁用了它.Xcode5甚至不会允许你编译包含了指引到-[UIDevice uniqueIdentifier]的app.此外,iOS7之前的使用了-[UIDevice uniqueIdentifier] 的app如果在iOS7上运行,它不会返回设备的

设备唯一标识方法(Unique Identifier):如何在Windows系统上获取设备的唯一标识 zz

原文地址:http://www.vonwei.com/post/UniqueDeviceIDforWindows.html 唯一的标识一个设备是一个基本功能,可以拥有很多应用场景,比如软件授权(如何保证你的软件在授权后才能在特定机器上使用).软件License,设备标识,设备身份识别等.下面列举一下各种方法的优劣: (1)网卡MAC地址 MAC地址可能是最常用的标识方法,但是现在这种方法基本不可靠:一个电脑可能存在多个网卡,多个MAC地址,如典型的笔记本可能存在有线.无线.蓝牙等多个MAC地址,

【转】iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?

本文讲诉的主要是为什么苹果2011年8月发布iOS 5后就开始拒绝App获取设备的UDID以及UDID替补方案,特别提醒开发者苹果App Store禁止访问UDID的应用上架(相关推荐:APP被苹果App Store拒绝的N个原因),下面先来了解下UDID. 一.UDID是什么? UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成. 二.UDID有什么用? 移动网络可利用UDID来识别移动设备,如iPhon

iOS编程——经过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版)

iOS编程——通过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版) 很多的应用都需要用到手机的唯一标示,而且要求这个唯一标示不能因为应用app的卸载或者改变而变化. 在iOS7以前是可以通过Mac地址来实现这个功能的,但是iOS7(包含)以后是无法获得Mac地址的:苹果官方推荐使用UUID,但是每次随着APP的卸载重装,UUID会随之发生变化,那该如何处理呢? 我们需要一个能在app卸载重装后不会改变的值,而keyChain恰巧就可以做到.配合UUID就可以实现了!让

远程获取iOS设备的屏幕截图

一个远程获取iOS设备屏幕的例子,Client采用TCP连接iOS设备的2115端口,然后读取PNG格式的数据流. +VSRemoteScreen.h +VSRemoteScreen.m 添加到你的iOS项目中,然后在App启动时调用startScreenServer函数. +client.php client示例文件 [1].[代码] RemoteScreen 跳至 [1] [2] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

获取IOS 设备基本信息

原地址:http://www.cnblogs.com/U-tansuo/p/ios_basis_info.html 1.获取设备类型  (Iphone/ipad 几?) #import "sys/utsname.h" -(NSString*)getDeviceVersion{    struct utsname systemInfo;    uname(&systemInfo);    NSString *deviceString = [NSString stringWithC

获取iOS设备型号的方法总结

三种常用的办法获取iOS设备的型号: 1. [UIDevice currentDevice].model (推荐): 2. uname(struct utsname *name) ,使用此函数需要#include : 3.sysctlbyname(const char *name, void *oldp, size_t *oldlenp, void *newp, size_t newlen) ,使用此函数需要#include ,#include: 推荐使用第一种方法,为最上层的API,在项目开发