php app 热更新,uni-app热更新实现

#### 数据表设计

id

url:热更新包/安装包

version:版本号

status:是否已上线

#### 后端

```

namespace App\Http\Controllers\Api\V1;

use Illuminate\Http\Request;

use App\Update;

class UpdateController extends Controller

{

//

public function update(Request $request)

{

$res = Update::where('status',1)->orderby('created_at','desc')->get();

if(!isset($res[0]->id)) return response()->json(['暂无版本更新']);

if($res[0]->version==$request->version)return response()->json(['暂无版本更新']);

return response()->json(['data'=>$res]);

}

}

```

#### 路由

```

//版本更新

Route::post('update','UpdateController@update');

```

### uni-app部分

1.新键util.js文件

写入更新方法

```

update(showToast = false){

// #ifdef APP-PLUS

plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {

$.post('update',{

varsion:widgetInfo.version,//当前版本号

}).then((res)=>{

console.log(res)

let result = res;

//错误处理

var data = result.data.data[0];

if(!data)return;

if(!data.url){

//无需更新

if(showToast){

uni.showToast({

title: '当前是最新版本'

});

}

}else{

uni.showModal({

title: '发现新的版本',

content: '最新版本'+data.version,

cancelText: '稍后更新',

confirmText: '立即更新',

success: res => {

if(res.confirm){

uni.downloadFile({

url: data.url,

success: (downloadResult) => {

if (downloadResult.statusCode === 200) {

plus.runtime.install(downloadResult.tempFilePath, {

force: false

}, function() {

console.log('install success...');

plus.runtime.restart();

}, function(e) {

console.error('install fail...');

});

}

}

});

}

},

fail: () => {},

complete: () => {}

});

}

})

});

// #endif

},

```

2.在main.js引入

```

//助手函数

import $U from './common/util.js'

Vue.prototype.$U = $U

```

3.在APP.vue调用

```

onLaunch: function() {

console.log('App Launch')

//监听网络

this.$U.onNetWork()

// //检查更新

this.$U.update()

this.User.__init()

},

```

当软件打包安装后,我们可以上传热更新包后软件包,热更新包不会重新安装应用,软件包需要重新安装应用,不过需要注意的是使用热更新包必须保证之前打包软件的Hbuilder版本必须与当前Hbuilder相同,如果不同就使用软件包

下面简单热更新包的使用

打开`manifest.json`配置应用版本号,之前要比之前高

![](http://)

![](http://www.zihanzy.com/uploads/images/article_con/202008/08/article_con_1596883005_yUVr8lTWwM.jpg)

打包热更新资源

![](http://)![](http://www.zihanzy.com/uploads/images/article_con/202008/08/article_con_1596883042_4NoXOK2m31.jpg)

![](http://)![](http://www.zihanzy.com/uploads/images/article_con/202008/08/article_con_1596883078_wzIP81DDHW.jpg)

将打包好的资源上传到线上服务器,并在数据库记录url,版本号

这样当用户下次打开软件时会提示用户更新并更新软件内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值