说明
本方案涉及使用
更新组件: https://ext.dcloud.net.cn/plugin?id=5141
发布/管理平台: AppStore
开发环境:hubilderx+Vue3
更新方案
首先下载组件到hubilderx中,在首页(非app.vue)中引入
import WrapVersionUpdate from '@/uni_modules/wrap-version-update/components/wrap-version-update/wrap-version-update.nvue';
接着在template中添加
<wrap-version-update id="540613223891013" @check="handleCheck"></wrap-version-update>
需要注意,以上标签中的id需要去“发布/管理平台”去获取【免费】,对于事件handleCheck,是为了配合我们隐藏底部菜单栏设计的,需要指出的是,根据以上配置该组件会自动检测当前软件是否需要更新,而该事件代码如下:
//更新就隐藏底部菜单栏
function handleCheck(e){
if(e.needUpdate){
uni.hideTabBar();
}
}
如果不使用以上内容,那么即便更新组件提示更新,用户依然可以通过点击底部菜单栏来进行页面切换,从而跳出更新的
接着我们需要去发布平台去获取id值了,来到发布平台,点击“新增应用”,填写完你app的logo地址以及app名称后,就可以生成一个隶属于该app的id值了,复制该值覆盖标签上的id内容,就完成了初步的更新联动
项目打包及发布
首先去uniCloud控制台 注册一个账户,获取一个免费的空间,这里不进行过多的描述了,并不难【注意,如果是进行打本地包的话,似乎可以先不去注册】
我们在hbuilderx中点击“发行”->“原生app-云打包”后【本地打包也在“发行”中】,记得自定义android包名【xxx.xxx.xxx】,接着我们点击使用“云端证书”,“打正式包”,“传统打包”,就可以等待打包结束了,我们可以在打包后的结果中找到
这时,我们点击“一键上传到uniCloud”【如果使用该链接只能下载5次】,选择我们刚才注册开辟的服务器空间,就会把该包上传到服务器空间中,完成后会返回上传后的地址【可以直接用】接着我们可以在unicloud中的“云存储”->“空间内置存储”->“文件夹模式”切换“文件列表模式”就可以看到我们刚刚上传的包,我们点击详情可以看到该文件的地址信息,我们复制该地址,来到发布平台
我们在发布平台中点击目标应用的“版本管理”->“新增版本”
1.版本,务必和项目manifest.json中设置的版本一致【后续检测是否更新取决于该值】,每一次进行项目更新都要记得更改manifest.json中的版本值【每次比上次的大就可以了】
2.更新说明就随便写写
3.Hbuilderx是否更新【没点过,你可以试试,似乎跟虚拟机上应用的状态有关】
4.是否强制性更新【如果你希望强制性更新那就点】
5.对于apk以及wgt【热更新】地址我们可以填一样的内容,如果你有热更新【更新新增内容而不需要重下整个应用】方面的需求,则在打包方式上还需要进行更改【也在“发行”中】
6.最后点击“确定”并退出该应用的管理界面,然后点击应用名称右边的“分享”图标,我们就会来到一个可供我们下载的界面了,到此就结束了
关于自定义更新管理平台
可能会有些人会有想把更新管理掌握在自己手里,那么我们可以参照以上流程及逻辑思路,来设计自己的软件更新管理平台,在这里我只描述我个人对此的思路,希望能够带来一些帮助。
我们可以在项目中新建一个文件“config”文件,在这个文件中,我们定义当前的版本信息,然后设计在首页调用后端接口检测当前版本信息是否与新版本一致,否则就拉取我们存放在自己服务器上的新版本地址,这牵扯到我们需要自己去设计一个简单的后端【毕竟确实没有啥功能】以及数据库【也许不用,或许我们可以在后端调用服务器上的对应文件信息来判断是否更新】,这样每次我们进行打包后就可以将包文件上传到我们对应的服务器上【或许需要手动改下名称】,这样节省了上传uniCloud以及本文章提到的发布/管理平台了
或许还有其他更好的方法也说不定哈