背景
苹果企业账号打包分发app,方便内部安装测试App。最近公司企业账号续费失败,申请新的企业账号没成功。(国内近2年基本没有企业申请成功)
这就蛋疼了,了解到其他app是通过多开发者账号,adhoc证书白名单的方式来做分发,adhoc证书无法解决设备数量的问题,最多100台设备,而且还要提前注册好,一年更新一次,注册设备就是要拿到设备的udid。
获取udid
了解到苹果可以通过safari以OTA(over the air)的方式拿到udid。
整体流程分三步
- 下发udid.mobileconfig文件
- 授权安装配置文件
- 回调解析xml拿到udid
![](/images/20221107_182553_IMG_1075.jpg)
![](/images/20221107_182553_IMG_1074.jpg)
udid.mobileconfig
一个xml文件,文件内容如下
1 |
|
需要注意就是回调接口 需要支持https,否者会报ATS错误 the resource could not be loaded because the app transport security policy requires the use of a secure connection
起service下发 xml 文件,我这里以java spring mvc来实现的
1 | "/udid.mobileconfig") ( |
授权安装
下载udid.mobileconfig之后,系统会自动在设置里面登记该配置文件,需要自行去设置里面 授权安装。
安装成功之后 会回调 mobileconfig里面提供的回调地址,udid等信息会以参数的形式一并带上,格式也是xml格式。
如果下载的过程提示无效文件,可能就是mobileconfig文件内容有问题,可以通过pc浏览器检查下文件内容,我这里就遇到了文件乱码的情况
上面提到文件内容是以字节流的方式下发的,配置好ByteArrayHttpMessageConverter的顺序就ok了
1 | <!--自动注册基于注解风格的处理器 (数据转换 格式化 数据)--> |
解析udid
还是以java实现
1 | "/action", method = RequestMethod.POST) (value = |
解析xml就可以拿到udid字段,注意的是 重定向一定要使用301重定向(MOVED_PERMANENTLY),有些重定向默认是302重定向,这样就会导致安装失败,设备安装会提示”无效的描述文件