iOS 扫码下载的实现 - 摆脱蒲公英的种种坑

iOS 扫码下载的实现

关键字:Plist iOS 扫码下载 蒲公英 HTTPS VUE

故事背景

测试的产品在 jenkins 自动打包完成后,会上传到蒲公英(https://www.pgyer.com/)这样的第三方安装包管理平台上进行托管。
本来长期薅羊毛就不行,这不,蒲公英开始变得不稳定。

  • 上传过程经常失败,卡住,上传速度极慢。
  • 对每个免费账户每天上传的次数进行限制。
  • 然后是硬盘坏掉丢失一些数据,毕竟免费,免责。(个人感觉可能是企业运行成本上升迫不得已了)
  • 接下来迅速来了一个安装包审核机制,也就是安装包上传后需要审核通过才能扫描二维码下载。而这个时间间隔是不确定的,白天可能 5 分钟、10 分钟,晚上 40 分钟、1 个半小时,都遇到过,十分影响工作效率。

于是想着自己能够搭建一套二维码扫描下载,取代下蒲公英承担的这部分工作。安卓的太简单了,就是个文件服务器嘛,向来 iOS 棘手些,一起开始挑战吧~

ps: 不会搭建 SpringBoot 后台的同学可以提前查一下资料

提纲
  • 做一个 HTTPS 协议的网站
  • Plist 文件填写 App 以及安装包的相关信息
  • 将类似 deeplink 的一个链接放进按钮或者二维码中

SpringBoot 后台

  1. 搭建文件上传服务,用于上传 plist 配置文件
    本文使用了 SpringBoot 搭建后台服务,具体的如何新建一个项目的教程网络上随便一搜索很简单~
plist 文件的格式参考




    items
    
        
            assets
            
                
                    kind
                    software-package
                    url
                    http://这是你的安装包地址.ipa
                
                
                    kind
                    full-size-image
                    needs-shine
                    
                    url
                    
                
                
                    kind
                    display-image
                    needs-shine
                    
                    url
                    安装过程显示图片
                
            
            metadata
            
                bundle-identifier
                这里是 bundle ID
                bundle-version
                1.0
                kind
                software
                title
                这里写应用名称
            
        
    



bundle id

根据企业包、内测包的不同要作相应的更改。

安装过程显示图片

指的是扫码开始下载之后,手机上的占位图标(有灰色圆形下载进度展示)的背景图片。

尤其注意,plist 文件是要放在 HTTPS 协议的文件服务上的。


  1. 建立 HTTPS 网站链接

编辑 SpringBoot 工程的 application.properties 文件

# 尝试更换成 HTTPS
server.port=443
server.ssl.key-store=server.keystore
server.ssl.key-alias=tomcat
server.ssl.enabled=true
server.ssl.key-store-password=123456
server.ssl.key-store-type=JKS

这里用到了一个 server.keystore 文件,和一些配置参数。
需要我们自己来生成:

生成 HTTPS 证书

在命令行输入

keytool -genkey -alias tomcat -keyalg RSA -keystore ./server.keystore 

会请求用户进行一系列的输入

输入密钥库口令:  123456
再次输入新口令:  123456
您的名字与姓氏是什么?
  [Unknown]:  pengli
您的组织单位名称是什么?
  [Unknown]:  netease
您的组织名称是什么?
  [Unknown]:  netease
您所在的城市或区域名称是什么?
  [Unknown]:  beijing
您所在的省/市/自治区名称是什么?
  [Unknown]:  beijing
该单位的双字母国家/地区代码是什么?
  [Unknown]:  cn
CN=pengli, OU=netease, O=netease, L=beijing, ST=beijing, C=cn是否正确?
  [否]:  y

输入  的密钥口令
    (如果和密钥库口令相同, 按回车):  

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore ./server.keystore -destkeystore ./server.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

最终会在当前目录下得到一个 server.keystore 文件,然后把该文件放置到 SpringBoot 项目的根目录。

like this

SpringBoot 项目目录.png
  1. 开启文件下载目录

编辑 application.properties 文件

# 尝试更换成 HTTPS
# 开放文件的访问目录(用于测试iOS 的扫码下载)
#资源映射路径为/image/**,你想在url访问的请求路径
spring.mvc.static-path-pattern=/CsvFiles/**
#资源映射地址为file:xxx,文件存放的真实路径
spring.resources.static-locations=file:/Users/lipeng/Documents/qa/src/main/resources/CsvFiles
  1. 扫码下载
    使用 VUE 生成二维码,直接扫描下载(也可以直接在后台 SpringBoot 项目中直接生成好图片以供前端直接调用)
    地址:
itms-services://?action=download-manifest&url=https://11.111.xxx.xxx/CsvFiles/CsvFiles1576660703964ios_ipa_download.plist

VUE 生成二维码教程

这里给出一个自己的 VUE 页面实现

使用 For 循环制作,优化交互样式







验收:

扫码下载界面.png

接下来就是接入各种产品啦,有空加个下拉框,考虑接口请求下 bundleid.

大功告成!内网安装速度杠杠的,码字不易,烦请点个赞啊~

点赞啊!

赞啊!

啊!

你可能感兴趣的:(iOS 扫码下载的实现 - 摆脱蒲公英的种种坑)