跳到主要内容
提示

鸿蒙的推送已经整合到鸿蒙系统中,在正确的获取到推送 token 前的所有步骤,需要开发者自行去鸿蒙平台操作,如有疑问向鸿蒙平台提工单咨询具体的原因。

鸿蒙管理后台配置推送

客户端配置推送,需要先确保已经 鸿蒙后台推送配置融云后台推送配置 已完成

也可以参考鸿蒙的推送服务文档

APP 申请通知权限

App 申请通知权限,可以在手机 设置>应用和服务>应用管理 中查看 APP 的通知权限。如果没有申请通知权限,收到的推送无法在通知栏出现。

详情请参考鸿蒙的请求通知授权文档。

APP 获取推送 token

APP 获取推送 token

// 在 EntryAbility.ets 中

onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
hilog.info(0x0000, 'IM-ArkTS', 'Get message data successfully: %{public}s', JSON.stringify(want.parameters));
hilog.info(0x0000, 'IM-ArkTS', '%{public}s', 'Ability onCreate');

pushService.getToken((error: BusinessError, token: string) => {
hilog.info(0x0000, 'IM-ArkTS', 'getPushToken error:%{public}s token:%{public}s', error, token);
if (token) {
IMEngine.getInstance().setPushToken(token);
} else {
// 获取推送 token 错误,根据 code 值请向鸿蒙提工单咨询具体原因
let code = error.code;
}
});
}

参考鸿蒙官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-get-token-V5

如果获取推送 token 失败,请参考鸿蒙错误文档,查找具体的错误原因

ArkTS API 错误排查:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-error-code-0000001727929904#section3835124673016

如果您不确定具体的错误,可以向鸿蒙提工单咨询具体的报错信息

IMSDK 设置推送 token

此步骤为 IMSDK 处理

在正常获取推送 token 后,把推送 token 设置给 IMSDK

// 见 IMEngine.ts

/**
* 设置鸿蒙推送 token
* @param pushToken 推送 token
* @note 需要在初始化之后调用。SDK 连接成功前设置,连接成功后 SDK 自动上传;连接成功后设置 SDK 立即上传
*/
public setPushToken(pushToken: string): void

点击推送唤起 APP

获取推送数据

参考鸿蒙文档: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-send-alert-V5#section1792616175914

// 鸿蒙推送示例内容
{
"_push_notifyid": 1590297100,
"component.startup.newRules": true,
"debugApp": false,
"isCallBySCB": false,
"moduleName": "entry",
"ohos.aafwk.param.callerAbilityName": "PushServiceInnerAbility",
"ohos.aafwk.param.callerBundleName": "com.huawei.hms.pushservice",
"ohos.aafwk.param.callerPid": 39626,
"ohos.aafwk.param.callerToken": 537231324,
"ohos.aafwk.param.callerUid": 20004,
"ohos.ability.launch.reason": 1,
"ohos.dlp.params.sandbox": false,
"rc": "{\"conversationType\":\"1\",\"targetId\":\"1234\",\"sourceType\":\"0\",\"fromUserId\":\"1234\",\"voip\":\"0\",\"objectName\":\"RC:TxtMsg\",\"msgTime\":\"1717732211751\",\"id\":\"CFU3-8NO9-O305-DBM8\",\"bId\":\"\",\"tId\":\"0987\"}",
"send_to_erms_targetAppDistType": "none",
"send_to_erms_targetAppProvisionType": "debug",
"send_to_erms_targetBundleType": 0
}

此处为融云华为推送从 want.parameters 中获取到的数据, rc 中的字段描述如下

  • conversationType : 会话类型
  • targetId : 会话 id
  • fromUserId : 发送方 id
  • objectName : 消息类型
  • msgTime : 消息发送时间
  • id : 消息 uid

管理通知角标

参考鸿蒙文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/notification-badge-V5