@ 消息的实现方法

@ 消息是社交产品里最重要的功能之一,使用融云 SDK 也可以非常容易的实现此功能
发布时间: 2017-08-22 09:28

回答:

具体开发流程如下:

1、发送 @ 消息 

/*
@ 消息对象
全部: RongIMLib.MentionedType.ALL
部分: RongIMLib.MentionedType.PART
文档说明: http://support.rongcloud.cn/kb/NjE1
接收 @ 代码: https://rongcloud.github.io/websdk-demo/connect-check.html
*/
var mentioneds = new RongIMLib.MentionedInfo();
mentioneds.type = RongIMLib.MentionedType.PART;
mentioneds.userIdList = ['user1', 'user2']; // @ 用户列表

var isMentioned = true;

var content = {
    content: 'This is a at message',
    extra: 'extra info',
    mentionedInfo: mentioneds
};
var msg = new RongIMLib.TextMessage(content);

RongIMClient.getInstance().sendMessage(3, 'group1', msg, {
    onSuccess: function(message) {
        console.log('发送 @ 消息成功', message);
    },
    onError: function(error) {
        console.log('发送 @ 消息失败', error);
    }
}, isMentioned);

参考demo:https://rongcloud.github.io/websdk-demo/api-test.html 


2、接收新消息后, 更新会话列表, 通过会话列表中的会话得知是否 @ 了自己

// 收到消息后, 调用此方法
RongIMClient.getInstance().getConversationList({
    onSuccess: function(list) {
        // list 为会话列表
        if (list.length) {
            var conversation = list[0]; // 获取第一个会话
            var mentionedMsg = conversation.mentionedMsg; // 获取 @ 详情
        }
    }
});

   

3、接收新消息并通过 mentioneds 是否包含自己的 id 即可得知是否 @ 了自己

receiveNewMessage: function(message) {
    var mentionedInfo = message.content.mentionedInfo || {};
    var ids = mentionedInfo.userIdList || [];
    for(var i=0; i < ids.length; i++) {
        if( ids[i] == userId){
            alert("有人 @ 了你!");
        }
    }
    // 其他消息逻辑
}

参考demo:https://rongcloud.github.io/websdk-demo/connect-check.html 


提示:可以直接使用两个页面的默认数据进行测试,先完成两个页面的初始化链接,再进行收发测试。

我对此仍有疑问!继续追问