最近在搞积分墙这一块的东西,需要获取手机的UDID来保证唯一性,翻遍了所有资料,虽然找到了网上好多教程,但是过程中也遇到一些问题与大家分享~~~
废话少说,直接开始~~~
首先我们要生成一个.mobileconfig的XML文件: 生成地址
一、生成步骤:
1、在你的Web服务器上创建一个.mobileconfig的XML格式的描述文件;
2、用户在所有操作之前必须通过某个点击操作完成.mobileconfig描述文件的安装;
3、服务器需要的数据,比如:UDID,需要在.mobileconfig描述文件中配置好,以及服务器接收数据的URL地址;
4、当用户设备完成数据的手机后,返回提示给客户端用户;
二、.mobileconfig:
这样生成的文件在safair浏览器中打开后会有红色提示未签名,不过没关系,也能获取到UDID。
当然对于有些有强迫症的来说想要很完美(比如我,哈哈~~~),那就对其进行签名。网上有很多签名方式大家可以找一下,也可以自己申请一个免费的证书对其进行签名,签名方法可以借鉴:签名发放借鉴
三:新建一个用于下载mobileconfig的网页,这里我命名为udid.php:
yourapp为应用提前设置的URL Schemes(查看自定义 URL Scheme 完全指南)
接下来下面的界面就是用户通过浏览器点击开始安装时的界面,一步步点击安装即可。
四、下面为后台接收到的数据:
我们安装好之后,会通过步骤二里面设置好的链接用来接收设备post给后台的UDID等数据。
php接收:
重定向一定要使用301重定向,否则安装会提示"无效的描述文件(切记!切记!!!)
java接收:
重定向一定要使用301重定向,否则安装会提示"无效的描述文件(切记!切记!!!)
五:都设置好之后我们通过步骤三设置的URL Schemes返回之后接收到数据
下面重点来了!!!好多会遇到下列情况(我在这卡了两天):
不要着急,一步步查找原因:
1、请求一定要是https
2、mobileconfig下载时设置文件内容类型Content Type为:application/x-apple-aspen-config
3、有些下载的.mobileconfig文件里面有注释,一定要删掉!删掉!
到此,一般情况下都能拿到设备的UDID了~~~~嘎嘎嘎~~~~哪有不对的地方希望大家批评指正!不喜勿喷~~
参考链接(感谢🙏):iOS 开发如何获取UDID(用safari浏览器获取设备的UDID) - 简书