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,如下图:

探讨: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,其他软件类似,如下图:

探讨: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

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

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

常见命令:

安装

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

安装卸载IPA包

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

查看系统日志

idevicesyslog

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

idevice_id -l

截图

idevicescreenshot

查看设备信息

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

获取app列表和信息

ideviceinstaller -l

获取设备时间

idevicedate

重启设备

idevicediagnostics restart

关机

idevicediagnostics shutdown

休眠

idevicediagnostics sleep

笔者安装成功截图如下:

测试命令:

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

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

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

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

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

      

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">;
<plist version="1.0"><dict><key>PayloadContent</key><dict><key>URL</key><!--接收数据的接口地址--><string>https://xxx//udid.php</string>;<key>DeviceAttributes</key><array><string>UDID</string><string>IMEI</string><string>ICCID</string><string>VERSION</string><string>PRODUCT</string></array></dict><key>PayloadOrganization</key><string>com.xxx</string>  <!--组织名称--><key>PayloadDisplayName</key><string>title</string>  <!--安装时显示的标题--><key>PayloadVersion</key><integer>1</integer>  <!--版本号--><key>PayloadUUID</key><string>60c078ae-6ab1-4e4a-935b-a328e9de8242</string><key>PayloadIdentifier</key><string>dev.xxx.profile-service</string><key>PayloadDescription</key><string>本文件将帮助您获取当前设备的UDID,不会安装到当前设备上</string>   <!--描述--><key>PayloadType</key><string>Profile Service</string></dict>
</plist>

参数说明:

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

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

   

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

instruments -s devices

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

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

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

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

  1. 通过Safari浏览器获取iOS设备UDID(设备唯一标识符)

    通过Safari与mobileconfig获取iOS设备UDID(设备唯一标识符) 科普:U D I D (Unique Device Identifier),唯一标示符,是iOS设备的一个唯一识别码 ...

  2. 通过Safari与mobileconfig获取iOS设备UDID(设备唯一标识符)

    本文基于在线安装Profile来实现获取UDID. 先看下效果,真机打开 获取设备UDID 科普 UDID UDID (Unique Device Identifier),唯一标示符,是iOS设备的一 ...

  3. iOS杂谈14—iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?

    转载于:dApps开发者 本文讲诉的主要是为什么苹果2011年8月发布iOS 5后就开始拒绝App获取设备的UDID以及UDID替补方案,特别提醒开发者苹果App Store禁止访问UDID的应用上架 ...

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

    本文讲诉的主要是为什么苹果2011年8月发布iOS 5后就开始拒绝App获取设备的UDID以及UDID替补方案,特别提醒开发者苹果App Store禁止访问UDID的应用上架(相关推荐:APP被苹果A ...

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

    本文讲诉的主要是为什么苹果2011年8月发布iOS 5后就开始拒绝App获取设备的UDID以及UDID替补方案,特别提醒开发者苹果App Store禁止访问UDID的应用上架(相关推荐:APP被苹果A ...

  6. 三种获取苹果设备UID的方式

    第一种方式.请在IOS设备的Safari中输入https://www.pgyer.com/tools/udid( 或http://fir.im/udid)安装证书获取UID. 第二种方式:通过苹果电脑 ...

  7. 获取iOS设备UDID的方法

    使用 iPhone 或 iPad 上的 Safari 浏览器打开网址:https://www.pgyer.com/tools/udid 进入页面后点击按钮'获取UDID' 页面中出现弹窗,点击'允许' ...

  8. 如何获取iOS 设备的 UDID

    如何获取iOS 设备的 UDID UDID,是 iOS 设备的一个唯一识别码,每台 iOS 设备都有一个独一无二的编码,这个编码,我们称之为识别码,也叫做UDID( Unique Device Ide ...

  9. 获取iOS设备的型号

    2019独角兽企业重金招聘Python工程师标准>>> 三种常用的办法获取iOS设备的型号: 1. [UIDevice currentDevice].model (推荐): 2. u ...

  10. iOS学习——获取iOS设备的各种信息

    不管是在Android开发还是iOS开发过程中,有时候我们需要经常根据设备的一些状态或信息进行不同的设置和性能配置,例如横竖屏切换时,电池电量低时,内存不够时,网络切换时等等,我们在这时候需要进行一些 ...

最新文章

  1. 用乐观的心态去面对生活,能让你的生活过得更加快乐
  2. 前端入门(雷云特效,css)
  3. Android设计模式系列(2)--SDK源码之观察者模式
  4. 20145234黄斐《信息安全系统设计基础》实验一
  5. velodyne显示点云中grid的单位_led显示屏怎么选择点间距
  6. c 语言程序设计现代方法:13章习题自己编答案(持续更新)
  7. attiny13a程序实例_ATtiny13A图文构成
  8. Spring Boot Test 进行JPA 测试保存数据到数据库
  9. 【超图+CESIUM】【基础API使用示例】40、超图|CESIUM - 特效-雨景设置
  10. Superpoint复现过程——踩坑实录分享
  11. Mifare UltraLight
  12. Centos7.6升级到Centos8.0
  13. 程序员专属小情话,哎呦,不错哦!| 程序员有话说
  14. 富友支付AS微信支付
  15. 中通新财报:业绩下滑背后仍是老问题
  16. 计算机相关单词 1000+
  17. 绘声绘影快而省时的方法:使用小日本输出
  18. 链路聚合Eth-trunk以及华为交换机配置实例
  19. U盘内容被病毒隐藏的解决方案
  20. 淡雅清新教师求职简历免费word模板

热门文章

  1. html空格符的代码用转义字符怎么表示,html空格符号标签 空格符号怎么打出来HTML?...
  2. 计算机常用英语1000个,常用的1000个英语单词
  3. C# 使用AForge调用笔记本摄像头拍照
  4. html画表盘 随时间转动,HTML5 canvas圆形时钟指针平缓转动随机切换表盘颜色
  5. 电壁挂炉该如何配电表和电线
  6. ubuntu firefox flash 插件安装
  7. android 微信搜索功能,[多图]等了N年的功能来了 Android微信8.0.3新版体验
  8. 《人类简史:从动物到上帝》读书摘记
  9. uniapp使用阿里字体图标库
  10. 关于信息安全专业学习的一些看法