使用 items-services 协议直接安装 iOS App

Posted by Calvin on 2019-05-16

Android 用户在使用 App 时比较方便,很多时候可以直接在 App 对应官网下载 APK 并安装就可以使用了;而 iOS 由于其系统的封闭性,普通用户安装使用 App 时只有 App Store 一个渠道,尤其很多应用无法在大陆 App Store 安装很不方便。现在就介绍下 Apple 的 items-services 协议,使用此协议就可以不使用 App Store 安装 iOS 应用了;当然,此协议的使用主要分为 2 部分。

  1. 个人或者公司开发者账号打包 App 给内部测试人员使用。
  2. 企业级开发者账号分发,部分行业产品无法上架 App Store 时多采用此方法。

主要操作步骤如下:

  1. 个人/公司开发者账号打包时先将需要测试的设备 UUID 加入到开发者中心的设备列表里,一个开发者账号限制为 100 台设备。企业开发者账号无需此操作。
  2. 打包时使用 developer profile 或 adhoc distribution profile 进行 archive,由于该 IPA 不是用于发布到 App Store,所以打包时切记不要使用 distribution profile 选项。
  3. 打包完成后生成 ipa 和 plist 文件,IPA 文件为 iOS 系统的软件安装包,plist 文件是 Apple 通过 items-services 协议访问的文件。
  4. 将打包好的 IPA 文件上传至下载服务器,并将该 IPA 的下载链接🔗正确配置到 plist 文件中,plist 文件内容和格式如下
  5. 将配置好的 plist 文件上传至服务器,并获取其链接,然后在产品官网或者公司内部测试网站配置 items-services 协议,协议链接为 itms-services://?action=download-manifest&url=‘plist文件访问地址’,只需要在产品下载按钮触发时打开此链接,iOS 系统自带 Safari 浏览器就会直接提示用户安装产品了。
<?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> IPA 文件下载地址 </string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string> 包名 </string>
<key>bundle-version</key>
<string> 版本号 </string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string> 项目名 </string>
</dict>
</dict>
</array>
</dict>
</plist>