HarmonyOS 鸿蒙Next极光推送求助
HarmonyOS 鸿蒙Next极光推送求助
极光显示推送成功,手机也能看到通知,想用pushService.receiveMessage接收消息,但是试了所有PushType都没有回调,想知道用pushService.receiveMessage接收推送是否有什么前置条件,我就是完全按照极光文档配的,pushService.getToken()也是正确的,看华为文档还有什么上报push token的步骤,但不知道怎么上报,而且极光文档并没有这一步,所以也不知道需不需要。想达到的效果是收到推送的消息然后应用内自己处理,请大佬帮忙分析一下问题
更多关于HarmonyOS 鸿蒙Next极光推送求助的实战教程也可以访问 https://www.itying.com/category-93-b0.html
看极光的文档:https://docs.jiguang.cn/jpush/client/HarmonyOS/hmos_guide
搜索pushService.receiveMessage
,代码前面都加了说明。
pushService.receiveMessage
可以接收到消息,
第一种场景,推送后台消息(BACKGROUND消息),对应push-type
为6,结合华为推送文档可以看到:
后台消息用于内容不频繁更新的场景,不会显示通知、播放铃声或改变应用角标。终端设备接收到后台消息后,如果应用进程在前台则将消息内容传给应用;如果应用进程不在前台则缓存消息,等待应用启动后再传给应用。
第二种场景,通知扩展消息,对应push-type
为2,结合华为推送文档可以看到:
通知拓展消息需要申请权限,权限申请之后,适用场景:
- 若应用进程不在前台,Push Kit会将消息内容传递给通知扩展进程,您可以在该进程中自行完成业务处理(例如:语音播报、消息内容解密等)后,返回自定义消息内容,Push Kit将弹出通知提醒。您需要在10秒内返回消息内容,否则Push Kit将默认展示原有的消息内容。
- 若应用进程在前台,则不弹出通知提醒,您可以在应用进程中获取通知扩展消息内容并自行完成业务处理。
更多关于HarmonyOS 鸿蒙Next极光推送求助的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我用极光推送推自定义消息可以在pushService.receiveMessage
用’BACKGROUND’类型接收到,但此时我的应用是在前台,而我用极光推送推通知消息则用’BACKGROUND’,‘IM’,'DEFAULT’类型都接收不到,请问是什么原因,
请问通知拓展消息指的是发送通知的时候有附加字段吗
token应该是极光给你上报了。想要自己处理,就发自定义消息(透传消息)。在这个回调里接收处理。
/** *
- 自定义信息通知回调 - 透传
- 回调一:冷启动调用sdk初始化后回调之前还没有回调的信息
- 回调二:app存活时会直接回调信息
- 想要有自定义信息回调,还需查看集成指南的自定义信息集成配置方式
- @param jCustomMessage
- export class JCustomMessage {
- msgId?: string //通知id
- title?: string //通知标题
- content?: string //通知内容
- contentType?: string //通知内容类型
- extras?: Record<string, Object> //通知自定义键值对
- ttl?: number //后台下发的信息过期时间,单位秒
- stime?: number //后台下发时间,毫秒
- } */ onCustomMessage(jCustomMessage: JCustomMessage) {…}
我用极光推送推自定义消息可以在pushService.receiveMessage
用’BACKGROUND’类型接收到,但此时我的应用是在前台,而我用极光推送推通知消息则用’BACKGROUND’,‘IM’,'DEFAULT’类型都接收不到,请问是什么原因,
在 onCustomMessage(jCustomMessage: JCustomMessage)
{…} 这个回调中也收不到?
我问了华为的人,要设置foregroundShow
为false
才能在前台接收,用pushService.receiveMessage
的DEFAULT
类型可以接收。参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-send-alert#section99251359545
鸿蒙Next极光推送集成需使用官方提供的Push Kit SDK。开发步骤:
- 在AppGallery Connect配置推送服务;
- 工程引入最新版huawei-pushkit依赖;
- 实现Token监听接口获取设备标识;
- 调用PushClient.getToken获取token并上传至极光服务器;
- 处理透传消息需继承BasePushMessageReceiver类。
注意:鸿蒙Next推送通道与安卓不兼容,需单独对接鸿蒙Push Kit。消息推送成功率依赖设备网络状态及EMUI版本。
根据你的描述,问题可能出在Push Token上报环节。在HarmonyOS Next中,使用极光推送确实需要将设备Token上报给极光服务器才能正常接收回调。以下是关键点分析:
-
获取Token后必须主动上报极光服务器,这是HarmonyOS推送机制与Android的主要区别。极光文档可能未明确提及这点。
-
上报Token的典型代码示例:
import push from '@ohos.push';
// 获取系统PushManager
let pushManager = push.getPushManager();
// 获取Token后上报极光
pushManager.getToken().then(token => {
// 这里需要调用极光SDK的上报接口
JPushInterface.setAlias(context, sequence, alias);
// 或用setTags等其他标识方法
}).catch(err => {
console.error(`getToken failed, code is ${err.code}, message is ${err.message}`);
});
- 确保已正确配置推送权限:
- 在module.json5中声明ohos.permission.COMMUNICATION_MESSAGE权限
- 实现后台Service接收消息
- receiveMessage回调不触发时,建议检查:
- 是否使用了正确的PushType(建议先尝试NOTIFICATION)
- 应用是否在前台运行(部分版本需要前台才能触发)
- 极光控制台是否显示设备已注册成功
需要特别注意HarmonyOS的推送机制与Android不同,即使极光显示推送成功,如果本地未正确注册监听,也会导致回调不触发。建议先用极光官方Demo验证基础功能。