继续上次写的内容,上回写了关于 Android lmlib sdk开发指南的基础消息管理,今天继续写下面的 关于基础会话管理的干货。
基础会话管理
获取会话
获取指定的某个会话
/** * 根据不同会话类型的目标 Id,回调方式获取某一会话信息。 * *@paramconversationType 会话类型。 *@paramtargetId 目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id。 *@paramcallback 获取会话信息的回调。 */publicvoidgetConversation(finalConversation.ConversationType conversationType,finalString targetId,finalResultCallback callback)
获取用户的所有本地会话列表
/** *
获取当前用户本地会话列表的默认方法,该方法返回的是以下类型的会话列表:私聊,群组,讨论组,系统会话。如果 * 您需要获取其它类型的会话列表,可以使用{@link #getConversationList(ResultCallback, Conversation.ConversationType...)} 方法。 * 注意:当更换设备或者清除缓存后,拉取到的是暂存在融云服务器中该账号当天收发过消息的会话列表。 * *@paramcallback 获取会话列表的回调。 */publicvoidgetConversationList(finalResultCallback> callback)
获取某几种会话类型的会话列表
/** *
根据会话类型,获取当前用户的本地会话列表。即显示所有本地数据库中收发过消息,并且未被删除的会话。 *
注意:当更换设备或者清除缓存后,能拉取到暂存在融云服务器中该账号当天收发过消息的会话。 * *@paramcallback 获取会话列表的回调。 *@paramconversationTypes 选择要获取的会话类型。 */publicvoidgetConversationList(finalResultCallback> callback,finalConversation.ConversationType... conversationTypes)
分页拉取本地会话列表
/** *
分页获取会话列表 *
注意:当更换设备或者清除缓存后,能拉取到暂存在融云服务器中该账号当天收发过消息的会话。 * * *@paramcallback 获取会话列表的回调 *@paramtimeStamp 时间戳,获取从此时间戳往前的会话,第一次传 0 *@paramcount 取回的会话个数。当实际取回的会话个数小于 count 值时,表明已取完数据 *@paramconversationTypes 选择要获取的会话类型 */publicvoidgetConversationListByPage(finalResultCallback> callback,finallongtimeStamp,finalintcount,finalConversation.ConversationType... conversationTypes)
删除会话
/** *
从会话列表中移除某一会话,但是不删除会话内的消息。 *
如果此会话中有新的消息,该会话将重新在会话列表中显示,并显示最近的历史消息。 * *@paramconversationType 会话类型。 *@paramtargetId 目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id。 *@paramcallback 移除会话是否成功的回调。 */publicvoidremoveConversation(finalConversation.ConversationType conversationType,finalString targetId,finalResultCallback callback)
会话提醒
通过融云 SDK,您可以设置会话的提醒状态来实现免打扰功能。按照免打扰作用范围,分为两种类型:
设置单个会话的提醒状态。通过此方法,您可以屏蔽某个会话的通知提醒和推送。
设置所有会话的通知免打扰。可以设置某一个时间段免打扰,也可以设置全天免打扰。
一、设置单个会话提醒状态
a.会话提醒状态
会话状态可以分为以下两种:
enumConversationNotificationStatus { DO_NOT_DISTURB(0),// 会话免打扰状态NOTIFY(1);// 会话提醒状态}
当设置会话状态为 DO_NOT_DISTURB 时,客户端将不会收到消息推送。您也可以根据此状态,调整收到在线消息时的处理逻辑,如屏蔽后台通知和提示音等。
b.设置会话提醒状态:
/** * 设置会话消息提醒状态。 * *@paramconversationType 会话类型。 *@paramtargetId 目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id。 *@paramnotificationStatus 是否屏蔽。 *@paramcallback 设置状态的回调。 */publicvoidsetConversationNotificationStatus(finalConversation.ConversationType conversationType,finalString targetId,finalConversation.ConversationNotificationStatus notificationStatus,finalResultCallback callback)
c.获取会话提醒状态
/** * 获取会话消息提醒状态。 * *@paramconversationType 会话类型。 *@paramtargetId 目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id。 *@paramcallback 获取状态的回调。 */publicvoidgetConversationNotificationStatus(finalConversation.ConversationType conversationType,finalString targetId,finalResultCallback callback)
注意:会话提醒状态是保存在融云服务器的,建议您在第一次登录应用时,先通过此方法到服务器同步一下会话提醒状态。
二、设置所有会话的通知免打扰
通过此方法设置通知免打扰之后,在所设置的免打扰时间段内,如果应用处于离线状态(即和融云服务器处于断开连接的状态),将不会收到消息推送。
如果处于非离线状态,客户端是仍然可以收到消息的,此时的消息是否提醒逻辑由您自己实现。
a.设置通知免打扰时间段
/** * 设置消息通知免打扰时间。 * *@paramstartTime 起始时间 格式 HH:MM:SS。 *@paramspanMinutes 设置的免打扰结束时间距离起始时间的间隔分钟数。 0 < spanMinutes < 1440。 * 比如,您设置的起始时间是 00:00, 结束时间为 23:59,则 spanMinutes 为 23 * 60 + 59 = 1339 分钟。 *@paramcallback 消息通知免打扰时间回调。 */publicvoidsetNotificationQuietHours(finalString startTime,finalintspanMinutes,finalOperationCallback callback)
注:spanMinutes 是指您设置的免打扰结束时间距离起始时间的间隔。比如,您设置的起始时间是 00:00, 结束时间为 23:59,则 spanMinutes 为 23 * 60 + 59 = 1339 分钟。
b.取消通知免打扰
/** * 移除消息通知免打扰时间。 * *@paramcallback 移除消息通知免打扰时间回调。 */publicvoidremoveNotificationQuietHours(finalOperationCallback callback)
会话置顶
可以通过下面的方法设置某一会话为置顶,或者取消置顶。
/** * 设置某一会话为置顶或者取消置顶,回调方式获取设置是否成功。 * *@paramconversationType 会话类型。 *@paramid 目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id。 *@paramisTop 是否置顶。 *@paramcallback 设置置顶或取消置顶是否成功的回调。 */publicvoidsetConversationToTop(finalConversation.ConversationType conversationType,finalString id,finalbooleanisTop,finalResultCallback callback)
获取会话未读消息数
获取所有会话的未读消息数(不包含聊天室,因为聊天室消息不计数)
/** * 通过回调方式,获取所有未读消息数。即除了聊天室之外其它所有会话类型的未读消息数。 * *@paramcallback 消息数的回调。 */publicvoidgetTotalUnreadCount(finalResultCallback callback)
获取指定的某几个会话的未读消息数
/** * 通过回调方式,获取所有指定会话的未读消息数(聊天室除外)。 * *@paramcallback 获取未读数的回调。 *@paramconversations 需要获取未读数的指定会话。 */publicvoidgetTotalUnreadCount(finalResultCallback callback,finalConversation... conversations)
获取指定的某一条会话的未读消息数
/** * 根据会话类型的目标 Id,回调方式获取来自某用户(某会话)的未读消息数。 * *@paramconversationType 会话类型。 *@paramtargetId 目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id。 *@paramcallback 未读消息数的回调。 */publicvoidgetUnreadCount(finalConversation.ConversationType conversationType,finalString targetId,finalResultCallback callback)
获取某一种或某几种会话类型的未读消息数
/** * 回调方式获取某会话类型的未读消息数。 * *@paramcallback 未读消息数的回调。 *@paramconversationTypes 会话类型。 */publicvoidgetUnreadCount(finalResultCallback callback,finalConversation.ConversationType... conversationTypes)