从API版本20开始,为了避免不同渠道发布的通知重复打扰用户(例如,手机协同到当前设备的通知与Push推送服务发布的通知重复),可以使用通知去重功能,清除跨设备场景下的重复通知。
应用发送通知时携带唯一标识字段appMessageId,分布式通知接收到多渠道发布的通知后,会根据该字段进行判断,从而实现通知去重。
设备只会展示第一条通知,后续收到的重复通知会被静默去重,不展示、不提醒。
图1 全场景通知去重流程图

| 接口名 | 描述 | 说明 |
|---|---|---|
| publish(request: NotificationRequest): Promise<void> | 发布通知。 | 使用方法见对象NotificationRequest中appMessageId字段说明。 |
导入模块。
import { notificationManager } from '@kit.NotificationKit';
import { BusinessError } from '@kit.BasicServicesKit'; 发布通知消息,通知消息中包含appMessageId字段。
// publish回调
let publishCallback = (err: BusinessError): void => {
if (err) {
console.error(`Failed to publish notification. Code is ${err.code}, message is ${err.message}`);
} else {
console.info(`Succeeded in publishing notification.`);
}
};
// 通知Request对象
let notificationRequest: notificationManager.NotificationRequest = {
id: 1,
content: {
notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
normal: {
title: 'test_title',
text: 'test_text',
additionalText: 'test_additionalText'
}
},
appMessageId: 'test_appMessageId_1'
};
notificationManager.publish(notificationRequest, publishCallback);