配置iOS应用的网页安装

由于iOS的封闭性,其应用安装诸多限制,一般用户的应用安装渠道只有App Store,PP助手这类应用算是曲线救国。
官方点的渠道除了App Store,还有TestFlight这个官方内测渠道,也十分方便,到iTunes Connect上面添加内测用户的Apple id,用户到App Store下载TestFlight,当有应用参与内测时,用户会收到邮件,把邮件的的内测码复制粘贴到TestFlight应用内下载即可。
除此之外,剩下还有自签名后发布让用户下载的方法。如果是688元的证书,签名的描述文件需要先到苹果开发者中心添加用户设备UDID,限制100台设备,如果是2000大洋的企业证书就签名发布可以了,无设备数量限制。

下面就来说说688元的证书怎么愉快地玩耍

获取用户 UDID

首先要获取用户的 UDID,虽说在xcode上装一遍应用就算添加上了,但如果有几十台排着队装就不爽了。

大概的流程是让用户用iPhone 的Safari 访问一个描述文件(device.mobileconfig),然后就会跳转去安装证书,安装完会根据描述文件的回传地址把UDID和一些设备信息传给服务器。

这里找到一个15年的PHP实现,挺简洁的
https://github.com/hunk/get-UDID

简单说说怎么改,其实很简单,我压根不懂PHP都改好了

先改一下默认页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>UDID</title>
<meta name="viewport" content="width=device-width" />
</head>
<body>
<div>
<div>
<h1>获取设备的UDID</h1>
<p>Step 1: 请点击下面链接,并安装证书</p>
<p> <a class="button" href="get_mobileconfig.php">有种你点我一下</a> </p>
</div>
</div>
</body>
</html>

这样中文就不会乱码,下面的一些标签内容想怎么搞怎么搞

device.mobileconfig 配置与签名

配置

把里面device.mobileconfig模板里的

1
2
<key>URL</key>
<string>http://hunk.com.mx/udid/processes_data.php</string>

URL这个key的值改成自己的服务器

签名

这个描述文件如果不签名的话也是能用的,只是会安装描述文件的时候有些红字警告。

给描述文件签名这事如果一步步刀耕火种的话能扯几百字,这里还是给出一个Python脚本。

github仓库地址 https://github.com/nmcspadden/ProfileSigner

  • 先列出能用的签名证书
1
security find-identity -v -p codesigning

大概像这样子

1
"iPhone Developer: xxxxxxxxxx (QXXBXX3XWP)"
  • 用脚本签名
1
./profile_signer.py -n "iPhone Developer: xxxxxxxxxx (QXXBXX3XWP)" sign device.mobileconfig devicesigned.mobileconfig

一目了然

配置show_detail.php

用户安装完描述文件,iOS 向服务器发送了一些UDID信息,如果能实现自动化,到这一步就可以了,但一般都是没有的,为什么?说到底这玩意是给688证书玩的,大方点的公司都直接买企业证书了,才2000大洋,搞一个UDID的收集模块的人力成本可能都不止2000大洋。
在开源项目里,收到这些用户信息后,经过processes_data.php 处理,会由show_detail.php输出返回,返回的页面除了UDID一些信息外,还有一个发送邮件的按钮,把邮件地址配置成自己的即可。

经过以上配置,就可以把项目上传有PHP环境的服务器上,部署?PHP上传即部署,还需要配置一下Nginx或Apache,这都很简单,就不赘述了

弄一个安装页面

配置一个plist文件

以下面为模板,照着改就是了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?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>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://xxx.com/wechat/wechat.ipa</string>
</dict>
</array><key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.xx.wechat</string>
<key>bundle-version</key>
<string>1.0.0</string>
<key>kind</key>
<string>software</string>
<key>subtitle</key>
<string>chat</string>
<key>title</key>
<string>chat</string>
</dict>
</dict>
</array>
</dict>
</plist>

默认页面如下

主要把a标签的链接内容改一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="zh-CN" />
<meta name="viewport" content="width=device-width" />
<style type="text/css">
body{text-align:center;padding-top:100}
</style>
</head>
<body text-align=center>

<h1>微信</h1>
<p></p>
<p><a href="itms-services://?action=download-manifest&url=https://xxx.com/wechat/wechat.plist">安装修改版微信,不会覆盖已安装的微信</a></p>
</a></p>
</body>
</html>

把以上两个文件和打包好的ipa放到服务器即可,但这plist文件的访问必须要https,ipa没试,不确定要不要https。要么把plist和ipa放到一些云盘然后拿到分享链接,一般都是https的,要么申请一个免费的let’s encrypt证书,有脚本,也是很方便。