iOS

查询@我的消息

更新时间: 2024/05/07 15:35:23

SDK 支持查询指定频道中@当前用户的未读消息,同时也支持批量查询消息是否@当前用户。

其中@当前用户的未读消息包括以下三种:

  • 未读消息设置的@账号列表中包含当前用户。
  • 未读消息设置的需要@的身份组(不包括 everyone 身份组)中包含当前用户。
  • 未读消息设置的需要@所有人。

查询结果中不包括自己发送的消息。

查询指定频道中@当前用户的未读消息

通过调用 getMentionedMeMessages 方法查询指定频道中@当前用户的未读消息列表。

timetag 为查询起始时间,不传则表示当前时间,查询 ackTime(用户查看过的最后一条信息的时间)到 timetag 时间范围内@当前用户的未读消息。查询顺序默认为倒序查询。

limit 指查询的消息数量上限,默认值和最大值都为 200。当 limit 传入 0,则使用默认值 200。

如果查询时间范围之间消息大于 limit 条,返回 limit 条记录;如果小于 limit 条,返回实际条数;当返回的查询结果中 hasMore == NO,查询结果列表的 size 可能会比 limit 小。

示例代码:

var param = NIMQChatGetMentionedMeMessagesParam()
param.serverId = 10086
param.channelId = 10010
NIMSDK.shared().qchatMessageManager.getMentionedMeMessages(param) { error, result in
    Logger.log("qchat search mentioned message error: \(String(describing: error)) \nresult:\(String(describing: result)) ")
};

批量查询消息是否@当前用户

通过调用 areMentionedMeMessages 方法批量查询消息是否@当前用户。

传入的待查询的消息必须为同一服务器下的消息,否则将返回 NIMLocalErrorCodeInvalidParam(1)错误码。

传入的 messages 最多 100 条,即调用该接口一次最多查询 100 条消息。

示例代码:

var param = NIMQChatGetMessageHistoryParam()
/**
    fill NIMQChatGetMessageHistoryParam
*/
NIMSDK.shared().qchatMessageManager.getMessageHistory(param) { [self] error, result in
    if(result?.messages == nil){
        Logger.log("没有查到消息\n ")
        return
    }
    var param = NIMQChatAreMentionedMeMessagesParam()
    var msgarr = result!.messages
    var sid:UInt64 = 0;
    for (_index,_) in msgarr!.enumerated() {
        if(sid == 0){
            sid = msgarr![_index].session?.qchatServerId ?? 0;
            param.messages.append(msgarr![_index])
        }
        else {
            if(sid == msgarr![_index].session?.qchatServerId){
                param.messages.append(msgarr![_index])
            }
        }
    }
    NIMSDK.shared().qchatMessageManager.areMentionedMeMessages(param){ error, result in
        Logger.log("qchat are messages mentioned me error: \(String(describing: error)) \nresult:\(String(describing: result?.result)) ")
    };
}
此文档是否对你有帮助?
有帮助
去反馈
  • 查询指定频道中@当前用户的未读消息
  • 批量查询消息是否@当前用户