iOS.获取设备唯一标识符

iOS.获取设备唯一标识符,第1张

参考文章 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怎样获取移动设备信息、网页怎么获取客户端电脑唯一标识等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9317522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存