IM 即时通讯
Android
开发指南

系统通知未读数

更新时间: 2024/01/03 10:36:23

内置系统通知未读数,指在云信系统中,用户接收到的内置系统通知未读总数。本文介绍如何获取内置系统通知未读数和标记已读并提供相应的示例代码。

技术原理

网易云信 NIM SDK 提供内置系统通知未读数变更事件的监听接口。用户在处理系统通知后,SDK 会触发该事件,收到未读数变更信息。您可以调用SystemMessageObserver 接口的 observeUnreadCountChange 方法监听该事件。

内置系统通知对象 SystemMessage 中通过属性 unread 标志该条系统通知是否未读。

监听内置系统通知未读数

只有在注册监听内置系统通知未读数变化事件后,用户才会收到对应的系统通知。

通过调用 observeUnreadCountChange 方法监听内置系统通知未读数变化。

示例代码:

NIMClient.getService(SystemMessageObserver.class)
    .observeUnreadCountChange(sysMsgUnreadCountChangedObserver, register);

private Observer<Integer> sysMsgUnreadCountChangedObserver = new Observer<Integer>() {
        @Override
        public void onEvent(Integer unreadCount) {
            // 更新未读数变化
        }
    };

查询内置系统通知未读数

查询内置系统通知未读总数

通过调用 querySystemMessageUnreadCountBlock 方法查询内置系统通知未读总数。

该接口为同步接口,仅在本地数据库中进行查询。

示例代码:

int unread = NIMClient.getService(SystemMessageService.class).querySystemMessageUnreadCountBlock();

查询指定类型的内置系统通知未读数

通过调用 querySystemMessageUnreadCountByType 方法查询指定类型的内置系统通知未读数。

其中,入参 types 为待指定的系统通知类型集合,内置系统通知类型具体请参见SystemMessageType

该接口为同步接口,仅在本地数据库中进行查询。

示例代码:

List<SystemMessageType> types = new ArrayList<>();
types.add(SystemMessageType.AddFriend);

// 查询“添加好友”类型的系统通知未读数总和
int unread = NIMClient.getService(SystemMessageService.class)
	.querySystemMessageUnreadCountByType(types);

标记内置系统通知已读

标记所有内置系统通知为已读

通过调用 resetSystemMessageUnreadCount 方法将所有的内置系统通知标记为已读,即调用后内置系统通知未读数为零。

示例代码:

// 进入过系统通知列表后,可调用此函数将未读清零
NIMClient.getService(SystemMessageService.class).resetSystemMessageUnreadCount();

标记指定类型的内置系统通知为已读

通过调用 resetSystemMessageUnreadCountByType 方法将指定类型的内置系统通知标记为已读。

其中,入参 types 为待指定的系统通知类型集合,内置系统通知类型具体请参见SystemMessageType

示例代码:

List<SystemMessageType> types = new ArrayList<>();
types.add(SystemMessageType.AddFriend);

// 将“添加好友”类型的系统通知标记为已读
NIMClient.getService(SystemMessageService.class).resetSystemMessageUnreadCountByType(types);

标记单条内置系统通知为已读

通过调用 setSystemMessageRead 方法将指定的某条内置系统通知标记为已读。

示例代码:

NIMClient.getService(SystemMessageService.class).setSystemMessageRead(messageId);

您也可以调用 SystemMessage.setUnread 方法设置该条内置系统通知是否为已读。

API 参考

API
说明
observeUnreadCountChange 监听内置系统通知未读数变化
querySystemMessageUnreadCountBlock 查询内置系统通知未读总数(同步接口)
querySystemMessageUnreadCountByType 查询指定类型的内置系统通知未读数(同步接口)
resetSystemMessageUnreadCount 标记所有内置系统通知为已读(将内置系统通知清零)
resetSystemMessageUnreadCountByType 标记指定类型的内置系统通知为已读
setSystemMessageRead 标记单条内置系统通知为已读
SystemMessage.setUnread 设置某条内置系统通知是否为已读
SystemMessage.setUnread 设置某条通知为已读或未读
此文档是否对你有帮助?
有帮助
去反馈
  • 技术原理
  • 监听内置系统通知未读数
  • 查询内置系统通知未读数
  • 查询内置系统通知未读总数
  • 查询指定类型的内置系统通知未读数
  • 标记内置系统通知已读
  • 标记所有内置系统通知为已读
  • 标记指定类型的内置系统通知为已读
  • 标记单条内置系统通知为已读
  • API 参考