请选择 进入手机版 | 继续访问电脑版
查看: 358|回复: 0

关于未读数管理

[复制链接]

21

主题

54

帖子

188

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
188
发表于 2018-3-14 10:41:08 | 显示全部楼层 |阅读模式
[注意1] 根据需要来对未读数清零,例如当前正在聊天的会话,不需要显示未读数,必须清零。非当前会话,只有当用户希望主动对某个会话或者全部会话进行清零的时候,才调用接口进行操作。
[注意2] 从4.3.0版本开始,增加了批量清空所有会话未读数的接口,具体请见下文描述。
[注意3] 可以配置未读数多端同步,具体请点此查看
  • Windows (C)
    • 需要调用接口nim_session_set_unread_count_zero_async对最近联系人项未读数清零。如果是当前会话,每次收到消息都需要调用该接口。
    • 可以调用接口nim_msglog_batch_status_read_async来批量设置未读状态为已读消息状态。
  • Android
    • 调用接口NIMClient.getService(MsgService.class).setChattingAccount(java.lang.String account, SessionTypeEnum sessionType)设置当前会话,SDK会自动管理消息的未读数。
      • 该接口会自动调用clearUnreadCount(String, SessionTypeEnum)将正在聊天对象的未读数清零。如果有新消息到达,且消息来源是正在聊天的对象,将不会有消息提醒,其未读数也不会递增。
      • 如果收到不是当前聊天对象的新消息,SDK则会将消息来源的未读数自动累加,并通过开发者注册的观察者接口NIMClient.getService(MsgServiceObserve.class).observeRecentContact(Observer<java.util.List<RecentContact>> observer, boolean register)进行通知。
      • [注意1] 如果需要不进入聊天窗口就将未读数清零,可以调用接口NIMClient.getService(MsgService.class).clearUnreadCount(java.lang.String account, SessionTypeEnum sessionType)来实现。
        [注意2] 退出聊天界面或离开最近联系人列表界面,需要调用接口NIMClient.getService(MsgService.class).setChattingAccount(MsgService.MSG_CHATTING_ACCOUNT_NONE, SessionTypeEnum.None)来恢复更新未读数。
    • 调用接口NIMClient.getService(MsgService.class).clearAllUnreadCount()将所有联系人的未读数清零(标记为已读)。
      调用该接口后,会触发MsgServiceObserve.observeRecentContact(Observer, boolean)通知。
  • iOS
    • 调用接口[[NIMSDK sharedSDK].conversationManager markAllMessagesReadInSessionNIMSession *)session]来设置一个会话里所有消息为已读。如果是当前会话,每次收到消息都需要调用该接口。
    • 调用接口-markAllMessagesRead来设置所有会话消息为已读。
  • Web
    • 调用接口nim.setCurrSession('sessionId')设置当前会话,SDK会自动管理消息的未读数。
      如果是已经存在的会话记录,会将此会话未读数置为0,开发者会收到onupdatesession回调,之后此会话在收到消息后不会更新未读数。如果收到不是当前聊天对象的新消息,SDK会根据更新会话的回调onupdatesession计算未读。
    • 调用接口nim.resetCurrSession()来重置当前会话。重置当前会话后, 所有会话在收到消息之后会更新未读数。
    • 调用接口nim.resetAllSessionUnread()来重置内存中的所有会话未读数。之后会话收到消息依然会更新未读数。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表