初始化
首先设置 AppID
首先设置 AppID
const config = {
  appid: "YOUR_APP_ID",
  ws: false,
  autoLogin: true
};
然后创建im对象,供全局调用。
const im = QNIM.init(config);
base 基础部分
登录
        im.login({
          mobile:String, #与name 2选1
          name:String,
          password:String,
        })
监听
具体事件列表见本文档的"事件通知"部分
        im.on('events', (ret) => {
          //do something with ret
        })
        // or
        im.on({
          eventName: (ret) => {
            //do something with ret
          },
          ...
        })
取消监听
        im.off('events', (ret) => {
          //do something with ret
        })
        // or
        im.off({
          eventName: (ret) => {
            //do something with ret
          },
        ...
        })
二维码登录
      im.qrlogin({
        password,
        user_id
      });
token登录
        im.tokenLogin(user_id, token)
rosterManager
获取好友id列表
        im.rosterManage.asyncGetRosterIdList().then(res => {
          //
        });
获取好友信息
        im.rosterManage.asyncGetRosterInfo(state.sid).then(res => {
          //
        })
用户注册
        rosterManage.asyncRegester({
          username,
          password
        }).then(() => {
          //
        });
根据id列表获取用户详细信息
        im.rosterManage.asnycGetRosterListDetailByIds(rosterIdList).then(res => {
          //
        });
根据id获取聊天信息
        const rosterMessages = im.rosterManage.getRosterMessageByRid(uid);
读取消息
        im.rosterManage.readRosterMessage(uid);
删除好友
        im.rosterManage
        .asyncDeleteRoster({ user_id})
        .then(() => {
          alert("好友已删除");
        });
获取缓存的所有新用户
        const userMaps = im.rosterManage.getAllRosterDetail();
撤回消息,只能撤回5分钟内的
        im.rosterManage.recallMessage(user_id, message_id);
删除消息
        im.rosterManage.deleteMessage(user_id, message_id);
获取用户的未读数
        const unreadCount = im.rosterManage.getUnreadCount(user_id) :
设置消息成未读
        im.rosterManage.unreadMessage(user_id, message_id);
获取好友信息
        const roserInfo = im.rosterManage.getRosterInfo(user_id);
获取好友申请列表
        im.rosterManage
        .asyncGetApplyList({ cursor: "" })
        .then((res = []) => {
          //
        });
获取黑名单
        im.rosterManage
        .asyncGetBlockedlist()
        .then((res = []) => {
          //
        });
加入黑名单
        im.rosterManage
        .asyncBlockeAdd(user_id)
        .then((res = []) => {
          //
        });
移除黑名单
        im.rosterManage
        .asyncBlockeRemove(user_id)
        .then((res = []) => {
          //
        });
请求加为好友
        im.rosterManage
        .asyncApply({ user_id, alias })
        .then((res = []) => {
          //
        });
通过好友申请
        im.rosterManage
        .asyncAccept({ user_id })
        .then((res = []) => {
          //
        });
拒绝好友申请
        im.rosterManage
        .asyncDecline({ user_id })
        .then((res = []) => {
          //
        });
按名称搜索用户
        im.rosterManage
        .asyncSearchRosterByName({ username })
        .then((res = []) => {
          //
        });
按ID搜索用户
        im.rosterManage
        .asyncSearchRosterById({ user_id })
        .then((res = []) => {
          //
        });
groupManager
获取群信息
        im.groupManage.asyncGetGroupInfo(group_id, fromServer).then(res => {
          //
        })
获取加入的群组
        im.groupManage.asyncGetJoinedGroups().then(res => {
          //
        });
打开群组
        // 此方法会准备群组聊天界面的一些必备信息。
        im.groupManage.openGroup(group_id);
获取缓存的所有群组详情
        const allGroupMap = im.groupManage.getAllGroupDetail();
获取群组成员(异步)
        im.groupManage.asyncGetGroupMembers(group_id, fromServer).then(res => {
          //
        });
获取群组成员(同步)
        const members = im.groupManage.getGroupMembers(group_id);
按id获取群组详情
        im.groupManage.asyncGetGroupListDetail(groupIds).then(res => {
          //
        });
获取群消息
        const groupMessages = rootState.im.groupManage.getGruopMessage(group_id);
将群消息设置已读
        im.groupManage.readGroupMessage(group_id)
撤回消息
        im.groupManage.recallMessage(group_id, message_id)
获取群未读消息数
        const unreadCount = im.groupManage.getUnreadCount(group_id);
获取群管理员列表
        im.groupManage.asyncGetAdminList({ group_id }).then(res => {
          //
        })
群添加管理员
        im.groupManage.asyncAdminAdd({
          group_id,
          user_list
        })
        .then(() => {
          //
        });
移除管理员
        im.groupManage.asyncAdminRemove({ group_id, user_list }).then(() => {
          //
        });
获取群公告详情
        im.groupManage.asyncGetAnouncementById( {announcement_id, group_id} ).then(res => {
          //
        });
删除群公告
        im.groupManage
        .asyncAnouncementDelete({ group_id, announcement_id })
        .then(() => {
          //
        });
添加群公告
        im.groupManage.asyncAnnouncementEdit({ title, content, group_id })
        .then(() => {
          //
        });
群公告列表
        im.groupManage.asyncGetAnnouncementList({ group_id }).then((res = []) => {
          //
        });
创建群组
        im.groupManage.asyncCreate({
          name,
          type,
          avatar,
          description,
          user_list,
        })
        .then(() => {
          //
        });
解散群组
        im.groupManage.asyncDestroy({ group_id })
        .then(() => {
          alert("您已解散了此群。。");
        });
获取群组详情
        im.groupManage.asyncGetInfo({ group_id }).then(res => {
          //
        });
更新群头像
        im.groupManage.asyncUpdateAvatar({
          group_id,
          value,
        })
        .then(() => {
          alert("更新头像完成");
        });
更新群描述
        im.groupManage.asyncUpdateDescription({
          group_id,
          value
        })
        .then(() => {
          //
        });
更新群名称
        im.groupManage.asyncUpdateName({
          group_id,
          value
        })
        .then(() => {
          //
        });
获取群成员
        im.groupManage.asyncGetMemberList(group_id, fromServer).then(res => {
          //
        });
设置群消息免打扰情况
        im.groupManage.asyncGroupMsgMutemode({
          group_id,
          msg_mute_mode
        })
        .then(() => {
          this.groupInfo.msg_mute_mode = this.groupInfo.msg_mute_mode ? 0 : 2;
        });
获取群黑名单
        im.groupManage.asyncGroupBannedList({ group_id }).then(res => {
          //
        });
禁言群成员
        im.groupManage.asyncGroupBab({ group_id, duration, user_list }).then(() => {
          //
        });
解除成员
        im.groupManage.asyncGroupUnban({ group_id, user_list }).then(() => {
          //
        });
设置群成员是否可以邀请
        im.groupManage.asyncUpdateAllowMemberInvitation({
          group_id,
          value
        })
        .then(() => {
          //
        });
设置群成员是否可以修改群信息
        im.groupManage.asyncUpdateAllowMemberModify({
          group_id,
          value
        })
        .then(() => {
          //
        });
设置群是否开启已读模式
        im.groupManage.asyncUpdateEnableReadack({
          group_id,
          value
        })
        .then(() => {
          //
        });
设置群历史是否可见
        im.groupManage.asyncUpdateHistoryVisible({
          group_id,
          value
        })
        .then(() => {
          //
        });
设置入群是否需要申请
        im.groupManage.asyncUpdateRequireadminapproval({
          group_id,
          apply_approval
        })
        .then(() => {
          //
        });
更换群主
        im.groupManage.asyncOwnerTransfer({
          group_id,
          new_owner
        })
        .then(() => {
          //
        });
申请加入群
        im.groupManage.asyncApply({ group_id, reason })
        .then(() => {
          //
        });
同意/拒绝申请用户加入群
        im.groupManage.asyncApplyHandle({
          approval: true/false,
          user_id,
          group_id
        }).then(() => {
          //
        });
获取群黑名单
        im.groupManage.asyncGroupBockedlist({ group_id }).then(res => {
          //
        });
将成员加入黑名单
        im.groupManage.asyncGroupBlock({ group_id, user_list }).then(() => {
          //
        });
解除黑名单
        im.groupManage.asyncGroupUnblock({ group_id, user_list })
        .then(() => {
          //
        });
踢出群组
        im.groupManage.asyncKick({ group_id, user_list }).then(() => {
          //
        });
获取群邀请列表
        this.im.groupManage.asyncGetInvitationList().then(res => {
          //
        });
邀请成员加入群
        im.groupManage.asyncInvite({ group_id, user_list }).then(() => {
          /
        });
同意/拒绝群邀请
        im.groupManage.asyncInviteHandle({
          approval: true,
          user_id,
          group_id
        }).then(() => {
          //
        });
退出群
        im.groupManage.asyncLeave({ group_id })
        .then(() => {
          //
        });
修改群名片
        im.groupManage.asyncUpdateDisplayName({
          group_id,
          value
        })
        .then(() => {
          //
        });
获取群申请列表
        im.groupManage.asncGetApplicationList({ group_list }).then(rs => {
          //
        });
获取群文件
        im.groupManage.asyncGetFileList({ group_id }).then((res = []) => {
          //
        });
删除群文件
        im.groupManage.asyncFileDelete({ file_list, group_id }).then(() => {
          //
        });
sysManager
发送好友消息
        im.sysManage.sendRosterMessage({
          type,
          uid,
          content,
          attachment
        });
发送群消息
        im.sysManage.sendGroupMessage({
          type,
          gid,
          content,
          attachment
        });
群发送@消息
        im.sysManage.sendMentionMessage({
          gid,
          txt,
          mentionAll,
          mentionList,
          mentionedMessage,
          pushMessage,
          senderNickname
        });
发送输入状态消息
        im.sysManage.sendInputStatusMessage(roster_id, "nothing"/"typing");
转发消息
        im.sysManage.forwardMessage({
          uid,
          gid, //2选1
          mid,
        });
请求历史消息
        im.sysManage.requireHistoryMessage(roster_id/group_id, mid, amount);
        // mid:消息ID, 从哪条消息往前取历史,0表示最新一条消息。 amount:最多取多少条消息。
获取所有消息未读状态
        const allAcks = im.sysManage.getAllMessageStatus() || {};
获取群文件上传url
        im.sysManage.asyncGetGroupAvatarUploadUrl({
          group_id,
          "access-token"
        })
        .then(res => {
          //
        });
获取聊天文件上传地址
        im.sysManage.asyncGetFileUploadChatFileUrl({
          file_type,
          to_id,
          to_type
        })
        .then(res => {
          //
        });
上传文件
        im.sysManage.asyncFileUpload({
          file,
          fileType,
          to_id,
          toType: "chat",
          chatType: "roster"
        })
        .then(res => {
          //
        })
拼装图片路径
        const image = im.sysManage.getImage({ avatar, type='roster', thumbnail=true });
userManager
获取登录用户的token
        const token =  im.userManage.getToken();
获取登录用户的uid
        const cuid = im.userManage.getUid();
获取appid
        const appid = im.userManage.getAppid();
获取最近回话列表
        const list = im.userManage.getConversationList();
发送验证码
        im.userManage
        .asyncUserSendSms({
          mobile,
        })
        .then(() => {
          //
        });
发送验证码(通过图片验证码)
        im.userManage
        .asyncCaptchaSms({
          captcha,
          image_id,
          mobile,
        })
        .then(() => {
          //
        });
检查用户名是否可用
        im.userManage.asyncUserNameCheck(username).then(() => {
          //
        });
绑定手机号-使用签名绑定
        im.userManage.asyncUserMobileBindSign({
            mobile,
            sign,
          }).then(() => {
            //
          });
手机号验证码登录
        im.userManage.asyncUserMobileLogin({
          captcha,
          mobile
        })
        .then(res => {
          //
        });
更新手机号
        im.userManage
        .asyncUpdateMobile({ mobile })
        .then(() => {
          //
        });
更新头像
        im.userManage
        .asyncUpdateAvatar({
          avatar
        })
        .then(() => {
          //
        });
更新昵称
        im.userManage.asyncUpdateNickName({ nick_name }).then(() => {
          //
        });
获取用户profile
        im.userManage.asyncGetProfile(true).then(res => {
          //
        })
更新用户profile
        im.userManage.asyncUpdateProfile({
          username,
          avatar
        }).then(res => {
          //
        })
获取用户设置信息
        im.userManage.asyncGetSettings().then(res => {
          //
        })
修改用户设置
        im.userManage
        .asyncUpdateSettings({ 
          "auth_answer": "string",
          "auth_mode": 0,
          "auth_question": "string",
          "auto_download": true,
          "group_confirm": true,
          "id": 0,
          "no_push": true,
          "no_push_detail": true,
          "no_push_end_hour": 0,
          "no_push_start_hour": 0,
          "no_sounds": true,
          "push_nick_name": "string",
          "user_id",
          "vibratory": true
        }).then(() => {
          //
        });
事件通知
- 
Floo通知
事件名称:flooNotice 事件内容:({category, desc}) {category: 'loginMessage',desc: 'socket connecting...'} // 开始建连接 {category: 'loginMessage',desc: 'socket connect success...'} // 连接成功 {category: 'loginMessage',desc: 'logining socket service...'} // 开始登录 {category: 'loginMessage',desc: 'login socket failure ......'} // 登录失败 {category: 'loginMessage',desc: 'login socket success.....'} // 登录成功 {category: 'loginMessage', desc: 'getting token...' } //获取token {category: 'loginMessage',desc: 'token sucecc, getting roster lists..'} // 获取token成功,开始获取好友列表 {category: 'loginMessage',desc: 'get roster list failure:' + ex.message} // 获取好友列表失败 {category: 'action', desc: 'relogin' } // 需要自动登录 {category: 'action', desc: 'relogin_manually' } // 需要手动登录 {category: 'conversation_deleted',desc: { id, source:'user_operation' }} // 会话被删除。ID:会话ID, source: 来源 {category: 'userNotice', desc:'PASSWORD_CHANGED'} // 用户密码改变 {category: 'userNotice', desc:'FROZEN'} // 用户账户被封禁 {category: 'userNotice', desc:'REMOVED'} // 用户被删除 {category: 'userNotice', desc:'KICK_BY_SAME_DEVICE'} // 当前设备被相同设备踢下线 {category: 'userNotice', desc:'KICKED_BY_OTHER_DEVICE'} // 当前设备被其它设备踢下线 {category: 'userNotice', desc:'INFO_UPDATED'} // 用户信息改变:profile或setting {category: 'userNotice', desc:'DEVICE_LOGIN'} // 用户其它设备上线 {category: 'userNotice', desc:'DEVICE_LOGOUT'} // 用户其它设备下线 {category: 'userNotice', desc:'DEVICE_ADDED'} // 新设备通知 {category: 'userNotice', desc:'DEVICE_REMOVED'} // 设备被移除的通知 {category: 'userNotice', desc:'CLUSTER_CHANGED'} // 用户所在集群改变 需要重新登录 - 
Floo错误
事件名称:flooError 事件内容:({category, desc}) {category: 'USER_BANNED', desc:'用户被禁言'} {category: 'USER_FROZEN', desc:'用户被冻结,请联系App管理员。'} {category: 'APP_FROZEN', desc:'APP 被冻结,请登陆蓝莺IM控制台查看详情。'} {category: 'LICENSE', desc:'无效 LICENSE,请确认服务已按时付费。'} {category: 'LICENSE', desc:'超出 LICENSE 用户数限制,请购买更高规格服务。'} {category: 'DNS_FAILED', desc: dnsServer } // DNS错误: 无法访问 - 
登录失败
事件名称: loginFail 事件内容:(desc) 失败原因的描述 - 
登录成功
事件名称:loginSuccess 事件内容:({}) - 
群列表更新
事件名称:onGroupListUpdate 事件内容:() - 
群成员列表更新
事件名称:onGroupMemberChanged 事件内容: (groupId) 群ID - 
收到群消息
事件名称: onGroupMessage 事件内容: (meta) 消息的内容 - 
对方正在输入
事件名称: onInputStatusMessage 事件内容: ({ext,from,to}) ext:扩展字段 from: 发送者用户ID to: 接收者用户ID - 
收到群组@消息
事件名称: onMentionMessage 事件内容: (meta) 消息的内容 - 
消息被取消已读
事件名称: onMessageCanceled 事件内容: ({uid,mid}) uid: 会话ID, mid: 消息ID - 
消息被删除
事件名称: onMessageDeleted 事件内容: ({uid,mid}) uid: 会话ID, mid: 消息ID - 
消息被撤回
事件名称: onMessageRecalled 事件内容: ({uid,mid}) uid: 会话ID, mid: 消息ID - 
消息状态变更:撤回/删除/已读
事件名称: onMessageStatusChanged 事件内容: ({uid,mid}) uid: 会话ID, mid: 消息ID - 
收到历史消息
事件名称: onReceiveHistoryMsg 事件内容: ({next}) next: 下次取历史消息的key - 
好友信息变更
事件名称: onRosterInfoUpdate 事件内容: (rosterIds) rosterIds: 好友的用户ID列表 - 
好友列表变更
事件名称: onRosterListUpdate 事件内容: (meta) 好友通知的消息内容 - 
收到单聊消息
事件名称: onRosterMessage 事件内容: (meta) 好友通知的消息内容 - 
消息发送状态变更
事件名称: onSendingMessageStatusChanged 事件内容: ({status,mid}) status: 发送状态,取值为sending|failed|sent, mid: 客户端生成的client_mid - 
未读数改变
事件名称: onUnreadChange 事件内容: (cid) 会话ID - 
最近会话更新
事件名称: recentlistUpdate 事件内容: () - 
群组创建通知
事件名称: onGroupCreated 事件内容: (meta) 群通知的消息内容 - 
群组解散通知
事件名称: onGroupDestoryed 事件内容: (meta) 群通知的消息内容 - 
成员入群通知
事件名称: onGroupJoined 事件内容: (meta) 群通知的消息内容 - 
群申请被通过
事件名称: onGroupApplyAccepted 事件内容: (meta) 群通知的消息内容 - 
群申请被拒绝
事件名称: onGroupApplyDeclined 事件内容: (meta) 群通知的消息内容 - 
被群禁言
事件名称: onGroupBaned 事件内容: (meta) 群通知的消息内容 - 
被群取消禁言
事件名称: onGroupUnbaned 事件内容: (meta) 群通知的消息内容