系统通知未读数
更新时间: 2024/03/14 16:36:31
内置系统通知未读数,指在云信系统中,用户接收到的内置系统通知未读总数。本文介绍如何获取内置系统通知未读数和标记已读并提供相应的示例代码。
技术原理
网易云信 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 |
设置某条通知为已读或未读 |