Web SDK API 示例

简介

融云 Web SDK API 用法及常见异常总结,为了方便刚接触融云 Web SDK 开发者朋友们写下此文档,希望可以帮到你们。

说明:

1、函数参数中使用 [] 为可选参数(数组除外)。

2、**** => **** 在本文档中表示为示例代码和结果,例:1+2 => 3

初始化

初始化 SDK

执行初始化需要在开发者后台新建应用得到 AppKeytoken,初始化代码:

RongIMLib.RongIMClient.init(appkey,[dataAccessProvider],[options])

AppKey:应用的唯一标识。

Token :用户的唯一标识。

1、使用内存缓存方式初始化:

// 此种方式应用比较广泛,非特殊情况使用此种方式即可。
RongIMLib.RongIMClient.init("appkey");

2、使用本地存储方式初始化:

// 此种方式采用本地存储 (WebSQL) 进行初始化,会优先从本地存储中获取历史消息和会话列表。
// 但由于 WebSQL 的自身兼容情况,部分浏览器无法支持,请自行选择(推荐 WebSDK 做 PC 程序使用)。
RongIMLib.RongIMClient.init("appkey",new RongIMLib.WebSQLDataProvider());

设置监听

1、必须设置监听器后,再连接融云服务器,示例代码如下:

// 设置连接监听状态 ( status 标识当前连接状态 )
 // 连接状态监听器
 RongIMClient.setConnectionStatusListener({
    onChanged: function (status) {
        switch (status) {
            case RongIMLib.ConnectionStatus.CONNECTED:
                console.log('链接成功');
                break;
            case RongIMLib.ConnectionStatus.CONNECTING:
                console.log('正在链接');
                break;
            case RongIMLib.ConnectionStatus.DISCONNECTED:
                console.log('断开连接');
                break;
            case RongIMLib.ConnectionStatus.KICKED_OFFLINE_BY_OTHER_CLIENT:
                console.log('其他设备登录');
                break;
              case RongIMLib.ConnectionStatus.DOMAIN_INCORRECT:
                console.log('域名不正确');
                break;
            case RongIMLib.ConnectionStatus.NETWORK_UNAVAILABLE:
              console.log('网络不可用');
              break;
            }
    }});

 // 消息监听器
 RongIMClient.setOnReceiveMessageListener({
    // 接收到的消息
    onReceived: function (message) {
        // 判断消息类型
        switch(message.messageType){
            case RongIMClient.MessageType.TextMessage:
                // message.content.content => 消息内容
                break;
            case RongIMClient.MessageType.VoiceMessage:
                // 对声音进行预加载                
                // message.content.content 格式为 AMR 格式的 base64 码
                break;
            case RongIMClient.MessageType.ImageMessage:
               // message.content.content => 图片缩略图 base64。
               // message.content.imageUri => 原图 URL。
               break;
            case RongIMClient.MessageType.DiscussionNotificationMessage:
               // message.content.extension => 讨论组中的人员。
               break;
            case RongIMClient.MessageType.LocationMessage:
               // message.content.latiude => 纬度。
               // message.content.longitude => 经度。
               // message.content.content => 位置图片 base64。
               break;
            case RongIMClient.MessageType.RichContentMessage:
               // message.content.content => 文本消息内容。
               // message.content.imageUri => 图片 base64。
               // message.content.url => 原图 URL。
               break;
            case RongIMClient.MessageType.InformationNotificationMessage:
                // do something...
               break;
            case RongIMClient.MessageType.ContactNotificationMessage:
                // do something...
               break;
            case RongIMClient.MessageType.ProfileNotificationMessage:
                // do something...
               break;
            case RongIMClient.MessageType.CommandNotificationMessage:
                // do something...
               break;
            case RongIMClient.MessageType.CommandMessage:
                // do something...
               break;
            case RongIMClient.MessageType.UnknownMessage:
                // do something...
               break;
            default:
                // do something...
        }
    }
});

连接服务器

连接融云必须在执行 RongIMLib.RongIMClient.init(appkey); 之后,并且所有除监听以外的方法都必须在 connect成功之后 再调用。

  var token = "mKmyKqTSf7aNDinwAFMnz7NXKILeV3X0+CCRBOxmtOApmvQjMathViWrePIfq0GuTu9jELQqsckv4AhfjCAKgQ==";

  RongIMClient.connect(token, {
        onSuccess: function(userId) {
          console.log("Login successfully." + userId);
        },
        onTokenIncorrect: function() {
          console.log('token无效');
        },
        onError:function(errorCode){
              var info = '';
              switch (errorCode) {
                case RongIMLib.ErrorCode.TIMEOUT:
                  info = '超时';
                  break;
                case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                  info = '未知错误';
                  break;
                case RongIMLib.ErrorCode.UNACCEPTABLE_PaROTOCOL_VERSION:
                  info = '不可接受的协议版本';
                  break;
                case RongIMLib.ErrorCode.IDENTIFIER_REJECTED:
                  info = 'appkey不正确';
                  break;
                case RongIMLib.ErrorCode.SERVER_UNAVAILABLE:
                  info = '服务器不可用';
                  break;
              }
              console.log(errorCode);
            }
      });

消息接口

发送消息

1、文本消息

 var msg = new RongIMLib.TextMessage({content:"hello RongCloud!",extra:"附加信息"});
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 私聊,其他会话选择相应的消息类型即可。
 var targetId = "xxx"; // 目标 Id
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
                onSuccess: function (message) {
                    //message 为发送的消息对象并且包含服务器返回的消息唯一Id和发送消息时间戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超时';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知错误';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名单中,无法向对方发送消息';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                            info = '不在讨论组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_GROUP:
                            info = '不在群组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                            info = '不在聊天室中';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('发送失败:' + info);
                }
            }
        );

2、图片消息

 var base64Str = "base64 格式缩略图";// 图片转为可以使用 HTML5 的 FileReader 或者 canvas 也可以上传到后台进行转换。
 var imageUri = "图片 URL"; // 上传到自己服务器的 URL。
 var msg = new RongIMLib.ImageMessage({content:base64Str,imageUri:imageUri});
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 私聊,其他会话选择相应的消息类型即可。
 var targetId = "xxx"; // 目标 Id
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
                onSuccess: function (message) {
                    //message 为发送的消息对象并且包含服务器返回的消息唯一Id和发送消息时间戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超时';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知错误';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名单中,无法向对方发送消息';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                            info = '不在讨论组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_GROUP:
                            info = '不在群组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                            info = '不在聊天室中';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('发送失败:' + info);
                }
            }
        );

3、富文本消息

 var base64Str = "base64 格式缩略图";// 图片转为可以使用 HTML5 的 FileReader 或者 canvas 也可以上传到后台进行转换。
 var imageUri = "图片 URL"; // 上传到自己服务器的 URL。
 var title = "富文本消息标题";
 var msg = new RongIMLib.RichContentMessage({title:title,content:base64Str,imageUri:imageUri});
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 私聊,其他会话选择相应的消息类型即可。
 var targetId = "xxx"; // 目标 Id
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
                onSuccess: function (message) {
                    //message 为发送的消息对象并且包含服务器返回的消息唯一Id和发送消息时间戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超时';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知错误';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名单中,无法向对方发送消息';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                            info = '不在讨论组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_GROUP:
                            info = '不在群组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                            info = '不在聊天室中';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('发送失败:' + info);
                }
            }
        );

4、位置消息

 var latitude = "纬度";
 var longitude = "经度";
 var poi = "位置描述";
 var content = "位置缩略图";
 var msg = new RongIMLib.LocationMessage({latitude: longitude, longitude: longitude, poi: poi, content: content});
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 私聊,其他会话选择相应的消息类型即可。
 var targetId = "xxx"; // 目标 Id
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
                onSuccess: function (message) {
                    //message 为发送的消息对象并且包含服务器返回的消息唯一Id和发送消息时间戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超时';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知错误';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名单中,无法向对方发送消息';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                            info = '不在讨论组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_GROUP:
                            info = '不在群组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                            info = '不在聊天室中';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('发送失败:' + info);
                }
            }
        );

5、命令消息

 var data = "命令指令";//可以是一个对象,data = {cmd:update};
 var msg = new RongIMLib.CommandMessage({data:data});
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 私聊,其他会话选择相应的消息类型即可。
 var targetId = "xxx"; // 目标 Id
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
                onSuccess: function (message) {
                    //message 为发送的消息对象并且包含服务器返回的消息唯一Id和发送消息时间戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超时';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知错误';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名单中,无法向对方发送消息';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                            info = '不在讨论组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_GROUP:
                            info = '不在群组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                            info = '不在聊天室中';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('发送失败:' + info);
                }
            }
        );

6、正在输入状态消息

var conversationType = RongIMLib.ConversationType.PRIVATE;只有私聊有正在输入状态。
var targetId = "xxx";
var msgName = "TextMessage";//用户正在输入的消息类型 VoiceMessage等。
RongIMClient.getInstance().sendTypingStatusMessage(conversationType, targetId, msgName, {
                onSuccess: function (message) {
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超时';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知错误';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名单中,无法向对方发送消息';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('发送失败:' + info);
                }
            });

7、已读通知消息

 var messageUId = "消息唯一 Id";
 var lastMessageSendTime = "最后一条消息的发送时间";
 var type = "1";// 备用,默认赋值 1 即可。
 // 以上 3 个属性在会话的最后一条消息中可以获得。
 var msg = new RongIMLib.ReadReceiptMessage({ messageUId: messageUId, lastMessageSendTime: lastMessageSendTime, type: type });
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 私聊,其他会话选择相应的消息类型即可。
 var targetId = "xxx"; // 目标 Id
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
                onSuccess: function (message) {
                    //message 为发送的消息对象并且包含服务器返回的消息唯一Id和发送消息时间戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超时';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知错误';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名单中,无法向对方发送消息';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                            info = '不在讨论组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_GROUP:
                            info = '不在群组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                            info = '不在聊天室中';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('发送失败:' + info);
                }
            }
        );

8、本地消息

此方法只有在使用本地存储的情况下有效。

var message = "从本地获取的消息";
RongIMClient.getInstance().sendLocalMessage(message,{
                onSuccess: function (message) {
                    //message 为发送的消息对象并且包含服务器返回的消息唯一Id和发送消息时间戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超时';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知错误';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名单中,无法向对方发送消息';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                            info = '不在讨论组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_GROUP:
                            info = '不在群组中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                            info = '不在聊天室中';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('发送失败:' + info);
                }
            });

9、发送 @ 消息

支持 @ 消息会话类型:RongIMLib.ConversationType.GROUPRongIMLib.ConversationType.DISCUSSION

支持 @ 消息消息类型:TextMessageImageMessageVoiceMessageRichContentMessageLocationMessage

发送方式:RongIMClient.getInstance().sendMessage(conversationType,targetId,msg,callback,true);,请设置最后一个参数为 true

// 私聊,其他会话选择相应的消息类型即可。
var conversationtype = RongIMLib.ConversationType.GROUP;
// 目标 Id
var targetId = "groupId";
// @ 消息对象
var mentioneds = new RongIMLib.MentionedInfo();
    // 全部:RongIMLib.MentionedType.ALL;部分:RongIMLib.MentionedType.PART
    mentioneds.type = RongIMLib.MentionedType.PART;
    // @ 的人
    mentioneds.userIdList = [];
var msg = new RongIMLib.TextMessage({content:"hello RongCloud!",extra:"附加信息",mentionedInfo:mentioneds});
RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
               onSuccess: function (message) {
                   //message 为发送的消息对象并且包含服务器返回的消息唯一Id和发送消息时间戳
                   console.log("Send successfully");
               },
               onError: function (errorCode,message) {
                   var info = '';
                   switch (errorCode) {
                       case RongIMLib.ErrorCode.TIMEOUT:
                           info = '超时';
                           break;
                       case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                           info = '未知错误';
                           break;
                       case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                           info = '在黑名单中,无法向对方发送消息';
                           break;
                       case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                           info = '不在讨论组中';
                           break;
                       case RongIMLib.ErrorCode.NOT_IN_GROUP:
                           info = '不在群组中';
                           break;
                       case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                           info = '不在聊天室中';
                           break;
                       default :
                           info = x;
                           break;
                   }
                   console.log('发送失败:' + info);
               }
           },true);

更改消息

以下 4 个方法只有在使用 本地存储 的情况下有效。

1、插入消息

var msg = new RongIMLib.TextMessage({content:"localMessage"+(+new Date)});
var conversationType = RongIMLib.ConversationType.PRIVATE;
var targetId = "xxx";
var senderUserId = "xxx";
RongIMClient.getInstance().insertMessage(conversationType,targetId,senderUserId,msg,{
  onSuccess:function(){
      console.log("insertMessage Successfully");
  },
  onError:function(){
      console.log("insertMessage error");
  }
});

2、获取一条消息

var msgId = "xxx"; // 显示的本地消息会有 msgId。
RongIMLib.RongIMClient.getInstance().getMessage(msgId,{
    onSuccess:function(msg){
      console.log(JSON.stringify(msg));
    },
    onError:function(){
      console.log("getMessage error");
    }
});

3、修改消息

var msgId = "xxx"; // 显示的本地消息会有 msgId。
RongIMClient.getInstance().getMessage(msgId,{
    onSuccess:function(msg){
        msg.extra = "hello,RongCloud!";
        RongIMLib.RongIMClient.getInstance().updateMessage(msg);
        console.log("updateMessage Successfully");
    },
    onError:function(){
        console.log("getMessage error");
    }
});

4、删除消息

var conversationType = RongIMLib.ConversationType.PRIVATE;
var targetId = "xxx";
var messageUIds = ["59US-LSKS-0401-E031","59US-LSKS-0401-EDS0"]; // 消息的唯一Id
RongIMClient.getInstance().deleteMessages(conversationType,targetId,messageUIds,{
    onSuccess:function(){
        console.log("removeMessage Successfully");
    },
    onError:function(){
        console.log("removeMessage error");
    }
});

获取历史消息

1、获取历史消息

var conversationType = RongIMLib.ConversationType.PRIVATE; //私聊,其他会话选择相应的消息类型即可。
var targetId = "xxx"; // 想获取自己和谁的历史消息,targetId 赋值为对方的 Id。
var timestrap = null; // 默认传 null,若从头开始获取历史消息,请赋值为 0 ,timestrap = 0;
var count = 20; // 每次获取的历史消息条数,范围 0-20 条,可以多次获取。
RongIMLib.RongIMClient.getInstance().getHistoryMessages(conversationType, targetId, timestrap, count, {
  onSuccess: function(list, hasMsg) {
       // list => Message 数组。
    // hasMsg => 是否还有历史消息可以获取。
  },
  onError: function(error) {
    console.log("GetHistoryMessages,errorcode:" + error);
  }
});

过滤消息

此方法目前只支持按消息名称过滤 聊天室 中的消息。

var messageNames = ['CommandMessage']; // 可以设置多个。
RongIMClient.getInstance().setFilterMessages(messageNames);

消息草稿

1、保存草稿

var conversationType = RongIMLib.ConversationType.PRIVATE;
var targetId = "xxx";
var draft = "草稿信息";
RongIMClient.getInstance().saveTextMessageDraft(conversationType,targetId,draft);

2、获取草稿

var conversationType = RongIMLib.ConversationType.PRIVATE;
var targetId = "xxx";
var draft = RongIMClient.getInstance().saveTextMessageDraft(conversationType,targetId);
// draft => 草稿信息。

3、清除草稿

var conversationType = RongIMLib.ConversationType.PRIVATE;
var targetId = "xxx";
RongIMClient.getInstance().clearTextMessageDraft(conversationType,targetId);

自定义消息

以下示例采用 WebSDK 内置消息结构,自定义消息结构,请移步开发指南。

1、定义消息类型

var messageName = "PersonMessage"; // 消息名称。
var objectName = "s:person"; // 消息内置名称,请按照此格式命名。
var mesasgeTag = new RongIMLib.MessageTag(true,true);// 消息是否保存是否计数,true true 保存且计数,false false 不保存不计数。
var propertys = ["name","age"]; // 消息类中的属性名。
RongIMClient.registerMessageType(messageName,objectName,mesasgeTag,propertys);

2、发送消息

var conversationType = RongIMLib.ConversationType.PRIVATE; //私聊,其他会话选择相应的消息类型即可。
var targetId = "xxx"; // 想获取自己和谁的历史消息,targetId 赋值为对方的 Id。
var msg = new RongIMClient.RegisterMessage.PersonMessage({name:"zhang",age:12});
RongIMClient.getInstance().sendMessage(conversationType,targetId, msg, {
    onSuccess: function (message) {
    },
    onError: function (errorCode) {
    }
});

3、接收消息

接收消息与其他内置消息一致,在上文中提到的 setOnReceiveMessageListener 中增加 case 将消息予以展示即可。

例如:case RongIMClient.MessageType.RegisterMessage : dosomething...

会话接口

会话类型

1、RongIMLib.ConversationType.PRIVATE : 二人私聊会话类型,枚举值为 1

2、RongIMLib.ConversationType.DISCUSSION : 讨论组会话类型,枚举值为 2

3、RongIMLib.ConversationType.GROUP : 群组会话类型,枚举值为 3

4、RongIMLib.ConversationType.CHATROOM : 聊天室会话类型,枚举值为 4

5、RongIMLib.ConversationType.CUSTOMER_SERVICE : 客服会话类型,枚举值为 5

6、RongIMLib.ConversationType.SYSTEM : 系统消息类型,枚举值为 6

7、RongIMLib.ConversationType.APP_PUBLIC_SERVICE : 公众账号(默认关注)会话类型,枚举值为 7

8、RongIMLib.ConversationType.PUBLIC_SERVICE : 公众账号 (手动关注) 会话类型,枚举值为 8

获取会话列表

使用此方法需要开通 历史消息云存储 ,可以融云开发者后台开通 付费功能 -> 历史消息云存储

RongIMClient.getInstance().getConversationList({
  onSuccess: function(list) {
    // list => 会话列表集合。
  },
  onError: function(error) {
     // do something...
  }
},null);

修改会话

此方法可以修改会话中信息,可以填充 用户信息 或会话 Title 等。

1、未使用本地存储,必须先执行 getConversationList 并且有这个会话此方法才有效。

var conversationType = RongIMLib.ConversationType.PRIVATE;
var targetId = "xxx";
RongIMLib.RongIMClient.getInstance().getConversation(conversationType,targetId,{
        onSuccess:function(con){
            if (con) {
              con.conversationTitle="我是会话的Title";
              RongIMLib.RongIMClient.getInstance().updateConversation(con);
              consoleInfo("updateConversation Success!");
            }
        }
    });

2、使用本地存储

var conversationType = RongIMLib.ConversationType.PRIVATE;
var targetId = "xxx";
RongIMLib.RongIMClient.getInstance().getConversation(conversationType,targetId,{
        onSuccess:function(con){
            if (con) {
              con.conversationTitle="我是会话的Title";
              RongIMLib.RongIMClient.getInstance().updateConversation(con);
              consoleInfo("updateConversation Success!");
            }
        }
    });

3、删除会话

RongIMClient.getInstance().removeConversation(RongIMLib.ConversationType.PRIVATE,"1002",{
    onSuccess:function(bool){
       // 删除会话成功。
    },
    onError:function(error){
       // error => 删除会话的错误码
    }
});

4、清除会话列表

RongIMClient.getInstance().clearConversations(callback,[conversationTypes]);

conversationTypes 为可选参数,可以清除指定会话类型的会话,可以多个。

5、清除所有会话:

RongIMClient.getInstance().clearConversations({
    onSuccess:function(){
      // 清除会话成功
    },
    onError:function(error){
      // error => 清除会话错误码。
    }
});

6、清除指定会话:

var conversationTypes = [RongIMLib.ConversationType.PRIVATE,RongIMLib.ConversationType.GROUP];
RongIMClient.getInstance().clearConversations({
    onSuccess:function(){
      // 清除会话成功
    },
    onError:function(error){
      // error => 清除会话错误码。
    }
},conversationTypes);

未读消息数

若浏览器不支持 WebStorage 并且您没有使用 本地存储,未读消息数将不会保存,浏览器页面刷新未读消息数将不会存在。

1、获取所有会话总未读消息数

RongIMClient.getInstance().getTotalUnreadCount({
  onSuccess:function(count){
      // count => 所有会话总未读数。
  },
  onError:function(error){
      // error => 获取总未读数错误码。
  }
});

2、获取多个会话的未读消息总数

var conversationTypes = [RongIMLib.ConversationType.PRIVATE,RongIMLib.ConversationType.DISCUSSION];
RongIMClient.getInstance().getConversationUnreadCount(conversationTypes,{
  onSuccess:function(count){
      // count => 多个会话的总未读数。
  },
  onError:function(error){
      // error => 获取多个会话未读数错误码。
  }
});

3、获取指定会话的未读消息数

var conversationType = RongIMLib.ConversationType.PRIVATE;
var targetId = "xxx";
RongIMLib.RongIMClient.getInstance().getUnreadCount(conversationType,targetId,{
    onSuccess:function(count){
        // count => 指定会话的总未读数。
    },
    onError:function(){
        // error => 获取指定会话未读数错误码。
    }
});

4、清除未读消息数

var conversationType = RongIMLib.ConversationType.PRIVATE;
var targetId = "xxx";
RongIMClient.getInstance().clearUnreadCount(conversationType,targetId,{
    onSuccess:function(){
        // 清除未读消息成功。
    },
    onError:function(error){
        // error => 清除未读消息数错误码。
    }
});

讨论组

1、创建讨论组

var discussionName = "讨论组名称"; // 名称自定义
var userIds = ["zhangsan","lisi"];//讨论组初始成员。
RongIMClient.getInstance().createDiscussion(discussionName,userIds,{
    onSuccess:function(discussionId){
        // discussionId => 讨论组 Id。
    },
    onError:function(error){
        // error => 创建讨论组失败错误码。
    }
});

2、讨论组加人

var discussionId = "xxx"; // 讨论组 Id。
var userIds = ["wangwu","zhaoliu"];//被邀请成员。
RongIMClient.getInstance().addMemberToDiscussion(discussionId,userIds,{
    onSuccess:function(){
        // 邀请成功。
    },
    onError:function(error){
        // error => 邀请失败错误码。
    }
});

3、获取讨论组

var discussionId = "xxx"; // 讨论组 Id。
RongIMClient.getInstance().getDiscussion(discussionId,{
    onSuccess:function(discussion){
        // discussion => 讨论组信息。
    },
    onError:function(error){
        // error => 获取讨论组失败错误码。
    }
});

4、退出讨论组

var discussionId = "xxx"; // 讨论组 Id。
RongIMClient.getInstance().quitDiscussion(discussionId,{
    onSuccess:function(){
        // 退出讨论组成功。
    },
    onError:function(error){
        // error => 退出讨论组失败错误码。
    }
});

5、踢人

var discussionId = "xxx"; // 讨论组 Id。
var userId = "xxxx"; // 将被移除讨论组的用户 Id。
RongIMClient.getInstance().removeMemberFromDiscussion(discussionId,userId,{
    onSuccess:function(){
        // 踢人成功。
    },
    onError:function(error){
        // error => 踢人失败错误码。
    }
});

6、设置讨论组邀请状态

var discussionId = "xxx"; // 讨论组 Id。
var status = RongIMLib.DiscussionInviteStatus.OPENED; // 讨论邀请状态 0 : 开发邀请,1:关闭邀请  RongIMLib.DiscussionInviteStatus.OPEND | RongIMLib.DiscussionInviteStatus.CLOSED。
RongIMClient.getInstance().setDiscussionInviteStatus(discussionId,status,{
    onSuccess:function(){
    },
    onError:function(error){
    }
});

7、设置讨论名称

var discussionId = "xxx"; // 讨论组 Id。
var discusstionName = "新的讨论组名称";
RongIMClient.getInstance().setDiscussionName(discussionId,discusstionName,{
    onSuccess:function(){
    },
    onError:function(error){
    }
});

群组

1、加入群

var groupId = "xxxx"; // 群 Id 。
var groupName = "xxx";// 群名称 。
RongIMClient.getInstance().joinGroup(groupId, groupName, {
    onSuccess: function() {
        // 加入群成功。
    },
    onError: function(error) {
        // error => 加入群失败错误码。
    }
});

2、退出群

var groupId = "xxxx";// 群 Id 。
RongIMClient.getInstance().quitGroup(groupId, {
    onSuccess: function() {
      // 退群成功。
    },
    onError: function(error) {
      // error => 退群失败错误码。
    }
});

聊天室

聊天室不支持通过 getHistoryMessages 方法获取历史消息,可以在 joinChatRoom 时拉取最近的消息。

1、加入聊天室

var chatRoomId = "xxxx"; // 聊天室 Id。
var count = 10;// 拉取最近聊天最多 50 条。
RongIMClient.getInstance().joinChatRoom(chatRoomId, count, {
  onSuccess: function() {
       // 加入聊天室成功。
  },
  onError: function(error) {
    // 加入聊天室失败
  }
});

2、退出聊天室

var chatRoomId = "xxxx"; // 聊天室 Id。
RongIMClient.getInstance().quitChatRoom(chatRoomId, {
  onSuccess: function() {
       // 退出聊天室成功。
  },
  onError: function(error) {
    // 退出聊天室失败。
  }
});

3、获取聊天室信息

var chatRoomId = "xxxx";// 聊天室 Id。
var count = 10; // 获取聊天室人数 (范围 0-20 )
var order = RongIMLib.GetChatRoomType.REVERSE;// 排序方式。
RongIMClient.getInstance().getChatRoomInfo(chatRoomId, count, order, {
  onSuccess: function(chatRoom) {
       // chatRoom => 聊天室信息。
    // chatRoom.userInfos => 返回聊天室成员。
     // chatRoom.userTotalNums => 当前聊天室总人数。
  },
  onError: function(error) {
    // 获取聊天室信息失败。
  }
});

黑名单

1、加入黑名单

var userId = "xxxx";
RongIMClient.getInstance().addToBlacklist(userId,{
  onSuccess: function(chatRoom) {
       // 加入黑名单成功。
  },
  onError: function(error) {
    // 加入黑名单失败。
  }
});

2、移除黑名单

var userId = "xxx";
RongIMClient.getInstance().removeFromBlacklist(userId, {
  onSuccess: function() {
  },
  onError: function(error) {
  }
});

3、获取黑名单

RongIMClient.getInstance().getBlacklist({
  onSuccess: function(list) {
       // list => 黑名单列表
  },
  onError: function(error) {
    // 获取黑名单失败
  }
});

4、检查黑名单

var userId = "xxx";
RongIMClient.getInstance().getBlacklistStatus(userId,{
  onSuccess: function(status) {
    // status => 状态
  },
  onError: function(error) {
  }
});

配置参数

http 或 https

1、有服务的情况下无需设置 http 或 https,WebSDK 自动兼容 ,但访问静态文件必须,路径以 file:///D:**** 开头的必须设置:

2、DCloudHBuilder 开发者一定要设置。

window["SCHEMETYPE"] = "http";

其他资料

融云官方开发者后台

WebSDK开发指南

WebSDK API 文档


© 2016 RongCloud. All Rights Reserved. Version 2.8.5