参考文章 iOS唯一标识符(IDFA&IDFV)
依赖: AdSupportframework
系统支持: iOS6及以上系统
获取方式: [ASIdentifierManager sharedManager]advertisingIdentifierUUIDString
定义: 由数字和字母组成的用来标识唯一设备的字符串。
特点:
依赖: UIKitframework
系统支持: iOS6及以上系统
获取方式: [UIDevice currentDevice]identifierForVendorUUIDString
定义: 由数字和字母组成的用来标识唯一设备的字符串。
特点: 根据vendor的值,如果vendor相同,则返回同一字符串;如果vendor不同,则返回不同的字符串。
vendor解释: 英文解释为卖家,小贩。根据xcode文档解释,正常情况下,会根据App Store提供的数据进行判断。但是如果app不是通过app store进行安装的(如企业应用或开发调试阶段),那么会根据bundle ID判断。
判断准则:
如:comexampleapp1和comexampleapp2,只有最后的后缀不同,所以会产生相同的vendor ID
在这里,还需要注意的一点就是:如果用户卸载了同一个vendor对应的所有程序,然后在重新安装同一个vendor提供的程序,此时identifierForVendor会被重置。
<scripttype="text/javascript">
<!--
function detectOS() {
isWindows = (navigatoruserAgentindexOf("Windows",0) != -1)1:0;
isMac = (navigatoruserAgentindexOf("mac",0) != -1)1:0;
isLinux = (navigatoruserAgentindexOf("Linux",0) != -1)1:0;
isUnix = (navigatoruserAgentindexOf("X11",0) != -1)1:0;
if (isWindows)
return"MS Windows";
if (isMac)
return"Apple Mac";
if (isLinux)
return"Lunix";
elseif (isUnix)
return"Unix";
return"Unknown";
}
//-->
</script>
1、可以根据MAC地址判断或者MAC+IP+计算机名。
2、直接用客户端脚本,我们这里用Javascript,这样做的好处是不需要服务器端进行处理,有客户端自行获取,传递到服务器端,且速度和可靠性都比在服务器
端获取好。
配合钥匙串使用
UDID (已禁用)
MAC地址(已禁用)
IDFA :同一个设备上所有APP获取到的是同一个值,苹果提供给广告商追踪广告的,需要引入AdSupportframework框架,并且需要用户允许广告追踪,所以一般会通过运行时来获取避免SDK依赖
IDFV :同一个提供商下的应用获取到的值都是一样的,通过BundleID的反转的前两部分进行匹配,如果相同就是同一个Vendor,例如对于comabcapp1, comabcapp2 这两个BundleID来说,就属于同一个Vendor,共享同一个IDFV的值
NSUUID :
1 The IMEI: 仅仅只对Android手机有效:
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String szImei = TelephonyMgrgetDeviceId(); // Requires READ_PHONE_STATE
采用此种方法,需要在AndroidManifestxml中加入一个许可:androidpermissionREAD_PHONE_STATE,并且用户应当允许安装此应用。作为手机来讲,IMEI是唯一的,它应该类似于 359881030314356(除非你有一个没有量产的手机(水货)它可能有无效的IMEI,如:0000000000000)。
2 Pseudo-Unique ID, 这个在任何Android手机中都有效
有一些特殊的情况,一些如平板电脑的设置没有通话功能,或者你不愿加入READ_PHONE_STATE许可。而你仍然想获得唯一序列号之类的东西。这时你可以通过取出ROM版本、制造商、CPU型号、以及其他硬件信息来实现这一点。这样计算出来的ID不是唯一的(因为如果两个手机应用了同样的硬件以及Rom 镜像)。但应当明白的是,出现类似情况的可能性基本可以忽略。要实现这一点,你可以使用Build类:
String m_szDevIDShort = "35" + //we make this look like a valid IMEI
BuildBOARDlength()%10+ BuildBRANDlength()%10 + BuildCPU_ABIlength()%10 + BuildDEVICElength()%10 + BuildDISPLAYlength()%10 + BuildHOSTlength()%10 + BuildIDlength()%10 + BuildMANUFACTURERlength()%10 + BuildMODELlength()%10 + BuildPRODUCTlength()%10 + BuildTAGSlength()%10 + BuildTYPElength()%10 + BuildUSERlength()%10 ; //13 digits
大多数的Build成员都是字符串形式的,我们只取他们的长度信息。我们取到13个数字,并在前面加上“35”。这样这个ID看起来就和15位IMEI一样了。
第一:添加文件
第二:配置工程
第三:存 *** 作
第四:取 *** 作
1> 取设备的 IDFA ;
2> 尽可能多的取设备的信息然后附加随机参数在自定义生成;
3> 数据存储 Keychain 中。
以上就是关于iOS.获取设备唯一标识符全部的内容,包括:iOS.获取设备唯一标识符、js怎样获取移动设备信息、网页怎么获取客户端电脑唯一标识等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)