转自:https://www.cnblogs.com/star91/p/5018995.html

最近公司的项目准备着手宣传工作了,宣传手册上要印制App的下载地址二维码,但是客户端应用还未上线,需要一种临时的方案解决应用分发下载问题,通常ios应用必须通过苹果应用商店才能下载安装,但是也可以看到一些应用没有通过苹果应用商店也能下载安装,比如下面的兔兔助手。
兔兔助手_苹果手机助手_兔兔助手越狱版_兔兔助手官网下载
http://www.tutuapp.com/
直接扫码或者点击手机页面的下载链接就能下载安装成功。
其实这种安装方式是利用企业证书签名app的部署方式来安装程序,直接在ios设备上安装,严格来说其实是不符合apple的相关规定的,因此一般只用于内部测试下载安装,不建议使用这种方式来进行最终的应用分发。下面具体介绍一下实现方式。
准备的文件主要是三个:
  • 1、应用程序 后缀(.ipa) 文件(使用了企业级预置描述文件);
  • 2、清单 (后缀.plist) 文件(xml格式的清单描述文件)。
  • 3、网页(后缀.html)文件(引导用户安装的界面)
我没做过ios开发,因此.ipa文件,.plist文件怎么得到,开发人员应该很清楚,这里只介绍一下文件部署的情况。
首先APP上传到服务器有一个下载地址,比如:http://youdomain/app.ipa
然后部署.plist文件,这个文件大致如下所示
  1. <?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>http://cloud.189.cn/download/client/iOS/cloud189_1.1.1.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>

需要注意的是从ios7.1开始,http推送plist已经不能用了,只能使用https推送,因此访问这个文件的地址必须是https开头的。你可以配置自己的服务器支持https服务,也可以借助第三方工具,这里主要介绍使用第三方工具。
国外有很多网站都是支持https服务的,比如DropBox和Github,以Github为例,打开任意开源项目中的一个文件,切换到“RAW”
 
可以看到地址栏显示的是https,因此可以把app.plist文件上传到github生成一个https地址,不幸的是github在国内基本上属于被墙的状态,因此需要在国内找一个能提供https服务的存储方式,这里我推荐七牛云存储,注册成为标准用户后,新建一个空间,上传文件
在空间设置里可以开通https服务

这样就能得到一个https://dn-yourdomain.qbox.me/app.plist的地址,说了这么多,终于将.plist文件部署好了,其实前面的.ipa文件也可以上传到七牛云存储上供下载分流。
最后介绍如何下载安装应用,使用的是itms-services:协议
  1. itms-services://?action=download-manifest&url=https://plist文件的地址

接下来只要在网页(html)文件中加入
  1. <a href="itms-services://?action=download-manifest&url=https://plist文件的地址">安装</a>

这样点击手机网页上的“安装”链接就能下载安装应用了。至于这个页面要做的多花里胡哨,那就是前端美工的事了。
这里有一段比较完整的示例
  1.  1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">2 <htmlxmlns="http://www.w3.org/1999/xhtml">3 <head>4 <metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>5 <title>应用名字</title>6 </head>7 <body>8    <h1style="font-size:80pt">如果点击无法下载安装,请复制超链接到浏览器中打开<h1/>9    <h1style="font-size:100pt">
    10    <a title="iPhone"href="itms-services://?action=download-manifest&url=https://dn-你的空间名字.qbox.me//你的.plist">点击下载        </a><h1/>
    11 </body>
    12 </html>
    13  

如果想手机进入页面后直接下载安装,可以在html 标签的 head 标记中加入如下的Javascript代码
<script>var url ="https://plist文件地址";window.location ="itms-services://?action=download-manifest&url="+ url;
</script>

这样就会自动提示下载和安装了。

如果通过ios应用内安装,代码大概如下所示

iOS:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-services://?action=download-manifest&url=https://plist文件的地址"]];

最后才是重点,我们不必这么麻烦自己部署这么多文件,完全可以借助第三方应用内测分发平台,比较出名的有下面几个:

应用测试发布平台

fir.im - 免费应用内测托管平台|iOS应用Beta测试分发|Android应用内测分发

http://fir.im/

蒲公英 - 免费的应用托管平台|App应用众测分发

http://www.pgyer.com/

Pre.im - APP内测托管平台首选 - Beta测试 - 免费的应用内测托管平台

http://pre.testin.cn/

TestFlight Beta Testing - App Store - Apple Developer

https://developer.apple.com/testflight/

试用了一下蒲公英,真是相当方便,只要注册一个帐号,将ipa文件上传,就会立即生成一个下载地址以及引导下载页面

通过查看api可以看到,蒲公英也是通过上面的方式安装的,只是给开发者省了不少时间

如果你嫌蒲公英的下载引导页面不好看,你可以自己做一个html页面,直接是用上面的itms-services地址。

参考:
通过 itms-services 协议,发布或者分享 iOS 应用程序
来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/defineconst/p/10717383.html

【App】不通过App Store实现ios应用分发下载安装(转)相关推荐

  1. iOS:苹果企业证书通过网页分发下载安装app

    iOS:苹果企业证书通过网页分发安装app       苹果的企业级证书发布的应用,是不用设备授权即可直接安装,并且不限设备上限.为了方便分发,苹果有协议实现通过网页链接直接下载安装企业级的应用.   ...

  2. iOS企业包下载安装

    当客户端完成开发和测试之后,准备上线给用户使用,就需要提供下载渠道,上传到「应用商店」和「App Store」是很常见的做法,但是今天我们要来聊一下 iOS 企业包的下载方式. 一.背景介绍 1.An ...

  3. ios通过浏览器下载安装app

    方法:通过itms-services://?action=download-manifest&url=https://xxxxx.plist 链接方式下载 plist文件(必须为https协议 ...

  4. ios mailto:// 用邮箱发邮件_英雄联盟手游公测,安卓/苹果iOS注册最新下载安装教程!...

    目前安卓/iOS在 28 日开启公测的地区有:日本.韩国.泰国.越南.菲律宾.马来西亚.新加坡. 12月首周公测地区:欧洲.中国台湾.大洋洲.越南,甚至还包括 中东.北非.俄罗斯.土耳其. 2021年 ...

  5. (一)app自动化测试环境搭建(mac+ios+airtest )

    环境搭建的效果如下: IOS手机屏幕显示Automation Running 电脑端airtest设备窗口上可以看到手机屏幕 以下是在mac电脑的搭建过程,只演示连接IOS真机部分,安卓机较为简单暂时 ...

  6. Web App、Hybrid App与Native App的设计差异

    目前主流应用程序大体分为三类:Web App.Hybrid App. Native App. 一.Web App.Hybrid App.Native App 纵向对比 首先,我们来看看什么是 Web ...

  7. 聊聊Web App、Hybrid App与Native App的设计差异

    目前主流应用程序大体分为三类:Web App.Hybrid App. Native App. 一.Web App.Hybrid App.Native App 纵向对比 首先,我们来看看什么是 Web ...

  8. WEB APP、HYBRID APP与NATIVE APP 差异分析

    更多 134 编者按:这3类主流应用你都了解吗?设计师除了要有视觉功夫,对不同形式的APP也应当了然于胸,今天百度的同学写了一篇非常全面的总结,帮你迅速搞定3类主流APP的设计方法,附带一大波避雷针, ...

  9. 【01】什么是 APP?移动 APP 有几种类型?

    问:什么是 APP ? 答:app 也就是应用软件的意思,是英文 Application 的简称,通常是指iphone,安卓等手机应用,现在的APP多指智能手机的第三方应用程序. 问:移动 APP 有 ...

  10. 论Web App、Hybrid App、Native App设计差异

    目前主流应用程序大体分为三类:Web App.Hybrid App. Native App. 一.Web App.Hybrid App.Native App 纵向对比 首先,我们来看看什么是 Web ...

最新文章

  1. java优先队列的入队函数_Java内置的优先队列PriorityQueue
  2. python要学多久才可以去找工作-Python学到什么程度才可以去找工作?掌握这4点足够了!...
  3. php 跨域名存储cookie,实现跨域名Cookie
  4. 本期最新 9 篇论文,帮你完美解决「读什么」的问题 | PaperDaily #19
  5. python中的常量是什么意思_第14p,Python中的常量与注释。
  6. 面试官:你给我画一下秒杀系统的架构图!
  7. TensorFlow.js 来了!浏览器上线机器学习功能
  8. 总结前端常用控件和疑难杂症的解决方法
  9. ZED2 ROS下bag包的录制与回放数据
  10. 华南x79主板设置硬盘启动_硬盘无法识别怎么办?最全的解决办法
  11. 二分查找递归、非递归实现(Python)
  12. docker tensorflow_用Docker容器方式安装TensorFlow
  13. 超详细|一篇搞定操作系统——处理器管理
  14. 人体神经网络分布图高清,周围神经组成及分布
  15. 儿童吹泡泡水简单配方_吹泡泡溶液配方大集合吹泡泡溶液最佳配方
  16. node获取系统字体
  17. hmmer建立hmmscan
  18. 如何快速学习一门计算机语言
  19. [矩阵论] Unit 0. 线性代数 - 部分知识点整理
  20. 一键命令测试云主机的带宽

热门文章

  1. 关于右键新建Word不调用默认模板的问题
  2. ldDWR出现“例外被抛出且未被接住 解决方法
  3. win10系统更新时一直停留在重新启动界面的解决方法
  4. 数据库原理课后作业答案 第七章
  5. 正定矩阵,半正定矩阵,负定矩阵的通俗理解
  6. Servlet常用依赖
  7. 计算机桌面截屏快捷键,关于电脑屏幕截图的快捷键是什么
  8. 18650锂电池保护板接线图_锂电池保护板几种接线方法介绍
  9. 阿里云国际版设置阿里邮件企业邮箱客户端教程
  10. 工程测量计算机在线用,工程测量中的计算机编程新技术.doc