uniapp加载使用vue编写的页面并完成消息传递

之前使用vue编写了一个管养助手app,android和ios都已开发完成。

但其中有一个巡查的功能,需要应用持续保活,android使用后台启动service,已经实现保活,但是ios不行,ios一旦退至后台,直接停掉。

基于此,前端同事完成了调研微信小程序,微信小程序依赖于微信自己的生态,可以实现保活。

但这样就需要将之前的app代码转换成微信小程序的开发架构,为了降低成本使用的是uniapp,但vue代码转换成app还是有工作量的,到底还有没有更简单的方式呢?

同事通过调研发现了uniapp的webview,使用webview可以完整加载之前的代码,什么都不需要动。

但与实际场景结合(小程序实时获取位置完成巡查)时,出现了问题,利用网上webview消息传递postmessage始终通讯不了。

我于昨天接手,开始尝试解决通信问题。于今天将问题搞定。

出现问题的地方是要将uni.webview.1.5.3.js里的uni改名字,并触发特定场景才可以完成通讯。

具体参照帖子:https://blog.csdn.net/Charissa2017/article/details/119732886,uniapp webview官方文档:https://uniapp.dcloud.net.cn/component/web-view.html#

在这期间将小程序的调试运行环境也搭建完成了,但是整完发现依然无法满足功能需求。

首先官方文档里面提到的

 

 肯定是无法使用,因为这个特定时机肯定无法满足。另外window.postmessage(之前在另外一个系统里面使用过,具体的使用场景时新开的tab页里添加数据,添加完成了关闭页面,同时要刷新之前页面里的数据列表,这个场景使用了postmessage,满足了需求)也无法使用,因为uniapp端没有window,这个dcloud社区有回复,具体的帖子就不找了。

其次呢,使用nvue,因为这哥们是实时通讯的,满足要求。

 

 我一直在这个东西这里有疑惑,但仔细想想确实不行,有两点理由。

1、nvue是app端才可以使用的,因为这里的nvue前面加了app,猜测应该是app端才能用,而我们这里是微信小程序;

2、我们的两端实际上已经是确认了,一端是uniapp,另一端是vue,因此不可能把之前的vue改为nvue,所以webview的两种传值方式都无法使用。

但要实现开始的需求,可能只能将值先传入服务端,完成数据交互了,如果后期项目交付,大概率会采用这种方案,我看到有人用了这种方案的,只是感觉很挫。

 

posted @ 2022-10-09 19:41  买卖与杀害  阅读(800)  评论(0编辑  收藏  举报