HarmonyOS 鸿蒙Next元服务中AtomicServicesWeb无法接收到onMessage消息
HarmonyOS 鸿蒙Next元服务中AtomicServicesWeb无法接收到onMessage消息 在元服务开发中,我使用AtomicServicesWeb,添加了onMessage,但是H5页面发送消息时,元服务一直没有收到消息。我们H5里面使用元服务JS SDK的has.location.getLocation.是可以获取到定位的,说明SDK是成功接入了的。所以是什么原因呢?
看到了,不过感觉这样的postMessage用途就很少了,只能用于页面返回数据处理,有点鸡肋。在元服务中,H5和原生数据交互有其他方法吗
更多关于HarmonyOS 鸿蒙Next元服务中AtomicServicesWeb无法接收到onMessage消息的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
H5页面通过JS SDK的postMessage()发送消息后,Web组件对应的页面返回或销毁时,触发该回调。
需要从web页面返回到原生页面
demo:
//首页:
import { router } from '@kit.ArkUI'
@Entry
@Component
struct Index {
build() {
Column(){
Text('hello')
}
.onClick(() =>{
router.pushUrl({
url: 'pages/Index'})
})
}
}
//web
import { AtomicServiceWeb, AtomicServiceWebController, OnMessageEvent } from '@kit.ArkUI';
@Entry
@Component
struct Index {
@State controller: AtomicServiceWebController = new AtomicServiceWebController();
build() {
Column() {
AtomicServiceWeb({
src: $rawfile("index.html"),
controller: this.controller,
// H5页面点击“发送消息”后,再点击“返回上一页”,触发该回调
onMessage: (event: OnMessageEvent) => {
console.log(`[AtomicServiceWebLog] onMessage data=${JSON.stringify(event.data)}`);
}
})
}
}
}
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<!-- 引入JS SDK文件 -->
<script src="../js/asweb-sdk.umd.js" type="text/javascript"></script>
<body>
<h1>JS SDK - postMessage()</h1>
<br>
<button type="button" onclick="postMessage({ name: 'Jerry', age: 18 });">发送消息</button>
<br>
<button type="button" onclick="back();">返回上一页</button>
</body>
<script type="text/javascript">
function postMessage(data) {
// JS SDK提供的发送消息接口
has.asWeb.postMessage({
data: data,
callback: (err, res) => {
if (err) {
console.error('[AtomicServiceWebLog H5] postMessage error err=' + JSON.stringify(err));
} else {
console.log('[AtomicServiceWebLog H5] postMessage success res=' + JSON.stringify(res));
}
}
});
}
function back() {
// JS SDK提供的Router路由回退接口
has.router.back({
delta: 1
});
}
</script>
</html>
//js
npm install @atomicservice/asweb-sdk
//找到asweb-sdk.umd.js ,放到rawfile/js目录下
感觉时抄小程序的,wx.minProgram.postMessage
,妈的,是一模一样,只有返回,分享,销毁时触发,现在有实时通讯的解决办法吗?
项目名称
- 状态:开发中
- 开始时间:2023-02-13
- 结束时间:2023-03-20
描述
这是项目的描述信息。
针对HarmonyOS鸿蒙Next元服务中AtomicServicesWeb无法接收到onMessage消息的问题,这通常涉及到服务间的通信机制或事件监听配置。以下是一些可能的原因及检查方向:
-
权限与配置:确保AtomicServicesWeb服务已正确配置接收消息的权限和必要的服务声明。检查manifest.json或相关配置文件中是否已正确声明服务及所需权限。
-
事件注册:验证AtomicServicesWeb服务是否已正确注册onMessage事件监听器。确保事件监听器已在服务启动时正确设置,且没有因代码错误或逻辑问题导致监听器未能正确绑定。
-
消息发送方:检查发送消息的组件或服务是否正确指向了AtomicServicesWeb服务的标识符,并使用了正确的消息格式和协议。
-
日志与调试:利用鸿蒙系统提供的日志工具,查看是否有关于消息发送或接收失败的日志记录。这有助于定位问题发生的具体环节。
-
服务状态:确认AtomicServicesWeb服务在运行过程中是否处于活跃状态,且没有因系统资源限制或其他服务干扰而导致服务异常终止。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,