uni-app 小程序和app通信问题 app收不到消息 华为鸿蒙系统出现几率较大

uni-app 小程序和app通信问题 app收不到消息 华为鸿蒙系统出现几率较大

测试过的手机

手机型号
华为P40pro

操作步骤

  • 小程序和app通信有问题

预期结果

  • 小程序和app通信正常回调

实际结果

  • app没有收到请求,所以小程序不会执行回调

bug描述

小程序通过uni.sendNativeEvent请求客户端数据。偶现uniapp收不到回调,华为鸿蒙很容易复现。 现在线上一部分用户A/B test,通过埋点数据发现一部分用户收不到回调 在测试环境基本上不复现,线上很容易复现,但是不是100%复现 线上和测试环境是同一套代码,不同点就是线上包经过了加固。 经过逐步验证,推测app没有收到通信请求 请帮忙确认下加固是否影响小程序和app通信? 确认下是不是小程序和app通信机制有bug?

3 回复

首先 先确认 一下 demo 是否有这个问题。

更多关于uni-app 小程序和app通信问题 app收不到消息 华为鸿蒙系统出现几率较大的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


请问这个问题解决了吗?我也遇到同样的问题

在 uni-app 开发中,小程序和 App 之间的通信问题,尤其是在华为鸿蒙系统上出现 App 收不到消息的情况,可能涉及多个方面的原因。以下是一些可能的原因和解决方案:


1. 检查通信机制

uni-app 中,小程序和 App 之间的通信通常通过 uni.postMessageuni.onMessage 实现。确保以下代码逻辑正确:

  • 小程序端:使用 uni.postMessage 发送消息。
  • App 端:使用 uni.onMessage 监听消息。

示例代码:

// 小程序端发送消息
uni.postMessage({
    data: 'Hello from Mini Program'
});

// App端监听消息
uni.onMessage((message) => {
    console.log('Received message:', message);
});

2. 检查生命周期

确保 App 端的 uni.onMessage 监听器在正确的生命周期中注册。如果监听器注册太晚,可能会错过消息。

建议

  • onLaunchonShow 生命周期中注册监听器。

示例代码:

App({
    onLaunch() {
        uni.onMessage((message) => {
            console.log('Received message:', message);
        });
    }
});

3. 鸿蒙系统兼容性问题

华为鸿蒙系统可能存在一些兼容性问题,导致消息传递失败。可以尝试以下方法:

  • 更新 uni-app 版本:确保使用的是最新版本的 uni-app,以获得更好的兼容性。
  • 测试其他设备:在其他 Android 或 iOS 设备上测试,确认是否是鸿蒙系统特有的问题。
  • 查看官方文档:检查 uni-app 官方文档或社区,是否有关于鸿蒙系统的已知问题和解决方案。

4. 调试和日志

  • 小程序端:在发送消息后,打印日志确认消息是否成功发送。
  • App 端:在 uni.onMessage 中打印日志,确认是否接收到消息。
  • 使用真机调试:在华为鸿蒙设备上使用真机调试,查看控制台输出。

示例代码:

// 小程序端
uni.postMessage({
    data: 'Hello from Mini Program'
});
console.log('Message sent');

// App端
uni.onMessage((message) => {
    console.log('Received message:', message);
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!