最近公司的项目需要取设备udid,首先想到的就是描述文件获取方式。
具体步骤:
1.安装描述文件
2.苹果回调
首先要生成描述文件,这里直接用的网上的方法(感谢天狐大神博客)
<?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://dev.skyfox.org/udid/receive.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>dev.skyfox.org</string> <!--组织名称-->
<key>PayloadDisplayName</key>
<string>查询设备UDID</string> <!--安装时显示的标题-->
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadUUID</key>
<string>3C4DC7D2-E475-3375-489C-0BB8D737A653</string> <!--自己随机填写的唯一字符串-->
<key>PayloadIdentifier</key>
<string>dev.skyfox.profile-service</string>
<key>PayloadDescription</key>
<string>本文件仅用来获取设备ID</string> <!--描述-->
<key>PayloadType</key>
<string>Profile Service</string>
</dict>
</plist>
上述URL中,要填写自己的回调地址,比如我的:https://www.liuyangge.com/udid/receive.php
将上述数据保存成 .mobileconfig文件即可。安装过程就是下载此文件,在此就不在概述。
安装成功后,苹果会打开回调页面,将设备的一些信息,通过xml形式回传,回传过来的数据是签名过的,具体怎么验签,还在研究。样本数据为剔除掉签名字串后的数据:
<?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>IMEI</key>
<string>35 485009 682305 9</string>
<key>PRODUCT</key>
<string>iPhone10,3</string>
<key>UDID</key>
<string>cada21aaa8ad057b3c718e73b8d8aba2871ac46d</string>
<key>VERSION</key>
<string>16G77</string>
</dict>
</plist>
将xml格式化后,自己处理数据即可。
现在我们安装描述文件时,会提示红色的未签名
已签名的文件会显示绿色已验证的标志
网上查阅资料时,发现这个有两种方式可以进行签名。
第一种可以用苹果开发者钥匙串证书进行签名
第二种使用SSL证书进行签名
我目前使用的是第二种方式。
这里以阿里云免费SSL证书为例(letsencrypt免费证书同理)
先去阿里云申请免费ssl证书(地址:https://common-buy.aliyun.com/?commodityCode=cas&aly_as=kWqNXneS#/buy)
选择免费型DV SSL证书
付款后证书申请,填好资料后等待证书下发(一般5-10分钟内即可下发成功)
下发好后,点击下载证书,选择其他
解开压缩包后,会有一个pem文件,一个key文件
将上面两个文件 和 .mobileconfig文件放在一起,开始签名
命令:openssl smime -sign -in unsigned.mobileconfig -out signed.mobileconfig -signer 1.pem -inkey 2.key -certfile ca-1.pem -outform der -nodetach
执行命令后,会生成一个signed.mobileconfig,这就是签名后的文件了。
下载签名后的signed.mobileconfig 看看是不是显示绿色的已验证。
详情里记录着回调URL,和证书信息
至此,大功告成。
本文为刘杨哥原创文章,转载无需和我联系,但请注明来自刘杨哥博客https://liuyangge.com