uni-app 鸿蒙手机不能接受到在线消息通知

发布于 1周前 作者 yibo5220 来自 uni-app

uni-app 鸿蒙手机不能接受到在线消息通知

操作步骤

const data = {  
    push_clientid: '99186bc7da4041e6dc7e6bce41c21957',  
    title: "测试55555555555",  
    content: "测试8111188",  
    force_notification: true,  
    category:{"harmony":"WORK","huawei":"WORK", "vivo":"TODO"}  
    //payload:payload  
};  
return await uniPush.sendMessage(data);

预期结果

收到消息

实际结果

返回值

{
  "data": {
    "RASS_0115_c913a34b8f55d2e35b1f9b3da78ab1a9": {
      "99186bc7da4041e6dc7e6bce41c21957": "successed_online"
    }
  },
  "errCode": 0,
  "errMsg": "success"
}

但是手机没收到通知

bug描述

unipush2.0 设备在线cid方式发送消息,手机收不到通知
通过后台页面手动发送可以正常接收到,通过uniPush.sendMessage api调用收不到消息通知
鸿蒙离线消息都能正常收到通知

const data = {  
    push_clientid: '99186bc7da4041e6dc7e6bce41c21957',  
    title: "测试55555555555",  
    content: "测试8111188",  
    force_notification: true,  
    category:{"harmony":"WORK","huawei":"WORK", "vivo":"TODO"}  
    //payload:payload  
};  
return await uniPush.sendMessage(data);
开发环境 版本号 项目创建方式
PC开发环境操作系统 Windows 11 专业版23H2 HBuilderX
HBuilderX类型 正式
HBuilderX版本号 4.45
手机系统 HarmonyOS NEXT Developer Preview
手机厂商 华为
手机机型 harmonyOS HUAWEIMATE 60
页面类型 vue
vue版本 vue3
打包方式 云端

更多关于uni-app 鸿蒙手机不能接受到在线消息通知的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

看你的代码是force_notification: true此时会创建通知栏消息,uni.onPushMessage不会立即收到消息,需要点击通知后才能监听到

更多关于uni-app 鸿蒙手机不能接受到在线消息通知的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在解决uni-app应用在鸿蒙手机上无法接收在线消息通知的问题时,首先需要确认几个关键点:消息推送服务的配置、鸿蒙系统的兼容性处理以及uni-app的插件使用情况。以下是一些可能帮助解决问题的代码案例和配置方法,注意这些代码需要根据具体的项目结构和业务需求进行调整。

1. 配置消息推送服务

确保已在uni-app项目中正确配置了消息推送服务,如使用DCloud的uniPush或其他第三方推送服务。以下是一个基本的uniPush配置示例:

// manifest.json
{
  "mp-weixin": { // 微信小程序等平台的配置略
    // ...
  },
  "app-plus": {
    "distribute": {
      "sdkConfigs": {
        "uniPush": {
          "appid": "your-uni-push-appid"
        }
      }
    }
  }
}

2. 鸿蒙系统兼容性处理

由于鸿蒙系统是基于Android开发的,但有其特定的API和行为,确保应用针对鸿蒙系统进行了必要的兼容性处理。以下是一个简单的权限请求示例,确保应用有权限接收通知:

// 在App.vue的onLaunch或合适的位置请求权限
plus.android.requestPermissions(
  ['android.permission.RECEIVE_BOOT_COMPLETED', 'android.permission.INTERNET'],
  function(event) {
    console.log('Permissions granted: ' + JSON.stringify(event));
  },
  function(e) {
    console.error('Failed to request permissions: ' + JSON.stringify(e));
  }
);

3. 使用uni-app推送插件

如果使用的是第三方推送插件,确保插件支持鸿蒙系统,并按照插件文档进行配置。以下是一个假设的推送插件使用示例:

// 引入推送插件
const pushPlugin = uni.requireNativePlugin('YourPushPluginName');

// 注册设备以接收推送
pushPlugin.registerDevice({
  success: function(res) {
    console.log('Device registered for push: ' + JSON.stringify(res));
  },
  fail: function(err) {
    console.error('Failed to register device for push: ' + JSON.stringify(err));
  }
});

// 监听推送消息
uni.onMessage(function(res) {
  if (res.type === 'push') {
    console.log('Received push message: ' + JSON.stringify(res.data));
    // 显示通知逻辑
  }
});

结论

确保所有配置正确无误,特别是消息推送服务的配置和鸿蒙系统的兼容性处理。同时,检查是否有最新的uni-app和推送插件版本支持鸿蒙系统。如果问题依旧存在,建议查阅官方文档或社区论坛,寻找是否有其他开发者遇到并解决了相同的问题。

回到顶部