多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
> 热更新方式是使用生成wgt升级包方式,无需用户手动点击升级,即可静默方式将应用升级到最新版 [TOC] ## 修改版本号 > 在manifest.json -> 基本配置 -> 将“应用版本名称”、“应用版本号”进行修改 ![](https://img.kancloud.cn/c4/b1/c4b19c0d1da3db389c2731f47c78f228_671x447.png) ## 生成wgt升级包 > 菜单 -> 发行 -> 原生App-制作移动App资源升级包 ![](https://img.kancloud.cn/9e/26/9e269e0573ae294788e2d751036d498e_644x323.png) ## 服务端版本更新检测接口 > 只是一个例子,具体逻辑自己实现 > 接口地址:http://www.example.com/update.php ~~~ <?php $version = $_GET['version']; if ($version == '1.0.0') { echo json_encode([ 'update' => 1, 'wgtUrl'=> 'http://www.example.com/1.0.2.wgt' ], true); }else{ echo json_encode([ 'update' => 0, 'wgtUrl'=> '' ], true); } ~~~ ## 客户端检测升级 > 在 App.vue 的 onLaunch 中检测升级,代码如下: ~~~ <script> export default { onLaunch: function() { console.log('App Launch') // #ifdef APP-PLUS plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) { uni.request({ url: 'http://www.example.com/update.php', data: { version: widgetInfo.version, name: widgetInfo.name }, success: (result) => { let data = result.data; if (data.update && data.wgtUrl) { uni.downloadFile({ url: data.wgtUrl, success: (downloadResult) => { console.log(downloadResult.statusCode) if (downloadResult.statusCode === 200) { console.log('您的版本过老('+widgetInfo.version+'),执行更新版本流程') plus.runtime.install(downloadResult.tempFilePath, { force: false }, function() { console.log('install success...'); plus.runtime.restart(); }, function(e) { console.error('install fail...'); }); } }, fail:(res) => { console.log(res) } }); } } }); }); // #endif }, onShow: function() { console.log('App Show') }, onHide: function() { console.log('App Hide') } } </script> ~~~ ## 不支持的情况 > * SDK 部分有调整,比如新增了 Maps 模块等,不可通过此方式升级,必须通过整包的方式升级。 > * 原生插件的增改,同样不能使用此方式。 > 对于老的非自定义组件编译模式,这种模式已经被淘汰下线。但以防万一也需要说明下,老的非自定义组件编译模式,如果之前工程没有 nvue 文件,但更新中新增了 nvue 文件,不能使用此方式。因为非自定义组件编译模式如果没有nvue文件是不会打包weex引擎进去的,原生引擎无法动态添加。自定义组件模式默认就含着weex引擎,不管工程下有没有nvue文件。 ## 关于热更新是否影响应用上架 > Apple曾经禁止过jspatch,但没有打击其他的热更新方案,包括cordovar、react native、DCloud。封杀jspatch其实是因为jspatch有严重安全漏洞,可以被黑客利用,造成三方黑客可篡改其他App的数据。 ## 热更新注意事项 > * 上架审核期间不要弹出热更新提示 > * 热更新内容使用https下载,避免被三方网络劫持 > * 不要更新违法内容、不要通过热更新破坏应用市场的利益,比如iOS的虚拟支付要老老实实给Apple分钱 > * 如果你的应用没有犯这些错误,应用市场是不会管的。 > 参考资料: > https://ask.dcloud.net.cn/article/35667 > https://ask.dcloud.net.cn/article/182 > https://www.jianshu.com/p/648dcd946aa4