跳到主要内容

消息推送

更新时间:2026-10-29 15:32:12

该功能依赖移动应用推送服务,需要在华为HarmonyOS开发者中心,应用的开放能力管理中开通推送服务,并配置应用的签名。

推送配置​

// 导入头文件
import { RTCXLogger, RTCXPushService, RTCXPushType } from 'rtcxsdk'
  • 申请消息推送权限
private requestNotificationPermission():void {
if (RTCXPushService.isNotificationEnabled()) {
RTCXLogger.i('EntryAbility', `notification already enabled, skip permission dialog`)
return
}
RTCXPushService.requestNotificationPermission().then((granted: boolean) => {
RTCXLogger.i('EntryAbility', `requestNotificationPermission result: ${granted}`)
// granted为true授权成功,granted为false未获取授权
}).catch((err: object) => {
RTCXLogger.e('EntryAbility', `requestNotificationPermission error: ${JSON.stringify(err)}`)
})
}

  • 获取PushToken
private getPushToken() {
// 主动获取一次 Token,成功后尝试上报,可以在登录成功后进行上报
RTCXPushService.getPushToken().then((token: string) => {
RTCXLogger.i('EntryAbility', `getPushToken success: ${token}`)
// 获取成功后,通过调用RTCXThirdPushApi.register上报token
}).catch((err: object) => {
RTCXLogger.e('EntryAbility', `getPushToken failed: ${JSON.stringify(err)}`)
})
}

  • 监听PushToken变化
const tokenListener: RTCXPushType.IRTCXPushTokenListener = {
onPushTokenUpdated: (token: string) => {
RTCXLogger.i('EntryAbility', `push token updated: ${token}`)
// Token 刷新后重新上报,保持服务端注册有效
// 通过调用RTCXThirdPushApi.register更新上报token
}
}
RTCXPushService.addPushTokenListener(tokenListener)
  • 监听通知点击

监听用户点击推送通知,可跳转对应业务页面

const clickListener: RTCXPushType.IRTCXPushNotificationClickListener = {
onNotificationClicked: (msg: RTCXPushType.RTCXPushMessage) => {
RTCXLogger.i('EntryAbility', `notification clicked: clickAction=${msg.clickAction}, data=${msg.data}`)
// TODO: 按 clickAction 跳转对应业务页面
}
}
RTCXPushService.addNotificationClickListener(clickListener)
  • 通知点击拉起

当用户点击推送,冷启动或热启动拉起应用时,进行分发点击消息,由IRTCXPushNotificationClickListener中onNotificationClicked进行跳转对应业务页面

onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
// ... 其他代码
// 冷启动由通知点击拉起时,分发点击消息
RTCXPushService.handleNotificationWant(want)
}
onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
// 热启动由通知点击拉起时,分发点击消息
RTCXPushService.handleNotificationWant(want)
}

系统消息​

APP接入手机厂商推送SDK,实现设备消息推送

import { RTCXThirdPushApi, RTCXAccountTypes } from 'rtcxsdk'
/**
* 注册token
* @param params [PushRegisterReq]
*/
declare function register(params: PushRegisterReq): Promise<void>
/**
* 反注册
*/
declare function unregister(): Promise<void>

export declare RTCXThirdPushApi{
export {
register,
unregister
}
}

/**
* 推送厂商枚举
* 1 - apple; 2 - huawei;3 - xiaomi;4 - oppo;5 - vivo;6 - honor;7 - google;8-鸿蒙 不能确认具体厂商,使用默认选项
* @public
*/
export enum PushVendorEnum {
UNKNOWN = 0,
APPLE = 1,
HUAWEI = 2,
XIAOM = 3,
OPPO = 4,
VIVO = 5,
HONOR = 6,
FCM = 7,
OHOS = 8,
}

注册​

注册各厂商平台推送SDK生成的token到AIRTC平台

import { RTCXThirdPushApi, RTCXAccountTypes } from 'rtcxsdk'

const token="手机厂商推送SDK生成的凭证"

const vendor: PushVendorEnum = PushVendorEnum.OHOS;
//时区
const timeZone="+08:00"

async function registerPush(){
const params : RTCXAccountTypes.PushRegisterReq = {
regId: token,
vendor: RTCXAccountTypes.PushVendorEnum.UNKNOWN,
timezone: getTimezoneFormatted(),
}
await RTCXThirdPushApi.register(params)
}

反注册​

将已注册到AIRTC平台的token反注册

用户退出登录时调用,请在RTCXAccount.logout()接口之前已完成本接口调用

async function(){
await RTCXThirdPushApi.unregister()
}