HarmonyOS 鸿蒙Next极光推送求助

HarmonyOS 鸿蒙Next极光推送求助

极光显示推送成功,手机也能看到通知,想用pushService.receiveMessage接收消息,但是试了所有PushType都没有回调,想知道用pushService.receiveMessage接收推送是否有什么前置条件,我就是完全按照极光文档配的,pushService.getToken()也是正确的,看华为文档还有什么上报push token的步骤,但不知道怎么上报,而且极光文档并没有这一步,所以也不知道需不需要。想达到的效果是收到推送的消息然后应用内自己处理,请大佬帮忙分析一下问题

cke_3896.png

cke_4151.jpeg


更多关于HarmonyOS 鸿蒙Next极光推送求助的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

看极光的文档: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) {…} 这个回调中也收不到?

我问了华为的人,要设置foregroundShowfalse才能在前台接收,用pushService.receiveMessageDEFAULT类型可以接收。参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-send-alert#section99251359545

鸿蒙Next极光推送集成需使用官方提供的Push Kit SDK。开发步骤:

  1. 在AppGallery Connect配置推送服务;
  2. 工程引入最新版huawei-pushkit依赖;
  3. 实现Token监听接口获取设备标识;
  4. 调用PushClient.getToken获取token并上传至极光服务器;
  5. 处理透传消息需继承BasePushMessageReceiver类。

注意:鸿蒙Next推送通道与安卓不兼容,需单独对接鸿蒙Push Kit。消息推送成功率依赖设备网络状态及EMUI版本。

根据你的描述,问题可能出在Push Token上报环节。在HarmonyOS Next中,使用极光推送确实需要将设备Token上报给极光服务器才能正常接收回调。以下是关键点分析:

  1. 获取Token后必须主动上报极光服务器,这是HarmonyOS推送机制与Android的主要区别。极光文档可能未明确提及这点。

  2. 上报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}`);
});
  1. 确保已正确配置推送权限:
  • 在module.json5中声明ohos.permission.COMMUNICATION_MESSAGE权限
  • 实现后台Service接收消息
  1. receiveMessage回调不触发时,建议检查:
  • 是否使用了正确的PushType(建议先尝试NOTIFICATION)
  • 应用是否在前台运行(部分版本需要前台才能触发)
  • 极光控制台是否显示设备已注册成功

需要特别注意HarmonyOS的推送机制与Android不同,即使极光显示推送成功,如果本地未正确注册监听,也会导致回调不触发。建议先用极光官方Demo验证基础功能。

回到顶部