Closed onerain88 closed 6 years ago
OfflineMessageStrategy 和 AutoRead 是否有重合
用户的代码如下:
var realtime = new AVRealtime()
{
var realtimeConfig = new AVRealtime.Configuration()
{
ApplicationId = appId,
ApplicationKey = appkey,
OfflineMessageStrategy = AVRealtime.OfflineMessageStrategy.UnreadAck,
};
realtime = new AVRealtime(realtimeConfig);
};
在登录之后,不用做任何操作。
确保本次在线的时候,AutoRead 为 Ture 那么在下次登录的时候,可以通过查阅 conversation.Unread 来读取离线消息(此时未读就是等于离线消息)
client.GetConversationAsync("convId").ContinuteWith(t =>
{
var latestUnreadMessage = conversation.Unread.LastMessage;
var unreadCount = conversation.Unread.Count;
return conversation.QueryMessage(limit:unreadCount ,beforeMid:latestUnreadMessage.Id);
}).Unwrap().Continute(s =>
{
// 这里一定是离线消息
var offlineMessages = s.Result;
});
登录之后,确保本次在线的时候将 AutoRead 设置为 False
参照上述 2 可以获取离线期间产生的未读消息(也是离线消息)。 然后在接收到消息之后,手动调用:
conversation.ReadAsync()
并且可以通过 conversation.Unread 读取所有的未读消息,它将包含三部分:
以上三种消息,SDK 内部做了合并。
默认为 true 时,收到消息的 UnreadState.Count 并未自动归 0,重新登录后也未归 0