内置系统通知未读数
更新时间: 2024/03/14 18:45:33
内置系统通知未读数,指在云信系统中,用户接收到的内置系统通知未读总数。IM SDK 在用户查看系统通知后,会自动将该系统通知标记为已读。
若不需要 SDK 的自动标记已读功能,需要在初始化时,将 autoMarkRead
设置为 false。此时,所有的系统消息,普通消息都不会自动标记已读,需要用户手动调用标记已读接口来告知服务端,消息已接收。否则服务器会在初始化时通过离线消息通知,以及离线系统消息通知下发消息。
本文介绍如何获取内置系统通知未读数和手动标记已读并提供相应的示例代码。
技术原理
网易云信 NIM SDK 提供内置系统通知未读数变更事件的监听。用户在处理系统通知后,SDK 会触发该事件,收到未读数变更信息。系统通知未读数的相关 API ,具体请参见 SystemMessageInterface
。
系统通知对象 NIMSystemMessage
中通过属性 read
标志该条内置系统通知是否未读。
监听内置系统通知未读数
只有在注册监听内置系统通知未读数变化事件后,用户才会收到对应的系统通知。
在初始化时,您可以调用 getInstance
提前注册监听系统通知未读数相关事件。监听后,当产生触发事件后,会收到对应的系统通知。
初始化参数中涉及系统通知未读数事件监听的参数如下:
onsysmsgunread
: 收到系统通知未读数的回调- SDK 会管理内置系统通知的未读数,此回调接收的对象包括以下字段
friend
: 所有跟好友相关的系统通知的未读数addFriend
: 直接加为好友的未读数applyFriend
: 申请加为好友的未读数passFriendApply
: 通过好友申请的未读数rejectFriendApply
: 拒绝好友申请的未读数deleteFriend
: 删除好友的未读数team
: 所有跟群相关的系统通知的未读数teamInvite
: 入群邀请的未读数rejectTeamInvite
: 接受入群邀请的未读数applyTeam
: 入群申请的未读数rejectTeamApply
: 拒绝入群申请的未读数deleteMsg
: 撤回消息的未读数
- SDK 会管理内置系统通知的未读数,此回调接收的对象包括以下字段
onupdatesysmsgunread
: 更新系统通知未读数的回调
示例代码如下:
var nim = NIM.getInstance({
onsysmsgunread: onSysMsgUnread,
onupdatesysmsgunread: onUpdateSysMsgUnread,
});
function onSysMsgUnread(obj) {
console.log('收到系统通知未读数', obj);
data.sysMsgUnread = obj;
refreshSysMsgsUI();
}
function onUpdateSysMsgUnread(obj) {
console.log('系统通知未读数更新了', obj);
data.sysMsgUnread = obj;
refreshSysMsgsUI();
}
function refreshSysMsgsUI() {
// 刷新界面
}
标记内置系统通知为已读
通过调用 markSysMsgRead
方法将指定的某条内置系统通知标记为已读。
- SDK 在收到内置系统通知后会更新系统通知未读数,开发者可调用此接口来通知 SDK 将某条系统通知标记为已读状态。标记后会触发
onupdatesysmsgunread
回调。 sysMsgs
为通过onofflinesysmsgs
或者onsysmsg
接收到的系统通知或者系统通知数组。
示例代码:
nim.markSysMsgRead({
sysMsgs: someSysMsg,
done: markSysMsgReadDone
});
function markSysMsgReadDone(error, obj) {
console.log(error);
console.log(obj);
console.log('标记系统通知为已收到' + (!error?'成功':'失败'));
}
API 参考
API |
说明 |
---|---|
getInstance |
在初始化中监听内置系统通知未读数变化 |
markSysMsgRead |
标记内置系统通知为已读 |
此文档是否对你有帮助?