zoukankan      html  css  js  c++  java
  • mobileconfig文件

    通过Safari与mobileconfig获取iOS设备UDID

    UDID (Unique Device Identifier),唯一标示符,是iOS设备的一个唯一识别码,每台iOS设备都有一个独一无二的编码,UDID其实也是在设备量产的时候,生成随机的UUID写入到iOS设备硬件或者某一块存储器中,所以变成了固定的完全不会改变的一个标识,用来区别每一个唯一的iOS设备。

    随着苹果对程序内获取UDID封杀的越来越严格,私有api已经获取不到UDID,Mac地址等信息,继而出现了使用钥匙串配合uuid等等方法变相实现

    制作mobileconfig需要的文件:

    (1)mbaike.crt(https服务器端使用证书文件)
    (2)mbaike.key(https服务器端使用证书对应的密钥,其实就是一个txt文件)
    (3)ca-bundle.pem(startssl官网下载的跟证书文件,具体的在哪里下载,请在startssl控制面板中查找)
    (4)unsigned.mobilecofig文件(IOS端生成的未签名的配置描述文件) 

    2、在mac上通过openssl命令生成签名后的signed.mobileconfig文件:

    openssl smime -sign -in unsigned.mobileconfig -out signed.mobileconfig -signer mbaike.crt -inkey mbaike.key -certfile ca-bundle.pem -outform der -nodetach

    也可以把key文件的密码写入到key文件中

    openssl rsa -in mbaike.key -out mbaikenopass.key
    

    第二步的命令就应该是

    openssl smime -sign -in unsigned.mobileconfig -out signed.mobileconfig -signer mbaike.crt -inkey mbaikenopass.key -certfile ca-bundle.pem -outform der -nodetach
    

    这样就完成了对mobileconfig的签名工作了

    pfx生成pem

    openssl pkcs12 -in test.pfx -clcerts -nokeys -out cert.pem  可能需要密码

    pfx生成key

    openssl pkcs12 -in test.pfx -nocerts -out cert.key

    ca文件就是crt文件

    使用原理:

    1.在你的服务器上创建一个.mobileconfig的XML格式的描述文件;

    2.服务器需要的数据,比如:UDID,IMEI需要在.mobileconfig描述文件中配置好,以及服务器接收数据的URL地址;

    3.用户在客户端通过某个点击操作完成.mobileconfig描述文件的安装;

    4.手机在安装描述文件时,会向描述文件中配置好的URL发送UDID,IMEI等设备信息数据;

    5.服务端收到设备信息数据后,通过scheme打开客户端的app将设备信息作为参数传给客户端;

    6.客户端在appDelegate里面将 这个参数存到本地 ,并且存到钥匙串,这样即时app被卸载重装,也无需再次安装;

    配置文件的信息:

    <?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>http://127.0.0.1:6699/receive.do</string>
                <key>DeviceAttributes</key>
                <array>
                    <string>SERIAL</string>
                    <string>MAC_ADDRESS_EN0</string>
                    <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>cn.com.aaaa</string>
            <key>PayloadDescription</key>
            <string>本文件仅用来获取设备ID</string>
            <key>PayloadType</key>
            <string>Profile Service</string>
        </dict>
    </plist>
    

    其中,DeviceAttributes对应的key是你想要的信息,还可以添加其他信息,操作系统(iOS)安装完描述文件,获取完这些信息,会将这些信息进行编码,传值给你描述文件中的URL地址,这里需要修改URL就好。

    苹果官方文档介绍

  • 相关阅读:
    性能参考指标
    Java Native Interface 二 JNI中对Java基本类型和引用类型的处理
    Java Native Interface 编程系列一
    HTTP的报文与状态码
    [译]Android调整图像大小的一些方法
    Android多线程通信机制
    Android四大组件知识整理
    Java多态与反射
    23种设计模式的优点与缺点概况
    Android应用性能优化
  • 原文地址:https://www.cnblogs.com/hualuoshuijia/p/11474725.html
Copyright © 2011-2022 走看看