first commit
This commit is contained in:
74
docs/hotfix/config.md
Executable file
74
docs/hotfix/config.md
Executable file
@@ -0,0 +1,74 @@
|
||||
# Hotfix配置
|
||||
|
||||
热更新能够不提交应用商店审核而修改 APP 内容,使得 app 的迭代变的非常灵活.
|
||||
|
||||
`MogoH5+`在`1.3.0`后加入了`热更新/安装更新`的集成.同时,我们的`热更新服务器`也在内测中,将在不久公测使用.您无需后端就可以完成整个软件的`热更新/安装更新`服务.
|
||||
|
||||
## 介绍
|
||||
|
||||
在使用热更新前,请看完这份介绍再使用.
|
||||
|
||||
### 热更新
|
||||
|
||||
对于安卓来说,热更新是没有任何问题的,但是苹果您可以看下面这段话.
|
||||
|
||||
#### App store 应用更新说明(引自 dcloud)
|
||||
|
||||
> 应用资源更新肯定是违反 apple 政策的,但目前看起来它也不管。你在官网案例那里下载 Appstore 版本的那些 app,大多启动后都会提示更新,反正也都没下架。如果你不是很大的公司,apple 不会理睬你。如果你是大公司,建议不要做整体更新,每次更新几个页面,也不要提示更新后需要重启,这样会安全点。
|
||||
|
||||
作者本人的实践中也经常使用热更新,名声不大,不频繁基本上可以自由使用.
|
||||
同样,我们加入了`静默更新`这种比较无脑的更新.
|
||||
|
||||
### 安装更新
|
||||
|
||||
安装更新在这里指的就是更新大版本,比如添加了模块,必须重新安装.
|
||||
|
||||
#### 在安卓的安装更新
|
||||
|
||||
1. 可以让 APP 提示,然后用户选择自己下载安装
|
||||
2. 应用商店更新
|
||||
|
||||
#### 在苹果的安装更新
|
||||
|
||||
1. 必须提交 AppStore 提交审核
|
||||
|
||||
在这里顺便提一下,苹果用户的习惯一般是自己主动更新.
|
||||
在苹果应用商店的大厂 app (微信,淘宝,京东) 更新几乎不会受到 app 的更新推送,也没有所谓`检查更新`的功能,也就是说,更新是用户主动操作的.我们的`迭代`同样也遵循这条`行规`.
|
||||
|
||||
|
||||
## Hotfix参数
|
||||
|
||||
|参数|说明|类型|
|
||||
|-|-|---|
|
||||
|`url`|更新请求地址|string|
|
||||
|`before(data)`| `data`返回的是请求后的`json`数据; 可在函数中执行安装前进行的操作,在此函数中,可以做一些确认操作,返回`Promise.resolve()`则执行下载安装,不返回或返回其他则不执行下载安装|`Promise`|
|
||||
|`success`|安装完成后执行的动作,比如重启app|`void`|
|
||||
|`error(e)`|返回error对象,一般在调试中使用|`Error`|
|
||||
|`onProgress(n)`|下载进度,`n`为0-100的下载进度|`int`|
|
||||
|
||||
|
||||
|
||||
## 后端接收的数据格式
|
||||
|
||||
`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` |
|
||||
| hotupdate_type | 更新提示 silence:静默更新 tip:提示更新 (apk 的安装是需要提示的) | `silence`,`tip` |
|
||||
| android_url | 更新下载地址 以`.apk`,`.wgt`结尾的 http 地址 | url |
|
35
docs/hotfix/hotfitxFemirror.md
Executable file
35
docs/hotfix/hotfitxFemirror.md
Executable file
@@ -0,0 +1,35 @@
|
||||
# Hotfix 云更新
|
||||
|
||||
Hotfix 云更新的架构设计是`Mysql`+`Redis`+`Egg.js(typescript)`.对内存占用极低,可用性比较高.
|
||||
|
||||
`Hotfix 云更新` 是一个自动化更新平台,无需后端也可以完成 app 日常更新.
|
||||
|
||||
> Hotfix 云更新仅提供测试性功能,不能保障服务的`稳定性`,因此,如果您有商业需求,可以联系作者进行有偿`私有化部署`.
|
||||
|
||||
<img :src="$withBase('/h2.png')" alt="foo">
|
||||
|
||||
## [访问网站](https://hotfix.femirror.com/)
|
||||
|
||||
## 使用指南
|
||||
|
||||
### 注册
|
||||
|
||||
使用`Github`授权登录.
|
||||
|
||||
### 操作步骤
|
||||
|
||||
<br>
|
||||
|
||||
<img style="box-shadow:0 0 20px #ccc" :src="$withBase('/hotfix/1.png')" alt="foo">
|
||||
|
||||
<br><br>
|
||||
<img style="box-shadow:0 0 20px #ccc" :src="$withBase('/hotfix/2.png')" alt="foo">
|
||||
|
||||
<br><br>
|
||||
<img style="box-shadow:0 0 20px #ccc" :src="$withBase('/hotfix/3.png')" alt="foo">
|
||||
|
||||
<br><br>
|
||||
<img style="box-shadow:0 0 20px #ccc" :src="$withBase('/hotfix/4.png')" alt="foo">
|
||||
<br><br>
|
||||
|
||||
<img style="box-shadow:0 0 20px #ccc" :src="$withBase('/hotfix/5.png')" alt="foo">
|
70
docs/hotfix/introduction.md
Executable file
70
docs/hotfix/introduction.md
Executable file
@@ -0,0 +1,70 @@
|
||||
# 介绍
|
||||
|
||||
> `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"> |
|
||||
|
||||
|
||||
|
||||
## 快速使用 [项目地址](https://github.com/tyaqing/hotfix)
|
||||
|
||||
### 安装
|
||||
#### npm 安装
|
||||
|
||||
```bash
|
||||
npm i h5plus-hotfix -S
|
||||
```
|
||||
|
||||
#### script加载
|
||||
|
||||
```html
|
||||
<script src="hotfix-bs.js"></script>
|
||||
```
|
||||
|
||||
### 使用
|
||||
|
||||
```js
|
||||
hotfix({
|
||||
url: updateUrl,
|
||||
before(data) {
|
||||
// 确认安装
|
||||
return new Promise(resolve => {
|
||||
plus.nativeUI.confirm(data.title, (selected) => {
|
||||
if (selected.index === 0) {
|
||||
plus.nativeUI.showWaiting("下载更新文件...");
|
||||
resolve(data);
|
||||
}
|
||||
}, {
|
||||
title: data.description,
|
||||
buttons: ["确认更新", "取消"],
|
||||
verticalAlign: "bottom"
|
||||
});
|
||||
});
|
||||
},
|
||||
success() {
|
||||
console.log('安装成功')
|
||||
plus.runtime.restart(); // 重启app
|
||||
plus.nativeUI.closeWaiting();
|
||||
},
|
||||
error(e) {
|
||||
// 错误显示
|
||||
plus.nativeUI.closeWaiting();
|
||||
console.log("安装wgt文件失败[" + e.code + "]:" + e.message);
|
||||
plus.nativeUI.alert("安装wgt文件失败[" + e.code + "]:" + e.message);
|
||||
},
|
||||
onProgress(p) {
|
||||
console.log(p) // 下载进度
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
## 赞助
|
||||
|
||||
您的赞助会使`MogoH5+`发展的更好,所赞助的资金都将提升`FEmirror 云更新`服务.
|
||||
|
||||
| 微信 | 支付宝 |
|
||||
| ---------------------------------------------------------- | ------------------------------------------------------------- |
|
||||
| <img width="200" :src="$withBase('/wxpay.JPG')" alt="foo"> | <img width="200" :src="$withBase('/alipay.JPG')" alt="foo"> |
|
59
docs/hotfix/old/hotfitxFemirror.md
Executable file
59
docs/hotfix/old/hotfitxFemirror.md
Executable 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
122
docs/hotfix/old/hotfix.md
Executable 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
49
docs/hotfix/old/introduction.md
Executable 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
32
docs/hotfix/old/usage.md
Executable 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云更新`
|
Reference in New Issue
Block a user