关于几种获取iOS设备UDID典型方式的技术探讨

摘要:
二、利用第三方工具,如iTools、PP助手等来查看,这种方式普通用户可以使用,毕竟为了查看UDID而安装10+G大小的Xcode没有必要,以iTools为例,连接手机到电脑,打开iTools,点击more即可看到详细信息,包含UDID,其他软件类似,如下图:探讨:iTools是创想天空第一个核心产品,是一款简洁有着“无需越狱,即可同步”功能的苹果设备同步管理软件,也是继iTunes后全球第二款支持对iOS管理的软件。

UDID 是由子母和数字组成的 若干个字符串的序号,用来区别每一个唯一的 iOS 设备,包括 iPhones, iPads, 以及 iPod Touches,这些编码看起来是随机的,实际上是跟硬件设备特点相联系的,我们称之为识别码,也叫做UDID( Unique Device Identifier),比如典型的UDID 类似这样:

37f2f993bae681636e30e74b04d6b8955ba36f29 或 00004103-001105363440002F

这样一来,我们拿到UDID后在苹果开发者后台添加测试设备,以便安装测试APP,对于获取UDID的方式,目前主要有如下几种典型方式:

一、利用IDE开发工具Xcode获取,这种方式iOS开发者常用,将设备连接到Mac电脑,打开Xcode - Window - Devices and Simulators,如下图:

关于几种获取iOS设备UDID典型方式的技术探讨第1张

关于几种获取iOS设备UDID典型方式的技术探讨第2张

探讨:Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由Apple Inc开发,Xcode是开发 macOS 和 iOS 应用程序的专业IDE工具,99%的iOS从业者都采用它来开发APP,Xcode 与 iOS设备均是苹果自家产品,自然内置了获取iOS设备信息的能力,不仅能查看UDID,设备名称等信息,更能对设备中APP的崩溃日志进行查看,可谓是集界面设计、编码、测试、调试为一起的便捷开发工具,深受广大开发者推崇。

二、利用第三方工具,如iTools、PP助手等来查看,这种方式普通用户可以使用,毕竟为了查看UDID而安装10+G大小的Xcode没有必要,以iTools为例,连接手机到电脑,打开iTools,点击more即可看到详细信息,包含UDID,其他软件类似,如下图:

关于几种获取iOS设备UDID典型方式的技术探讨第3张

关于几种获取iOS设备UDID典型方式的技术探讨第4张

探讨:iTools是创想天空第一个核心产品,是一款简洁有着“无需越狱,即可同步”功能的苹果设备同步管理软件,也是继iTunes后全球第二款支持对iOS管理的软件。它可以让你非常方便的完成对iOS设备的管理,包括信息查看、同步媒体文件、安装软件、备份SHSH等功能,那么iTools是如何获取到iOS设备信息呢,什么原理呢,笔者猜猜是借鉴iTunes通信协议,或者说是破解USB通信协议来实现与iTunes类似的功能,或者说是直接使用了开源库libimobiledevice - 一个跨平台的软件协议库和工具来与iOS设备进行本地通信。

深入探讨:libimobiledevice 是一个跨平台的软件库,支持 iPhone®, iPod Touch®, iPad® and Apple TV® 等设备的通讯协议。不依赖任何已有的私有库,不需要越狱。应用软件可以通过这个开发包轻松访问设备的文件系统、获取设备信息,备份和恢复设备,管理 SpringBoard 图标,管理已安装应用,获取通讯录、日程、备注和书签等信息,使用 libgpod 同步音乐和视频。

官方网站:http://www.libimobiledevice.org

github地址:https://github.com/libimobiledevice

关于几种获取iOS设备UDID典型方式的技术探讨第5张

点击Get Started,按照如下安装方式即可体验。

注意:安装之前需要先安装Homebrew - 这是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能,官网地址:https://brew.sh

关于几种获取iOS设备UDID典型方式的技术探讨第6张

常见命令:

安装

  1. #若mac没有homebrew则执行此条命令,安装
  2. $ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  3. $brew install libimobiledevice
  4. $brew install ideviceinstaller # IPA安装命令

安装卸载IPA包

  1. ideviceinstaller -i xxx.ipa
  2. ideviceinstaller -u [udid] -i [xxx.ipa] # 给指定连接的设备安装应用
  3. ideviceinstaller -U [bundleID]

查看系统日志

idevicesyslog

查看当前已连接的设备的UUID

idevice_id -l

截图

idevicescreenshot

查看设备信息

  1. ideviceinfo
  2. ideviceinfo -u [udid] -k DeviceName # 指定设备,获取设备名称:iPhone6s
  3. idevicename -u [udid] # 指定设备,获取设备名称:iPhone6s
  4. ideviceinfo -u [udid] -k ProductVersion # 指定设备,获取设备版本:10.3.1
  5. ideviceinfo -u [udid] -k ProductType # 指定设备,获取设备类型:iPhone8,1
  6. ideviceinfo -u [udid] -k ProductName # 指定设备,获取设备系统名称:iPhone OS

获取app列表和信息

ideviceinstaller -l

获取设备时间

idevicedate

重启设备

idevicediagnostics restart

关机

idevicediagnostics shutdown

休眠

idevicediagnostics sleep

笔者安装成功截图如下:

关于几种获取iOS设备UDID典型方式的技术探讨第7张

关于几种获取iOS设备UDID典型方式的技术探讨第8张

测试命令:

1. 查看当前连接的手机设备UDID命令:idevice_id -l,即可看到同前面Xcode获取的一致。

关于几种获取iOS设备UDID典型方式的技术探讨第9张

2. 查看当前设备的时间命令:idevicedate ,如下图:

关于几种获取iOS设备UDID典型方式的技术探讨第10张

3. 安装IPA文件到手机设备命令:ideviceinstaller -i xxx.ipa ,如下图:

关于几种获取iOS设备UDID典型方式的技术探讨第11张

注意:笔者这里是用企业签名的IPA,或者需要实现把设备UDID写入到描述文件再安装。

三、利用Safari安装描述文件的方式来查看,典型的三方平台,如蒲公英工具:https://www.pgyer.com/tools/udid,直接通过Safari打开网页或通过扫描二维码打开,首先会提示安装一个描述文件,待安装成功后会返回Safari显示UDID,如下图:

关于几种获取iOS设备UDID典型方式的技术探讨第12张关于几种获取iOS设备UDID典型方式的技术探讨第13张关于几种获取iOS设备UDID典型方式的技术探讨第14张

探讨:这种方式是怎么实现的呢,这里我们也来看下,首先是这个描述文件,模板如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">;
  3. <plist version="1.0">
  4. <dict>
  5. <key>PayloadContent</key>
  6. <dict>
  7. <key>URL</key>
  8. <!--接收数据的接口地址-->
  9. <string>https://xxx//udid.php</string>;
  10. <key>DeviceAttributes</key>
  11. <array>
  12. <string>UDID</string>
  13. <string>IMEI</string>
  14. <string>ICCID</string>
  15. <string>VERSION</string>
  16. <string>PRODUCT</string>
  17. </array>
  18. </dict>
  19. <key>PayloadOrganization</key>
  20. <string>com.xxx</string> <!--组织名称-->
  21. <key>PayloadDisplayName</key>
  22. <string>title</string> <!--安装时显示的标题-->
  23. <key>PayloadVersion</key>
  24. <integer>1</integer> <!--版本号-->
  25. <key>PayloadUUID</key>
  26. <string>60c078ae-6ab1-4e4a-935b-a328e9de8242</string>
  27. <key>PayloadIdentifier</key>
  28. <string>dev.xxx.profile-service</string>
  29. <key>PayloadDescription</key>
  30. <string>本文件将帮助您获取当前设备的UDID,不会安装到当前设备上</string> <!--描述-->
  31. <key>PayloadType</key>
  32. <string>Profile Service</string>
  33. </dict>
  34. </plist>

参数说明:

URL:为用户授权后,将设备信息返回的地址。
DeviceAttributes:设备属性列表,需要获取哪些属性:UDID、IMEI、ICCID、VERSION、PRODUCT。
一旦用户授权后,会重定向URL,并将以上属性带在URL上,然后就可以直接在URL页面获取显示出来,这就是蒲公英获取UDID的原理所在,更详细说明,大家可以参考这篇技术文章 -获取苹果设备的UDID,笔者就不再赘述,感谢原作者的分享。

四、借助一款iOS签名管理软件 -风车签名来获取,只需点下鼠标即可,如下图:

关于几种获取iOS设备UDID典型方式的技术探讨第15张关于几种获取iOS设备UDID典型方式的技术探讨第16张

探讨:这种方式只是对命令行工具的可视化调用,利用的是命令行工具:instruments,比如终端下我们执行如下:

instruments -s devices

关于几种获取iOS设备UDID典型方式的技术探讨第17张

如果只想获取手机UDID,可以执行如下命令:

instruments -s devices | grep -v "Simulator" | grep ")"

关于几种获取iOS设备UDID典型方式的技术探讨第18张

至此,笔者针对市面上常见的几种获取设备UDID方式都做了体验和调研,知其然知其所以然,学技术,做学问,该当如此。

免责声明:文章转载自《关于几种获取iOS设备UDID典型方式的技术探讨》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WinSock学习笔记.net中RSA加密解密下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别

总目录地址:AI 系列 总目录  需要最新源码,或技术提问,请加QQ群:538327407 我的各种github 开源项目和代码:https://github.com/linbin524 背景 目前AI 处于风口浪尖,作为 公司的CTO,也作为自己的技术专研,开始了AI之旅,在朋友圈中也咨询 一些大牛对于AI 机器学习框架的看法,目前自己的研究方向主要开源...

总结:String类型与Int类型的转换【实现插入操作主键自增】

1、String类型(此类型是数字格式的字符串类型)转换成Int类型 String str = "10000"; 转换成Int类型: int num = Integer.parseInt(str); 得到的结果是:int类型的10000 2、int类型转换成String类型 int n = 1000; n = n +1; String str = Stri...

java过滤特殊字符的正则表达式

// 过滤特殊字符 public staticString StringFilter(String str) throws PatternSyntaxException { // 只允许字母和数字 // String regEx ="[^a-zA-Z0-9]"; // 清除掉所有特殊字符 String regEx="[`~!@#$%^&*()+...

DateUtil

public class GenernalDate { //一天秒数 public final static long MILLISECONDS_OF_DAY = 1000 * 60 * 60 * 24; public final static int NULL_DATE = 19000101; private fi...

springboot后端实现条件查询,要配合使用mybatis

packagecn.com.dyg.work.sqlgen; importcn.com.dyg.work.common.exception.DefException; importcn.com.dyg.work.common.utils.CamelAndUnderLineConverter; importcom.alibaba.fastjson.JSON...

Metasploit 安装及使用

    官网 https://www.metasploit.com/ 使用手册 https://metasploit.help.rapid7.com/docs 简介 开源安全漏洞检测工具,附带数百个已知的软件漏洞,并保持频繁更新。被安全社区冠以“可以黑掉整个宇宙”之名的强大渗透测试框架。 MetaSploit 截止目前(2020/06/29)有两个版本:...