公司的一个项目有Android和iOS的app,Android的下载和安装都很方便,不过iOS有些麻烦,因为项目本身有些限制,主要有以下一些障碍:
1.iOS的版本不是通过Appstore分发。
2.出于安全的考虑,Android和iOS的app只能通过vpn的方式来访问服务器,而手机通过vpn后是无法访问互联网的。因此无法访问互联网的相关HTTPS的服务,换句话说就是无法使用互联网的SSL证书的web服务。
3、iOS的版本大于7.1的,因此apple的itms-services协议必须实用HTTPS。

鉴于上面这些障碍,于是考虑在局域网搭建内部HTTPS的服务,通过OTA(Over-the-Air)方式来分发iOS的应用。

OTA

OTA即Over-the-Air,简单来说就是通过无线的方式发送指令给设备,具体针对iOS的设备,比如iphone 、ipad等,让开发者能够脱离Appstore,实现从自己的服务器下载并安装iOS应用。 用户只需要在iphone 或ipad的浏览器中点开一条链接,就能直接在主界面中安装App。整个分发的过程包括三部分:设备(iPhone,ipad),服务器(profile service,用来发送配置文件),验证服务器(包括CA和目录服务器)。

OTA分发的实现方式

针对iOS应用分发,需要在服务器里上包括三个文件,来实现OTA方式的分发

1.ipa文件,也就是应用安装包,可以是开发者证书签名的,也可以是企业证书。
2.plist文件,主要用来说明iOS应用的安装信息,主要的安装信息包括ipa文件的名称和存放路径。可以通过Xcode来创建plist文件,具体创建过程和plist文件这里就不赘述了。
3、一个提供itms-services协议链接的页面,同时该页面是通过HTTPS的方式访问。itms-services协议链接指向plist文件的路径,例如:

<a href="itms-services://?action=download-manifest&url=https://192.168.0.1/appipa.plist">Install App</a>

有了上面三个文件,apple设备就可以通过提供HTTPS服务器,读取plist文件的iOS安装的ipa文件的路径,从而实现下载和安装。

自建OpenSSL证书

由于提供HTTPS的服务只能在局域网内部,因此SSL证书不能使用相关CA机构颁发的,且证书不是基于域名,是基于ip地址的,因此只能采用自制证书。在这里我采用的是OpenSSL配置Tomcat 的SSL证书,OpenSSL使用是windows 版本的Apache服务器下的openssl.exe生成。 步骤如下(采用命令行的方式):

1.生成服务器的私钥
openssl genrsa -out server.key 1024

2.生成签署申请(Common Name必须为服务器的ip或域名)
openssl req -new -out server.csr -key server.key -config ..\conf\openssl.cnf


3.生成CA私钥
openssl genrsa -out ca.key 1024

4.用CA的私钥产生CA的自签署证书
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -config ..\conf\openssl.cnf

5.创建demoCA(bin目录下)
demoCA里面创建文件index.txt和serial,serial内容为01,index.txt为空,以及文件夹newcerts

6.生成网站服务器签署证书
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ..\conf\openssl.cnf

最后把生成好的server.crt 和server.key路径配置到Apache服务器的openssl.cnf配置文件里(具体配置见相关文档),重新启动Apache服务器即可。

SSLCertificateFile “/Apache22/conf/ssl2rver.crt”
SSLCertificateKeyFile “/Apache22/conf/ssl2rver.key”

客户端证书ca.crt可以通过下载或者email方式提供给iOS 设备安装,不过有一点要注意:由于这是自签名的SSL证书,是不可信任的,因此需要在iphone 或ipad 里手动设置信任证书。

安装完客户端证书后,就可以通过iphone 或ipad的浏览器来访问提供itms-services协议链接的页面,下载和安装iOS的应用了。

-----------------------------------------------------------------------------------------------------------

欢迎关注我的网站和微信公众号,文章会在我的网站和微信公众号上同步发布。

本文首发链接:https://www.watch-life.net/website-app/ota-ios-app.html

我的网站:守望轩

微信公众号名称:守望轩

微信公众号:iwatchlife

你也可以扫描或长按以下二维码

通过OTA的方式在局域网分发iOS应用相关推荐

  1. 免App Store分发iOS应用

    Title:免App Store分发iOS应用 Date:2015-03-21 00:03:59 Category:iOS Develop Tag:技术,生活,iOS Develop Author:E ...

  2. 如何利用Pre.im分发iOS测试包

    大众创新万众创业,在移动互联网的风口,移动APP开发与测试发展方兴未艾,受到了越来越多的重视.相较 iOS,Android 的开发环境更加开放.Android 开发者要测试应用时,只需发个 APK 安 ...

  3. 如何在没有 Mac 的情况下使用 Flutter 和 Codemagic 构建和分发 iOS 应用

    如果您在 Linux 或 Windows 上工作,请从这篇文章中了解如何构建和发布 iOS 应用程序.我们将展示如何使用 Flutter 和Codemagic(https://flutterci.co ...

  4. Windows补丁下载、批量安装、局域网分发

    Windows补丁下载.批量安装.局域网分发 对于广大电脑爱好者而言,打补丁已经是"家常便饭".每次重装系统后,之前系统更新过的补丁也随之毁于一旦,不得不再次连接到微软的网站,将系 ...

  5. Android OTA升级方式分析

    1.前言 OTA(Over-the-Air Technology)空中下载技术.是通过移动通信(GSM或CDMA)的空中接口对SIM卡数据及应用进行远程管理的技术.空中接口可以采用WAP.GPRS.C ...

  6. 迦太基 oc_如何使用迦太基分发ios框架

    迦太基 oc 模块化iOS (Modular iOS) Great software also has a great installation experience. If the software ...

  7. 局域网搭建IOS应用在线安装环境

    前言 一般公司在开发IOS的APP,发布测试版本,这是一个很繁琐的过程,对于一般的公司基本上就是把测试机加入开发列表中,然后打包APP,发布到网盘,或者发到QQ上,供测试人员下载安装测试.这绝对是一个 ...

  8. 这么多移动开发的方式,传统方式写安卓、IOS 还有出路吗?

    前言 我所说的传统的方式是指,用 Java 或者 Kotlin 写安卓,用 Object-C 或者 Swift 写 IOS. 回想我 2014 年上大学的时候,老师跟我们说最近两年移动端特别的火,出去 ...

  9. Android OTA升级方式

    Android OTA 功能,主要用于 修复 bug .系统升级等. 升级的关键参数是 ro.product.version ,升级包的版本要高于当前版本. 记录下如下两种升级方式. 1.代码升级 通 ...

最新文章

  1. python入门教程收藏_python入门教程:超详细保你1小时学会Python,快来收藏看看...
  2. 服务器意外重启导致storm报错的问题处理
  3. SAP Spartacus的产品主数据模型
  4. Android学习路线总结
  5. 边缘AI计算新时代,人工神经网络秒变脉冲神经网络
  6. sql查询每科成绩的最高分_数据分析SQL查询:一文带你入门到掌握
  7. PHP中的正则表达式函数
  8. 巨蚁数字全息过山车利用科技创造收获
  9. 2017软件构造3.3
  10. MATLAB GUI 滑动条设置步长
  11. 爬取b站最火up主及其粉丝信息
  12. 冰冻三尺非一日之寒——大型网站架构演进
  13. Windows系统下的Git安装教程
  14. python如何定义正整数_Python如何将一个正整数分解为质因数相乘
  15. web防火墙和waf防火墙的区别
  16. 将制作好的系统启动U盘还原
  17. 百度地图js轨迹展示
  18. anacoda里面安装包显示失败_Premiere2020安装包下载及安装教程(附pr2020配置要求)...
  19. python输出变量的值使用_如何使用python语言中的输入和输出打印对应的值
  20. 中文词向量的下载与使用探索 (tensorflow加载词向量)

热门文章

  1. css特殊边框形状_了解CSS边框角形状
  2. Android复习系列③之《Android筑基》
  3. 计算机广东大专院校排名2018,重磅!广东85所专科院校官方排名刚刚出炉,这所高职回归第一!...
  4. HTML/CSS学习笔记(1)
  5. 【雕爷学编程】Arduino动手做(2)---光敏电阻模块
  6. 用Python做一个猜数游戏(入门)
  7. 小米科学计算机开立方,小米计算器安卓版_小米计算器怎么开立方_小米科学计算器_易玩网...
  8. 判断三角形 java_java中判断是否三角形的方法
  9. Android 安全框架 -- 总概
  10. matlab学习计划11.4