iOS如何通过安装描述文件获取设备UDID

首先,需要解释一下,iOS有一个MDM(Moblie Device Management,移动设备管理),同样可以获取设备的UDID,但比较麻烦,本文不做介绍。本博客介绍一下如何做出类似蒲公英一样获取设备UDID的功能。

1. 准备一个.mobileconfig文件,文件内容大致如下:





    
        PayloadContent
        
            URL
            http://62.234.107.96:8088/app/getUuid
            DeviceAttributes
            
                UDID
                IMEI
                ICCID
                VERSION
                PRODUCT
            
        
        PayloadOrganization
        www.yun-bangshou.com
        PayloadDisplayName
        云帮手
        PayloadVersion
        1
        PayloadUUID
        8C7AD0B8-3900-44DF-A52F-3C4F92921807
        PayloadIdentifier
        com.yun-bangshou.profile-service
        PayloadDescription
        该配置文件将帮助用户获取当前iOS设备的UDID号码。This temporary profile will be used to find and display your current device's UDID.
        PayloadType
        Profile Service
    

URL

http://62.234.107.96:8088/app/getUuid

是服务端的接口,用于接收返回的UDID等数据,数据载体是一个XML结构。

 

DeviceAttributes


    UDID
    IMEI
    ICCID
    VERSION
    PRODUCT

是我们想要获取的设备信息。

PayloadOrganization、PayloadDisplayName、PayloadDescription

www.yun-bangshou.com
云帮手
该配置文件将帮助用户获取当前iOS设备的UDID号码。This temporary profile will be used to find and display your current device's UDID.

会显示在描述文件的安装界面:

iOS如何通过安装描述文件获取设备UDID_第1张图片

一般,如果仅仅是把.mobileconfig描述文件放在我们的https服务器上,然后在safari中下载该描述文件,那么上面的安装界面中会显示红色的“未签名”,那么怎么把红色的“未签名”变成绿色的“已验证”呢?

2. 对unsigned.mobileconfig进行签名:

第一步:向服务端索要https服务器证书相关的两个文件,后缀名为 

.crt
.key

第二步:通过在线openssl工具把.crt和.key合成为.pem文件,网站:传送门

第三步:将.crt  .key   .pem文件放在同一文件夹下,类似这样:

iOS如何通过安装描述文件获取设备UDID_第2张图片

第四步:在Mac终端cd到该路径下,执行如下命令:

openssl rsa -in ybs.key -out ybsnopass.key

此时文件夹下,会多出一个ybsnopass.key文件,然后终端再执行命令:

openssl smime -sign -in unsigned.mobileconfig -out signed.mobileconfig -signer ybs.crt -inkey ybsnopass.key -certfile ybs_ssl.pem -outform der -nodetach

此时文件夹下会多出一个signed.mobileconfig,这便是我们签名后的.mobileconfig,将签名后的描述文件放到服务器,然后在safari中下载的描述文件的安装界面就会显示绿色的“已验证”。

3. 用户点击安装描述文件时,会调用.mobileconfig中设置的URL,服务端便会收到一个XML格式的数据,类似这样:



  
    IMEI
    12 123456 123456 7
    PRODUCT
    iPhone4,1
    UDID
    b59769e6c28b73b1195009d4b21cXXXXXXXXXXXX
    VERSION
    9B206
  

然后,服务端解析这个XML就能获取到UDID了。

服务端接口代码可参考传送门

你可能感兴趣的:(ios,UDID,mobileconfig,蒲公英,safari)