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的两种传值方式都无法使用。
但要实现开始的需求,可能只能将值先传入服务端,完成数据交互了,如果后期项目交付,大概率会采用这种方案,我看到有人用了这种方案的,只是感觉很挫。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!