• 【记录】前端如何实现iPhone不上架AppStore,从游览器直接安装测试App


    背景:

    都知道 iPhone 苹果手机应用只能通过 AppStore 进行安装,测试包只能通过官方提供的 TestFlight 等工具安装,而且通常有较长的审核流程,无法及时更新安装包,非常不方便。本文主要介绍前端实现对签名成功的 App直接通过浏览器下载安装,开发者可以及时提供测试 App。

    流程:
    • 前提条件,评估App必须签名成功,这一步由ios应用开发者完成;
    • 上传到服务器,获得信息和下载地址,得到两个文件,一个是plist文件和ipa文件,及app图标;
    • 通过访问plist文件来达到下载ipa文件和图片的目的,使用了评估safari游览器自带协议,用a标签或者window.open方式打开plist地址;
    • 信任设备并安装。
    itms-services:///?action=download-manifest&url=一个https地址
    
    • 1

    下面是几个过程的具体实现:

    实现:

    (1)上传资源到服务器
    公司文件可部署公司服务器,自己测试文件可以使用github等免费提供文件地址的服务。

    • ipa:需要安装的评估App打包文件,由ios客户端提供;
    • logo:图片格式的App图标;
    • plist:App下载配置文件。

    (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>
    
    • 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
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    (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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    (4)实现效果
    将下载地址提供给需要的人,点击下载按钮即可实现App安装。
    在这里插入图片描述

    市场上很多的分发平台,如蒲公英就是这么做的。

    注意:
    • 只可在苹果safari游览器中实现下载,其他游览器中打开可做一些引导提示;
    • 需要注意的是从ios7.1开始,http推送plist已经不能用了,只能使用https推送,因此访问这个文件的地址必须是https开头的。你可以配置自己的服务器支持https服务,也可以借助第三方工具。
    第三方app托管下载服务:

    其实,也可以不用这么麻烦,自己部署这么多文件,完全可以借助第三方应用内测分发平台,比较出名的有下面几个:

    • fir.im:免费应用内测托管平台,ios应用Beta测试分发,Android应用内测分发;
    • 蒲公英:免费的应用托管平台,App应用众测分发;
    • Pre.im:APP内测托管平台首选–Beta测试,免费的应用内测托管平台;
    • TestFlight Beta Testing:苹果官方测试平台工具。
    参考博客:

    前端实现iPhone绕过AppStore从浏览器直接安装App https://juejin.cn/post/7021683993980436516#comment

  • 相关阅读:
    走进人工智能|自动驾驶 开启智能出行新时代
    【SpringBoot】常用的的各种注解(二):Controller层相关注解
    Linux下安装配置redis详细教程,并配置哨兵模式,redis中文详解
    MySQL数据库管理
    go每日一题——内嵌,json.Marshal函数
    YUV与RGB颜色空间互转
    python列表操作
    在线手写汉字
    TCP/IP网络分层模型
    18.4 【Linux】systemd-journald.service 简介
  • 原文地址:https://blog.csdn.net/qq_26780317/article/details/127977053