HarmonyOS 鸿蒙Next DSbridge 适配问题
HarmonyOS 鸿蒙Next DSbridge 适配问题 由于我们app里面很多模块是用h5写的,h5写的基于DSBridge,
但是鸿蒙版本的DSBridge js回调给h5不能直接传递给对象,直接转成string,这和比如ios DSBridge改变很大,这如果h5改的话,太多地方要改了
@JavaScriptInterface()
getSafeArea(data: string, handler: CompleteHandler) {
let safeAreaMap: Record<string, number> = {
"top": 0,
"left": 0,
"right": 0,
"bottom": 0
}
handler.complete(JSON.stringify(safeAreaMap))
}
请问有什么办法吗?
更多关于HarmonyOS 鸿蒙Next DSbridge 适配问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
可以直接传对象的,给你个Demo吧
import { CompleteHandler, JavaScriptInterface, WebViewControllerProxy } from '@hzw/ohos-dsbridge'
@Entry
@Component
struct webView {
private controller: WebViewControllerProxy = WebViewControllerProxy.createController()
aboutToAppear() {
this.controller.addJavascriptObject(new JsBridge())
}
build() {
Column () {
Text('DsBridge 测试')
Web({ src: $rawfile('index.html'), controller: this.controller.getWebViewController() })
.javaScriptAccess(true)
.javascriptProxy(this.controller.getJavaScriptProxy())
}
.height('100%')
.width('100%')
}
}
export class JsBridge {
@JavaScriptInterface()
testAsync(p: string, handler: CompleteHandler) {
let safeAreaMap: Record<string, number> = {
"top": 0,
"left": 0,
"right": 0,
"bottom": 0
}
handler.complete(safeAreaMap)
}
}
<!-- index.html -->
<!DOCTYPE html>
<html>
<body id="box">
<p>Hello World</p>
</body>
<script src="./dsbridge.js"></script>
<script>
dsBridge.call('testAsync', JSON.stringify({data: 200}), (msg) => {
document.body.innerHTML = JSON.stringify(msg)
updateMsg(msg)
})
</script>
</html>
更多关于HarmonyOS 鸿蒙Next DSbridge 适配问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
可以传吧
js和android/ios交互都是string,你说的直接传对象是什么?
针对HarmonyOS(鸿蒙)Next DSbridge的适配问题,以下是一些直接相关的回答:
在鸿蒙系统上适配Next DSbridge时,主要关注的是鸿蒙系统特有的API和运行时环境与DSbridge的兼容性。DSbridge作为一个用于在WebView与JavaScript之间建立双向通信的桥梁,其核心功能在不同操作系统上可能需要做出一定的调整。
首先,确保DSbridge的版本是最新的,因为新版本可能已经修复了一些与鸿蒙系统不兼容的问题。如果当前版本存在适配问题,可以考虑查看DSbridge的官方文档或源代码,了解是否有针对鸿蒙系统的特殊适配说明或补丁。
其次,鸿蒙系统可能提供了一些特定的WebView组件或API,这些组件或API可能与Android或iOS上的标准WebView有所不同。因此,在鸿蒙系统上实现DSbridge的功能时,可能需要调用这些特定的API。
最后,如果以上方法都无法解决适配问题,可能是DSbridge本身与鸿蒙系统存在根本性的不兼容。此时,可以考虑寻找鸿蒙系统上的替代方案,或者联系DSbridge的开发者社区寻求帮助。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,