使用 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 profileadhoc distribution profile 进行 archive,由于该 IPA 不是用于发布到 App Store,所以打包时切记不要使用 distribution profile 选项。
  3. 打包完成后生成 ipaplist 文件,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>