本文主要是介绍harmony鸿蒙下实现bc交互的方式和方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
最近在研究harmony操作系统下的交互,因此写一篇文章记录一下。
解决的问题
本篇文章主要是来写解决如果兼容android或者ios的交互,这样子避免h5页面的二次开发,节省资源。
交互的种类
交互对于harmony来说其实只有一种,只有注册的形式,使用WebviewController的registerJavaScriptProxy来实现,如果是从头开始开发harmony 是没有任何问题的,直接使用这个来写就行。
但是如果你的项目中有大量的h5页面,使用了很多的交互,这时怎么能够兼容呢,我们想到了一些办法。
模拟android
我们在WebviewController的setCustomUserAgent方法中把安卓完整的ua和harmony的ua拼接在一起,这样子,前端h5的交互就以为是安卓的请求,就会根据android的形式来处理交互,ios同理。
代码如下:
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来实现,代码如下:
this.mWebviewController.loadUrl("javascript:" + webViewJSBean.callBack + "(" + tmpStr + ")")
总结
到此就结束了,这里主要的重点是
一、解决如何节省资源的情况下实现harmony的交互,
二、利用onPrompt实现交互,我们称为拦截
三、this.mWebviewController.loadUrl实现回调函数,这种在文档里是查不到的,在此记录,为后面的人铺路
这篇关于harmony鸿蒙下实现bc交互的方式和方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!