都知道 iPhone 苹果手机应用只能通过 AppStore 进行安装,测试包只能通过官方提供的 TestFlight 等工具安装,而且通常有较长的审核流程,无法及时更新安装包,非常不方便。本文主要介绍前端实现对签名成功的 App直接通过浏览器下载安装,开发者可以及时提供测试 App。
App必须签名成功,这一步由ios应用开发者完成;itms-services:///?action=download-manifest&url=一个https地址
下面是几个过程的具体实现:
(1)上传资源到服务器
公司文件可部署公司服务器,自己测试文件可以使用github等免费提供文件地址的服务。
(2)由客户端生成plist文件
app.plist:客户端配置或更改下面ipa下载地址、App图标及App描述信息。
<plist version="1.0">
<dict>
<key>itemskey>
<array>
<dict>
<key>assetskey>
<array>
<dict>
<key>kindkey>
<string>software-packagestring>
<key>urlkey>
<string>https://ipa 下载地址string>
dict>
<dict>
<key>kindkey>
<string>display-imagestring>
<key>needs-shinekey>
<true/>
<key>urlkey>
<string>https://app 图标地址string>
dict>
array>
<key>metadatakey>
<dict>
<key>bundle-identifierkey>
<string>com.xxxx.xxxx.xxxxstring>
<key>bundle-versionkey>
<string>0.1.0string>
<key>kindkey>
<string>softwarestring>
<key>titlekey>
<string>APP名称string>
<key>subtitlekey>
<string>App描述string>
dict>
dict>
array>
dict>
plist>
(3)下载页面
install.html:提供给用户的下载html页面,具体样式和功能可根据自己的需求调整。
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
head>
<body>
<button id="button">下载button>
<script>
document.getElementById('button').addEventListener('click', function() {
window.open('itms-services:///?action=download-manifest&url=https://pan.xchjw.cn/download/app/CorpPrivateInstall.plist', '_self')
})
script>
body>
html>
(4)实现效果
将下载地址提供给需要的人,点击下载按钮即可实现App安装。

市场上很多的分发平台,如蒲公英就是这么做的。
safari游览器中实现下载,其他游览器中打开可做一些引导提示;ios7.1开始,http推送plist已经不能用了,只能使用https推送,因此访问这个文件的地址必须是https开头的。你可以配置自己的服务器支持https服务,也可以借助第三方工具。其实,也可以不用这么麻烦,自己部署这么多文件,完全可以借助第三方应用内测分发平台,比较出名的有下面几个:
前端实现iPhone绕过AppStore从浏览器直接安装App https://juejin.cn/post/7021683993980436516#comment