苹果开发中,经常会添加测试设备UDID,通常在fir、蒲公英等平台获取,除了此类平台我们自己也可以实现UDID的获取,下面就通过已有苹果开发证书和模板来获取苹果设备的UDID

先体验一下:获取UDID

1、准备描述文件模板,并设置模板信息。
描述文件模板p_udid.mobileconfig文件如下:

<?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://download.onapp.top/udid/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.onapp.org</string>  <!--组织名称--><key>PayloadDisplayName</key><string>onapp.top</string>  <!--安装时显示的标题--><key>PayloadVersion</key><integer>1</integer>  <!--版本号--><key>PayloadUUID</key><string>60c078ae-6ab1-4e4a-935b-a328e9de8242</string>  <!--自己随机填写的唯一字符串--><key>PayloadIdentifier</key><string>dev.onapp.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页面获取显示。

2、获取Mac已安装证书。命令如下:

security find-identity -p codesigning -v

如果没有你应该不是做iOS开发的?。

3、用已有证书对模板签名。命令如下:

security cms -S -N "iPhone Distribution: tianpeng ye (YN782HM755)" -i p_udid.mobileconfig -o udid.mobileconfig

签名后的文件是加密文件,不能直接打开查看,查看需要使用security命令查看。命令如下:

security cms -D -I udid.mobileconfig

4、创建html页面用户触发获取配置描述文件。代码如下:

<?phpinclude '../common.php';$UDID = $_GET['UDID'];
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no" name="viewport" id="viewport" />
<title>获取您的UDID</title>
<script src="../js/jquery.js"></script>
<script src="../js/clipboard.min.js"></script><style type="text/css">.button-class{height: 40px;text-align: center;border-radius: 2px;font-size: 18px;background-color: rgb(78,164,154);border:none;color: white;}.copy-class{margin-top: 30px;display: flex;flex-direction: column;justify-content: space-around;text-align: center;color: red;}.btn{font-size: 16px;}img{width: 100%;}
</style>
<body><div id="content"><div style="text-align: center;margin-top: 50px;"><?php$device = getDeviceType();$agent = strtolower($_SERVER['HTTP_USER_AGENT']);if(strpos($agent, 'safari')){?><button class="button-class" onclick="getUdid()">点击获取当前设备的UDID</button><?php }else{ ?><button class="button-class" onclick="">请在Safari浏览器中打开获取UDID</button><?php }?></div><?phpif(strlen($UDID)>0){?><div class="copy-class"><?php echo 'UDID:'.$UDID;?></div><div style="text-align: center;margin-top: 30px;"><button class="btn button-class" data-clipboard-action="copy" data-clipboard-text="<?php echo $UDID;?>" onclick="">复制UDID</button></div><?php }?><img style="margin-top: 30px;" src="../images/udid_1.png"><img src="../images/udid_2.png"><img src="../images/udid_3.png"></div><script type="text/javascript">function getUdid(){var data = "$data['name']";location.href = "udid.mobileconfig";}var clipboard = new ClipboardJS('.btn');clipboard.on('success', function(e) {var string = e.text;alert('已复制到粘贴板');});clipboard.on('error', function(e) {console.log(e);});</script>
</body>
</html>

测试需要在Safari浏览器下,其他应用会屏蔽这种获取权限。点击获取当前设备的UDID按钮,执行页面跳转location.href = "udid.mobileconfig"。下载udid.mobileconfig配置文件,去设置页-通用-描述文件,可以安装授权。

5、用户主动安装后会将以上描述文件中设置的属性放置到重定向的URL中,即在udid.php文件中可以获取。如下:

<?php
include '../common.php';
$deviceInfo = file_get_contents('php://input');
file_put_contents("../log/log.txt", "log:".$deviceInfo,FILE_APPEND);
// $deviceInfo = urlencode($deviceInfo);
$PRODUCT = getInfoForKey('PRODUCT',$deviceInfo);
$ICCID = getInfoForKey('ICCID',$deviceInfo);
$VERSION = getInfoForKey('VERSION',$deviceInfo);
$UDID = getInfoForKey('UDID',$deviceInfo);
$IMEI = getInfoForKey('IMEI',$deviceInfo);$time = date("Y-m-d h:i:s",time());
$string = $time."  PRODUCT:$PRODUCT   "."   ICCID:$ICCID   "."VERSION:$VERSION   "."  UDID:$IMEI   \n";
file_put_contents("../log/dev_info_log.txt",$string,FILE_APPEND);//这里一定要301跳转,否则设备安装会提示"无效的描述文件"
header('HTTP/1.1 301 Moved Permanently');
header("Location: https://download.onapp.top/udid/index.php?UDID=$UDID&IMEI=$IMEI";);
?>

属性值返回到该文件后,立即重定向到起始也index.php展示,将所需要的参数通过地址待到展示页。

注意:必须配置安全证书,https访问,阿里购买免费证书配置即可。

展示如下

允许下载

根据提示去设置看看

[外链图片转存失败(img-vNjAzUI2-1562593103566)(https://upload-images.jianshu.io/upload_images/1609369-091733b313c4c2f9.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

设置-通用-描述文件

安装后重定向到首页

获取苹果设备的UDID相关推荐

  1. php 获取手机设备的ID,获取苹果设备的UDID

    苹果开发中,经常会添加测试设备UDID,通常在fir.蒲公英等平台获取,除了此类平台我们自己也可以实现UDID的获取,下面就通过已有苹果开发证书和模板来获取苹果设备的UDID. 先体验一下:获取UDI ...

  2. 如何获取苹果设备的UDID(iPhone/iPad UDID查询方法)

    方法一.通过电脑连接苹果手机后查询 1.在电脑上下载并安装爱思助手,安装完成后将电脑和苹果手机使用苹果数据线连接起来: ​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) 然后启动爱思助手这 ...

  3. 如何获取iOS 设备的 UDID

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

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

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

  5. 如何获取苹果设备UDID?

    步骤一.微信扫码下方二维码,选择用手机自带Safari浏览器打开 图1 图2 步骤二.第一次安装获取UDID 步骤三.跳转安装界面后,点击"安装" 步骤四.选择安装后,输入密码,安 ...

  6. 获取苹果设备和系统信息(更新至iPhone X)

    1.获得设备型号 #import <sys/utsname.h>+ (NSString *)getCurrentDeviceModel{struct utsname systemInfo; ...

  7. 查看苹果设备UDID方式

    在运行iOS自动化测试时有的时候需要使用到苹果设备的UDID,为方便查看苹果设备的UDID,总结查看苹果设备UDID的几种方式: 一.通过XCode查看 1.设备连接上Max电脑 2.打开XCode, ...

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

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

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

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

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

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

最新文章

  1. [知识库分享系列] 三、Web(高性能Web站点建设)
  2. 《统计学习方法》资源
  3. 《Pokemon Go》开发商明年将推出「哈利波特」题材AR游戏
  4. mysql 分区表详解
  5. 为什么Angular的路由执行离不开router-outlet标签
  6. go java性能_服务端I/O性能大比拼:Node、PHP、Java和Go
  7. Leetcode--130. 被围绕的区域(java)
  8. 通过反射创建新类示例的两种方式及比较
  9. android开关控件Switch和ToggleButton
  10. 免费CSDN积分获取
  11. “舱驾融合”技术发展趋势分析
  12. linux系统安装花生壳
  13. Captin for mac(大小写切换悬浮窗提示)
  14. matlab动刚度仿真,基于ANSYS的转子支承动刚度计算分析.doc
  15. centos 6.5安装杀毒软件clamav
  16. 用混淆矩阵计算kappa系数
  17. 洛谷 P3604 美好的每一天
  18. python文件重命名加日期_Python文件创建日期和Critiqu的重命名请求
  19. 制作Android程序的应用图标并应用
  20. uniapp 打包app后,选择文件上传时,编辑上传文件

热门文章

  1. Alien Skin Exposure X7图片调色教程
  2. 2020年最酷的十个无人机项目(下)
  3. 下载文件时报错:无法复制文件,无法读源文件或磁的解决方法
  4. adb 命令行导出Android APP数据库.db文件
  5. 如何清除服务器错误文档,如何删除Windows错误报告文件
  6. mysql存储过程成绩等级_MySQL使用存储过程创建百万级别测试数据
  7. 【我的OpenGL学习进阶之旅】学习OpenGL ES 3.0 的实战 Awsome Demo (下)之 图片转场和轮播特效专场
  8. 苹果cms vod.html,苹果cms
  9. 【GISer必备】150+地图数据免费下载
  10. vue 阻止输入框冒泡