first commit

This commit is contained in:
2020-04-21 13:29:13 +08:00
commit 767cf46baa
118 changed files with 20253 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
# FEmirror 云更新
`FEmirror 云更新` 是一个自动化更新平台,无需后端也可以完成 app 日常更新.
<img :src="$withBase('/h2.png')" alt="foo">
## [访问网站](https://hotfix.femirror.com/)
## 使用指南
### 注册
使用`Github`授权登录.
### 上传更新包
点击左侧`点击/拖动上传升级包`按钮上传升级文件.
可以上传`apk`,`wgt`两种类型的文件.
文件上传成功后在`应用管理`列表中会出现您刚刚上传的更新包信息.
<img :src="$withBase('/h3.png')" alt="foo">
### wgt 热更新的发布
点击`发布`按钮,如下图,提供几种参数供您选择.
<img :src="$withBase('/h1.png')" alt="foo">
#### 更新方式的选择
1. 静默更新 : 使用`checkUpdate`方法后检查更新,如果有更新会自动下载 app,整个过程没有任何提示,用户第二次打开 app 就会出现更新后的效果.
2. 提示更新 : 使用`checkUpdate`方法后检查更新,如果有则会弹出确认框,用户确认后会提示正在下载,正在安装,安装完成重启,更新完成等提示.
#### 更新平台的选择
如果只需要某一个平台更新,可以根据需求选择
| iphone 效果如下 | 安卓效果如下 |
| ---------------------------------------------------------------- | --------------------------------------------------------------------- |
| <img width="380" :src="$withBase('/IMG_0040.PNG')" alt="foo"> | <img width="380" :src="$withBase('/S80805-211149.jpg')" alt="foo"> |
### app 更新的发布
app 更新只适用于`安卓 apk` 类型,也就是下载更新包后执行安装.
### 关闭更新
在应用详情的右上角可以关闭更新,关闭更新后用户检查更新后不会作处理
## 常见问题
### 提示版本不一致
在调试热更新的时候必须使用自定义基座,否则得到的版本是 `Hbuilder H5+ App` 的版本.
### 更新替换
由于这种热更新是替换更新,新的热更新包如果有问题,可能导致 app 无法使用,请测试成功后再发布,或者您上传一个专用于测试的 app

122
docs/hotfix/old/hotfix.md Executable file
View File

@@ -0,0 +1,122 @@
# Hotfix [项目地址](https://github.com/tyaqing/hotfix)
热更新能够不提交应用商店审核而修改 APP 内容,使得 app 的迭代变的非常灵活.
`MogoH5+``1.3.0`后加入了`热更新/安装更新`的集成.同时,我们的`热更新服务器`也在内测中,将在不久公测使用.您无需后端就可以完成整个软件的`热更新/安装更新`服务.
| iphone 热更新 效果如下 | 安卓热更新效果如下 | 安卓安装更新如下 |
| ---------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- |
| <img width="400" :src="$withBase('/IMG_0040.PNG')" alt="foo"> | <img width="400" :src="$withBase('/S80805-211149.jpg')" alt="foo"> | <img width="400" :src="$withBase('/S80806-112100.jpg')" alt="foo"> |
## 介绍
在使用热更新前,请看完这份介绍再使用.
### 热更新
对于安卓来说,热更新是没有任何问题的,但是苹果您可以看下面这段话.
#### App store 应用更新说明(引自 dcloud)
> 应用资源更新肯定是违反 apple 政策的,但目前看起来它也不管。你在官网案例那里下载 Appstore 版本的那些 app大多启动后都会提示更新反正也都没下架。如果你不是很大的公司apple 不会理睬你。如果你是大公司,建议不要做整体更新,每次更新几个页面,也不要提示更新后需要重启,这样会安全点。
作者本人的实践中也经常使用热更新,名声不大,不频繁基本上可以自由使用.
同样,我们加入了`静默更新`这种比较无脑的更新.
### 安装更新
安装更新在这里指的就是更新大版本,比如添加了模块,必须重新安装.
#### 在安卓的安装更新
1. 可以让 APP 提示,然后用户选择自己下载安装
2. 应用商店更新
#### 在苹果的安装更新
1. 必须提交 AppStore 提交审核
在这里顺便提一下,苹果用户的习惯一般是自己主动更新.
在苹果应用商店的大厂 app (微信,淘宝,京东) 更新几乎不会受到 app 的更新推送,也没有所谓`检查更新`的功能,也就是说,更新是用户主动操作的.我们的`迭代`同样也遵循这条`行规`.
## 引入方式
可以在`main.js`中添加`checkUpdate(URL);`,打开 app 就会自动检测.还可以放在`检查更新`的按钮上触发.
### ES6 Module 引入
首先在`page.json`把用到`checkUpdate`的页面加上管道`|plusReady`.
然后加载使用.
```js
import { checkUpdate } from "./utils/hotfix";
checkUpdate(URL); // 填入您检查api的url地址
```
### `<script>`方式引入
这种用于没有使用脚手架的开发者
```html
<title>APP</title>
<script src="html5plus://ready"></script> // 这段必须加载title底下
....
<script src="path/hotfix-bs.js"></script>
<script>
checkUpdate('https://api.hotfix.femirror.com/public/app/checkUpdate?bundleId=你的appId'); // 填入您检查api的url地址
</script>
```
## 热更新配置
热更新分为两种,在 ios 和安卓都可以使用:
1. 静默更新 : 使用`checkUpdate`方法后检查更新,如果有更新会自动下载 app,整个过程没有任何提示,用户第二次打开 app 就会出现更新后的效果.
2. 提示更新 : 使用`checkUpdate`方法后检查更新,如果有则会弹出确认框,用户确认后会提示正在下载,正在安装,安装完成重启,更新完成等提示.
如果您更新后不想立即重启,可以注释掉`hotfix.js`中的函数`plus.runtime.restart();`,这样,app 会在用户第二打开的时候自动完成更新.
## 后端接收的数据格式
`checkUpdate(url)` 是以 `POST` 去访问 URL 的.数据类型为`application/json`
| 名称 | 描述 | 类型 |
| ------- | ------------------------------- | ------ |
| version | app 当前的版本 ,如 2.1.0 | string |
| os | app 设备的系统信息 比如系统版本 | json |
| device | app 设备的设备信息 比如 uuid | json |
## 后端返回的数据格式
下面是一个完整的数据返回 返回格式为`application/json` ,返回状态码为`200`.
> 注意 : 返回`200`以外的状态码将不被处理,如果想自行处理可以改写代码
| 名称 | 描述 | 参数 |
| -------------- | --------------------------------------------------------------- | ------------------------ |
| name | 版本号 如果检测的版本大于本地版本就会更新 | string |
| title | 升级提示标题 | string |
| description | 升级提示内容 | string |
| platform | 符合升级的平台 ios:升级苹果 android:升级安卓 both:都更新 | `ios` ,`android`, `both` |
| type | 安装类型 wgt:热更新 apk:安装更新 | `wgt`,`apk` |
| hotupdate_type | 更新提示 silence:静默更新 tip:提示更新 (apk 的安装是需要提示的) | `silence`,`tip` |
| android_url | 更新下载地址 以`.apk`,`.wgt`结尾的 http 地址 | url |
下面这段`json`可以表达为:
1. 更新平台为 `全部平台`
2. `热更新`
3. `提示更新`
```json
{
"name": "2.2.1",
"title": "发现新版本,快来使用吧!",
"description": "1.增加了....\n 2.修复了... 3.杀了一个程序员祭天",
"platform": "both",
"type": "wgt",
"hotupdate_type": "tip",
"android_url": "http://cdn.femirror.com/H5FD926B1.wgt"
}
```

49
docs/hotfix/old/introduction.md Executable file
View File

@@ -0,0 +1,49 @@
# 介绍
> `Hotfix`+`FEmirror 云更新` 让您的 H5+应用快速拥有热更新功能.
只需`几分钟`,让您的应用拥有更新能力!
| iphone 热更新 效果如下 | 安卓热更新效果如下 | 安卓安装更新如下 |
| ---------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- |
| <img width="400" :src="$withBase('/IMG_0040.PNG')" alt="foo"> | <img width="400" :src="$withBase('/S80805-211149.jpg')" alt="foo"> | <img width="400" :src="$withBase('/S80806-112100.jpg')" alt="foo"> |
### Hotfix
`Hotfix` 是一个适用于 H5+应用的一个`拓展库`.可以自动完成热更新,和安装更新任务.
只要您的 app 是使用 Hbuilder 开发的,就可以使用 `Hotfix`.具体接入方式请[查看教程](hotfix.md)
### 云更新
`更新云` 是一个`app`版本更新的管理平台,提供版本更新服务.
单独的 `Hotfix` 还需要后端的协作,比如`版本管理`,`下载服务`.
`FEmirror 云更新`就是为您提供`版本管理`,`下载服务`的服务的.
### 如何 3 分钟接入云更新
#### 1.如果您是 MogoH5+ 开发者
如果您是`MogoH5+`的开发者,`1.3`后是内置了热更新,只要后端完成相关更新逻辑,就可以使用了.
如果想要更快的方式接入,可以使用`FEmirror 云更新`
#### 2.如果您是 Hbuilder 开发者
如果您的应用是使用`mui`开发,也没有使用`Mogoh5+`,您可以以`<script>`的方式引入`hotfix`获得更新能力.
同样,搭配`FEmirror 云更新`使用可以让您快速获得热更新能力.
### `FEmirror 云更新` 下一步计划
下一步会加入数据统计,比如安装设备的系统分布,版本分布等,您也可以提出宝贵意见
## 赞助
您的赞助会使`MogoH5+`发展的更好,所赞助的资金都将提升`FEmirror 云更新`服务.
| 微信 | 支付宝 |
| ---------------------------------------------------------- | ------------------------------------------------------------- |
| <img width="200" :src="$withBase('/wxpay.JPG')" alt="foo"> | <img width="200" :src="$withBase('/alipay.JPG')" alt="foo"> |

32
docs/hotfix/old/usage.md Executable file
View File

@@ -0,0 +1,32 @@
# 接入方式
## 引入方式
可以在`main.js`中添加`checkUpdate(URL);`,打开 app 就会自动检测.还可以放在`检查更新`的按钮上触发.
### ES6 Module 引入
首先在`page.json`把用到`checkUpdate`的页面加上管道`|plusReady`.
然后加载使用.
```js
import { checkUpdate } from "./utils/update";
checkUpdate(URL); // 填入您检查api的url地址
```
### `<script>`方式引入
这种用于没有使用脚手架的开发者
```html
<title>APP</title>
<script src="html5plus://ready"></script> // 这段必须加载title底下
....
<script src="path/update.js"></script>
<script>
checkUpdate('https://api.hotfix.femirror.com/public/app/checkUpdate?bundleId=你的appId'); // 填入您检查api的url地址
</script>
```
如果您没有后端接入,可以使用`FEmirror云更新`