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
看你的代码是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和推送插件版本支持鸿蒙系统。如果问题依旧存在,建议查阅官方文档或社区论坛,寻找是否有其他开发者遇到并解决了相同的问题。