harmony鸿蒙下实现bc交互的方式和方法

前言

最近在研究harmony操作系统下的交互,因此写一篇文章记录一下。

解决的问题

本篇文章主要是来写解决如果兼容android或者ios的交互,这样子避免h5页面的二次开发,节省资源。

交互的种类

交互对于harmony来说其实只有一种,只有注册的形式,使用WebviewController的registerJavaScriptProxy来实现,如果是从头开始开发harmony 是没有任何问题的,直接使用这个来写就行。

但是如果你的项目中有大量的h5页面,使用了很多的交互,这时怎么能够兼容呢,我们想到了一些办法。

模拟android

我们在WebviewController的setCustomUserAgent方法中把安卓完整的ua和harmony的ua拼接在一起,这样子,前端h5的交互就以为是安卓的请求,就会根据android的形式来处理交互,ios同理。

代码如下:

dart 复制代码
  this.webviewController.setCustomUserAgent("F-OFST moblie_android" + this.androidUa + this.webviewController.getUserAgent())
    this.webviewController.registerJavaScriptProxy(this.myUtilsRegisterBridge, "Myutils",
      ["return_btn", "returnBack", "returnLogin"]);
      

但是android还有一种实现bc交互的方法,就是利用浏览器的onPrompt机制,这种机制就是我们利用event的message和value,来制定前端给我们的格式,比如,key,callbakc(回调函数),params(参数),利用这些定义好的值,在客户端接收到后,进行解析,如果是正常的返回就用

result.handlePromptConfirm(json);或者result.handleConfirm();来实现,

如果是callback我们可以使用this.webviewController的runJavaScript来实现,或者使用this.webviewController的loadurl来实现,代码如下:

dart 复制代码
   this.mWebviewController.loadUrl("javascript:" + webViewJSBean.callBack + "(" + tmpStr + ")")
      

总结

到此就结束了,这里主要的重点是

一、解决如何节省资源的情况下实现harmony的交互,

二、利用onPrompt实现交互,我们称为拦截

三、this.mWebviewController.loadUrl实现回调函数,这种在文档里是查不到的,在此记录,为后面的人铺路

相关推荐
大师兄666819 小时前
鸿蒙 ArkTS 入门教程:小白实战 List 列表开发(详解 @State, ForEach, @Builder)
list·harmonyos·arkts·builder·foreach·state·鸿蒙入门
特立独行的猫a21 小时前
仓颉编程语言的并发编程:线程模型与使用实践
华为·线程·仓颉·仓颉语言
2501_919749031 天前
配置flutter鸿蒙的环境和创建并运行第一个flutter鸿蒙项目【精心制作】
flutter·华为·harmonyos
Fanmeang1 天前
华为交换机VLAN技术详解:从基础到高级应用
运维·网络·华为·vlan·交换机·mux vlan
Fanmeang1 天前
华为路由器核心技术详解:数据包的智能导航系统
运维·网络·华为·路由器·路由表·路由协议
阿部多瑞 ABU1 天前
Unicode全字符集加解密工具 - 命令行交互版:功能完整的终端解决方案
经验分享·交互·ai编程·1024程序员节
赵得C1 天前
智能体的范式革命:华为全栈技术链驱动下一代AI Agent
人工智能·华为·ai·ai编程
Fanmeang1 天前
华为防火墙基础功能详解:构建网络安全的基石
运维·网络·安全·华为·防火墙·策略·安全域
爱笑的眼睛111 天前
深入解析ArkTS类型系统:构建安全高效的HarmonyOS应用
华为·harmonyos
Android疑难杂症1 天前
鸿蒙Media Kit媒体服务开发快速指南
android·harmonyos·音视频开发