Options
All
  • Public
  • Public/Protected
  • All
Menu

Class NIM

Hierarchy

Implements

Index

Constructors

Methods

Constructors

Methods

  • acceptSuperTeamInvite(_options: { from: string; idServer: string; teamId: string; done?: any }): void
  • 群主和管理员邀请成员加入群(addSuperTeamMembers), 被邀请的人收到类型为superTeamInvite的系统通知

    • 若接受入群邀请, 该群所有成员收到类型为 acceptSuperTeamInvite 的群通知消息,通知消息具体内容见下文
    • 若拒绝入群邀请, 邀请你的人会收到类型为 rejectSuperTeamInvite 的系统通知, 此系统通知的 from 字段的值为拒绝入群邀请的人的帐号, to 字段的值为对应的 群ID

    用户接受入群邀请后:

    1. 所有群成员收到群通知消息: onmsg:
      • msg.type: 'notification'
      • msg.from: 邀请人账号
      • msg.to: 群id
      • msg.attach.type: 'acceptSuperTeamInvite'
      • msg.attach.team: 群信息
      • msg.attach.members: 接收入群邀请的群成员列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onAddSuperTeamMembers
    4. 函数调用者触发 onupdatesysmsg

    关联函数

    Parameters

    • _options: { from: string; idServer: string; teamId: string; done?: any }
      • from: string

        申请者的 accountId

      • idServer: string

        管理员邀请此用户进群的系统通知的 idServer

      • teamId: string
      • done?:function

    Returns void

  • acceptTeamInvite(_options: { from: string; idServer: string; teamId: string; done?: any }): void
  • 同意入群邀请 TeamInterface.addTeamMembers

    群主和管理员邀请成员加入群(addTeamMembers), 被邀请的人收到类型为teamInvite的系统通知

    此系统通知的 from 字段的值为邀请方的帐号, to 字段的值为对应的 群ID, 此类系统通知的 attach 有一个字段 team 的值为被邀请进入的群, 被邀请的人可以选择接受邀请或者拒绝邀请

    • 若接受入群邀请, 该群所有成员收到类型为 acceptTeamInvite 的群通知消息, 通知消息具体内容见下文
    • 若拒绝入群邀请, 邀请你的人会收到类型为 rejectTeamInvite 的系统通知, 此系统通知的 from 字段的值为拒绝入群邀请的人的帐号, to 字段的值为对应的 群ID

    用户接受入群邀请后:

    1. 所有群成员, 收到群通知消息 onmsg:
      • msg.type: 'notification'
      • msg.from: 邀请人账号
      • msg.to: 群id
      • msg.attach.type: 'acceptTeamInvite'
      • msg.attach.team: 群信息
      • msg.attach.members: 接收入群邀请的群成员列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onAddTeamMembers
    4. 函数调用者触发 onupdatesysmsg

    关联函数

    Parameters

    • _options: { from: string; idServer: string; teamId: string; done?: any }
      • from: string

        申请者的 accountId

      • idServer: string

        管理员邀请此用户进群的系统通知的 idServer

      • teamId: string
      • done?:function

    Returns void

  • addCollect(_options: { custom?: string; data: string; type: number; uniqueId?: string; done?: any }): void
  • 添加收藏,收藏内容由用户根据业务场景自行决定。收藏内容仅当前用户可见。

    Parameters

    • _options: { custom?: string; data: string; type: number; uniqueId?: string; done?: any }
      • Optional custom?: string

        收藏的扩展字段, 最大 1024 字符数

      • data: string

        收藏的具体数据内容, 最大 20480 字符数

      • type: number

        类型,开发者可自定义映射关系,只能是整数

      • Optional uniqueId?: string

        去重唯一 ID。

        注:当传入 uniqueId 时,会校验此 uniqueId 之前是否存在对应的收藏记录,若不存在则会新增收藏,已存在则会更新这个收藏。

      • done?:function

    Returns void

  • addFriend(_options: { account: string; ps?: string; done?: any }): void
  • addMsgPin(_options: { msg: NIMMsgPinInfo; pinCustom?: string; done?: any }): void
  • addQuickComment(_options: { apnsText?: string; body: number; custom?: string; msg: NIMMessage; needBadge?: boolean; needPush?: boolean; pushPayload?: NIMStrAnyObj; pushTitle?: string; done?: any }): void
  • 添加快捷评论

    • 评论只有几个简单的字段,可删除,不计入未读数
    • 发送后,消息发送方和评论发送方的多端同步设备会触发 NIMGetInstanceOptions.onQuickComment 回调函数

    Parameters

    • _options: { apnsText?: string; body: number; custom?: string; msg: NIMMessage; needBadge?: boolean; needPush?: boolean; pushPayload?: NIMStrAnyObj; pushTitle?: string; done?: any }
      • Optional apnsText?: string

        自定义推送文案

      • body: number

        评论的内容。

        注:输入整数,开发者需要自定义映射规则。如 1 为点赞的表情、2 对应鼓掌的表情等

      • Optional custom?: string

        扩展内容

      • msg: NIMMessage

        被回复的消息

      • Optional needBadge?: boolean

        是否需要消息计数(APP 的角标计数),默认 false

      • Optional needPush?: boolean

        是否需要推送,默认 false。

      • Optional pushPayload?: NIMStrAnyObj

        第三方自定义的推送属性,限制 json

      • Optional pushTitle?: string

        推送的标题

      • done?:function
        • done(err: null | NIMCommonError | Error | NIMStrAnyObj, data: { comment: { body: number; custom?: string; from: string; time: number }; msg: { from: string; idServer: string; scene: "p2p" | "team" | "superTeam"; time: number; to: string } }): void
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: { comment: { body: number; custom?: string; from: string; time: number }; msg: { from: string; idServer: string; scene: "p2p" | "team" | "superTeam"; time: number; to: string } }
            • comment: { body: number; custom?: string; from: string; time: number }

              评论内容

              • body: number

                快捷评论内容

              • Optional custom?: string

                扩展内容

              • from: string

                该评论的发送方的 account ID

              • time: number

                评论的发送时间。

            • msg: { from: string; idServer: string; scene: "p2p" | "team" | "superTeam"; time: number; to: string }

              消息, 摘取 NIMMessage 结构里的几个字段,且 idServer 在这里必须存在。

              • from: string

                消息发送方, 帐号

              • idServer: string

                服务器用于区分消息用的ID, 用于获取历史消息和获取包含关键词的历史消息。

                注:此字段可能没有, 比如说消息被反垃圾过滤了。

              • scene: "p2p" | "team" | "superTeam"

                消息场景:

                • p2p:单聊场景
                • team:群聊场景
                • superteam:超大群场景
              • time: number

                时间戳

              • to: string

                消息接收方, 帐号或群id

          Returns void

    Returns void

  • addStickTopSession(_options: { id: string; topCustom?: string; done: any }): void
  • addSuperTeamManagers(_options: { accounts: string[]; teamId: string; done?: any }): void
  • 添加超级群管理员

    添加管理员后:

    1. 所有群成员收到群通知消息 onmsg:
      • msg.type: 'notification'
      • msg.from: 添加管理员的操作者
      • msg.to: 群id
      • msg.attach.type: 'addSuperTeamManagers'
      • msg.attach.accounts: 被加为管理员的账号列表
      • msg.attach.members: 被加为管理员的群成员详细信息列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onUpdateSuperTeamManagers

    Parameters

    Returns void

  • addSuperTeamMembers(_options: { accounts: string[]; custom?: string; ps?: string; teamId: string; done?: any }): void
  • 添加超级群成员

    • 如果 inviteMode: 'noVerify':
    1. 被邀请人直接进群,所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 邀请人账号
      • msg.to: 群id
      • msg.attach.type: 'addSuperTeamMembers'
      • msg.attach.team: 群详细信息
      • msg.attach.members: 被邀请入群成员详细信息列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onAddSuperTeamMembers
    • 如果 inviteMode: 'needVerify'
    1. 被邀请者触发 onsysmsg,其 type 为 'superTeamInvite'。被邀请者通过 acceptSuperTeamInvite 或者 rejectSuperTeamInvite回应入群邀请

    Parameters

    • _options: { accounts: string[]; custom?: string; ps?: string; teamId: string; done?: any }
      • accounts: string[]

        要加入的用户账号列表

      • Optional custom?: string

        附加字段,推荐使用 JSON 序列化字符串

      • Optional ps?: string

        附言,长度不得大于 5000 字符,开发者可以使用 JSON 序列化字符串填充

      • teamId: string
      • done?:function

    Returns void

  • addSuperTeamMembersFollow(options: { accountIds: string[]; teamId: string; done: any }): void
  • addTeamManagers(_options: { accounts: string[]; teamId: string; done?: any }): void
  • 添加群管理员

    添加群管理员后:

    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 添加管理员的操作者
      • msg.to: 群id
      • msg.attach.type: 'addTeamManagers'
      • msg.attach.accounts: 被加为管理员的帐号列表
      • msg.attach.members: 被加为管理员的群成员详细信息列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onUpdateTeamManagers

    Parameters

    Returns void

  • addTeamMembers(_options: { accounts: string[]; custom?: string; ps?: string; teamId: string; done?: any }): void
  • 添加群成员

    普通群(已废弃,推荐使用高级群):

    1. 拉人入群后, 其他群成员会收到通知并触发 onAddTeamMembers

    2. 被邀请的群成员不会收到回调,直到群内成员发送消息,触发 onupdatesessions 回调,才能够感知到自己已经入群。

    高级群:

    • 如果 inviteMode: 'noVerify':
    1. 被邀请人直接入群,所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 邀请者账号
      • msg.to: 群id
      • msg.attach.type: 'addTeamMembers'
      • msg.attach.accounts: 被邀请入群成员账号列表
      • msg.attach.members: 被邀请入群成员详细信息列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onAddTeamMembers
    • 如果 inviteMode: 'needVerify'
    1. 被邀请者触发 onsysmsg,其 type 为 'teamInvite'。被邀请者通过 acceptTeamInvite 或者 rejectTeamInvite回应入群邀请

    Parameters

    • _options: { accounts: string[]; custom?: string; ps?: string; teamId: string; done?: any }
      • accounts: string[]

        要加入的用户账号列表

      • Optional custom?: string

        附加字段,推荐使用 JSON 序列化字符串

      • Optional ps?: string

        附言,长度不得大于 5000 字符,开发者可以使用 JSON 序列化字符串填充

      • teamId: string
      • done?:function

    Returns void

  • addTeamMembersFollow(options: { accountIds: string[]; teamId: string; done: any }): void
  • addToBlacklist(_options: { account: string; done?: any }): void
  • 加入黑名单。调用后,初始化同步阶段收到 onblacklist 回调,多端同步阶段收到 onsyncmarkinblacklist 回调

    示例场景

    Parameters

    • _options: { account: string; done?: any }
      • account: string
      • done?:function
        • done(err: null | NIMCommonError | Error | NIMStrAnyObj, data: { account: string; isAdd: boolean; record: { account: string; updateTime: number } }): void
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: { account: string; isAdd: boolean; record: { account: string; updateTime: number } }
            • account: string

              被操作者账号 ID

            • isAdd: boolean

              是否加入名单(黑名单或者静音列表)

              true 代表某人被加入名单,false 代表某人被移出名单

            • record: { account: string; updateTime: number }

              该操作记录的详情

              • account: string

                被操作者账号 ID

              • updateTime: number

                更新时间戳

          Returns void

    Returns void

  • addToMutelist(_options: { account: string; done?: any }): void
  • 加入静音列表。调用后,初始化同步阶段收到 onmutelist 回调,多端同步阶段收到 onsyncmarkinmutelist 回调

    • 通过设置静音列表来控制单聊免打扰
    • 被静音用户发送的消息,不会通过推送通知给用户
    • 用户 UI 层,可以通过静音列表来决定是否渲染会话的未读数

    示例场景

    Parameters

    • _options: { account: string; done?: any }
      • account: string
      • done?:function
        • done(err: null | NIMCommonError | Error | NIMStrAnyObj, data: { account: string; isAdd: boolean; record: { account: string; updateTime: number } }): void
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: { account: string; isAdd: boolean; record: { account: string; updateTime: number } }
            • account: string

              被操作者账号 ID

            • isAdd: boolean

              是否加入名单(黑名单或者静音列表)

              true 代表某人被加入名单,false 代表某人被移出名单

            • record: { account: string; updateTime: number }

              该操作记录的详情

              • account: string

                被操作者账号 ID

              • updateTime: number

                更新时间戳

          Returns void

    Returns void

  • applyFriend(_options: { account: string; ps?: string; done?: any }): void
  • applySuperTeam(_options: { ps?: string; teamId: string; done?: any }): void
  • 用户主动申请加入超级群。根据 joinMode 不同,SDK 有不同的行为

    • 如果 joinMode: 'noVerify':
    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 申请人账号
      • msg.to: 群id
      • msg.attach.type: 'passSuperTeamApply'
      • msg.attach.account: 申请人账号
      • msg.attach.members: 被通过申请的群成员列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onAddSuperTeamMembers
    • 如果 joinMode: 'needVerify'
    1. 管理员触发 onsysmsg,其 type 为 'applySuperTeam'。管理员通过 passSuperTeamApply 或者 rejectSuperTeamApply回应入群申请
    • 如果 joinMode: 'rejectAll'
    1. 收到申请入群失败的error信息

    Parameters

    Returns void

  • applyTeam(_options: { ps?: string; teamId: string; done?: any }): void
  • 用户主动申请加入群。根据 joinMode 不同,SDK 有不同的行为

    • 如果 joinMode: 'noVerify':
    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 申请人账号
      • msg.to: 群id
      • msg.attach.type: 'passTeamApply'
      • msg.attach.account: 申请人账号
      • msg.attach.members: 被通过申请的群成员列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onAddTeamMembers
    • 如果 joinMode: 'needVerify'
    1. 管理员触发 onsysmsg,其 type 为 'applyTeam'。管理员通过 passTeamApply 或者 rejectTeamApply回应入群申请
    • 如果 joinMode: 'rejectAll'
    1. 收到申请入群失败的error信息

    Parameters

    Returns void

  • audioToMp3(_options: { url: string }): string
  • audioToText(_options: { url: string; done: any }): void
  • 音频转文字。注意,该功能仅在 NIM 中可以使用。Chatroom尚未实现此功能。

    • 仅支持通过previewFile或者sendFile拿到的音频 url, 或者收到的音频消息的 url

    Parameters

    Returns void

  • blurImage(_options: { radius: number; sigma: number; url: string; done?: any }): void
  • 高斯模糊图片

    • 只支持通过预览文件或发送文件消息拿到的图片 url, 或者经过其他图片操作后拿到的图片 url

    Parameters

    • _options: { radius: number; sigma: number; url: string; done?: any }
      • radius: number

        高斯模糊半径

      • sigma: number

        高斯模糊标准差,不能小于 0

      • url: string

        NOS 图片源链接

      • done?:function

    Returns void

  • clearServerHistoryMsgsWithSync(_options: { ext?: string; isDeleteRoam?: boolean; isSyncSelf?: boolean; scene: "p2p" | "team" | "superTeam"; to: string; done?: any }): void
  • connect(): void
  • 使用 disconnect 方法登出IM后,可以调用 connect 重新登录。调用 getInstance 后会自动建立长连接,无需调用 connect

    关联函数

    示例

    nim.disconnect({
    done: function() {
    nim.connect()
    }
    })

    Returns void

  • createTeam(_options: { accounts?: string[]; announcement?: string; antiSpamBusinessId?: string; avatar?: string; beInviteMode?: "noVerify" | "needVerify"; custom?: string; intro?: string; inviteMode?: "manager" | "all"; joinMode?: "noVerify" | "needVerify" | "rejectAll"; name: string; ps?: string; type: "normal" | "advanced"; updateCustomMode?: "manager" | "all"; updateTeamMode?: "manager" | "all"; done?: any }): void
  • 创建高级群。普通群已废弃,请使用高级群。

    • 若传入的属性为 undefined,或者未传入,则日后拉取 team 时,对应属性也是 undefined。

    • 下面为高级群申请入群(joinMode)的鉴权方式。默认为 needVerify

    1. needVerify: 需要管理员同意
    2. noVerify: 无需管理员同意
    3. rejectAll: 不允许入群申请
    • 下面为高级群中邀请入群(beInviteMode)的鉴权方式。默认为 needVerify
    1. needVerify: 需要被邀请人同意
    2. noVerify: 无需被邀请人同意
    • 下面为高级群邀请权限(inviteMode)的设置。默认为 manager
    1. manager: 仅管理员可以邀请入群
    2. all: 所有人均可邀请成员入群
    • 下面为群信息修改权限(updateTeamMode)设置。默认为 manager
    1. manager: 仅管理员可以修改权限
    2. all: 所有人均可以修改权限
    • 下面为群信息自定义字段修改权限(updateCustomMode)设置。默认为 manager
    1. manager: 仅管理员可以修改权限
    2. all: 所有人均可以修改权限

    函数调用后:

    • 创建者触发 onCreateTeam
    • 如果 beInviteMode: noVerify:
    1. 被邀请者收到 onmsgonupdatesessions、以及 NIMGetInstanceOptions.onAddTeamMembers
    2. 创建者收到 onupdatesessions、以及 NIMGetInstanceOptions.onAddTeamMembers
    • 如果 beInviteMode: needVerify:
    1. 被邀请者收到 NIMGetInstanceOptions.onsysmsg,类型为 teamInvite

    Parameters

    • _options: { accounts?: string[]; announcement?: string; antiSpamBusinessId?: string; avatar?: string; beInviteMode?: "noVerify" | "needVerify"; custom?: string; intro?: string; inviteMode?: "manager" | "all"; joinMode?: "noVerify" | "needVerify" | "rejectAll"; name: string; ps?: string; type: "normal" | "advanced"; updateCustomMode?: "manager" | "all"; updateTeamMode?: "manager" | "all"; done?: any }
      • Optional accounts?: string[]

        要拉进群的成员的帐号列表

      • Optional announcement?: string

        群公告

      • Optional antiSpamBusinessId?: string

        对某些资料内容进行反垃圾处理的业务 ID, 在云信控制台里配置.

      • Optional avatar?: string

        群头像

      • Optional beInviteMode?: "noVerify" | "needVerify"

        群被邀请模式

      • Optional custom?: string

        扩展字段

      • Optional intro?: string

        群简介

      • Optional inviteMode?: "manager" | "all"

        群邀请模式

      • Optional joinMode?: "noVerify" | "needVerify" | "rejectAll"

        群加入方式

      • name: string

        群名

      • Optional ps?: string

        拉人的附言

      • type: "normal" | "advanced"

        群类型

      • Optional updateCustomMode?: "manager" | "all"

        群信息自定义字段修改权限

      • Optional updateTeamMode?: "manager" | "all"

        群信息修改权限

      • done?:function
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: { accounts?: string[]; antispamTag?: { antiSpamBusinessId?: string }; owner: NIMTeamMember; ps?: string; team: NIMTeam }
            • Optional accounts?: string[]

              要拉进群的成员的帐号列表

            • Optional antispamTag?: { antiSpamBusinessId?: string }

              反垃圾标签

              • Optional antiSpamBusinessId?: string
            • owner: NIMTeamMember

              创建者的信息

            • Optional ps?: string

              拉人的附言

            • team: NIMTeam

          Returns void

    Returns void

  • cropImage(_options: { height: number; url: string; width: number; x: number; y: number; done?: any }): void
  • 剪裁图片

    • 只支持通过预览文件或发送文件消息拿到的图片 url, 或者经过其他图片操作后拿到的图片 url
    • 从坐标 (x, y) 处截取尺寸为 width*height 的图片, (0, 0) 代表左上角
    • width/height 不能小于0, 如果 width/height 大于图片的原始宽度/高度, 那么将被替换为图片的原始宽度/高度

    Parameters

    • _options: { height: number; url: string; width: number; x: number; y: number; done?: any }
      • height: number

        高度

      • url: string

        NOS 图片源链接

      • width: number

        宽度

      • x: number

        x 坐标, 必须需为整数

      • y: number

        y 坐标, 必须需为整数

      • done?:function

    Returns void

  • deleteAllLocalMsgs(_options: { done?: any }): void
  • 删除所有的本地消息,此方法会同时清空数据库中所有会话记录。

    注:如果运行环境不支持数据库,或者未开启数据库, 执行成功,但不会返回或者操作有效的数据。

    Parameters

    Returns void

  • deleteAllLocalSysMsgs(_options: { done?: any }): void
  • deleteCollects(_options: { collectList: NIMCollect[]; done?: any }): void
  • deleteFriend(_options: { account: string; delAlias?: boolean; done?: any }): void
  • deleteLocalMsg(_options: { msg: NIMMessage; done?: any }): void
  • 描述

    删除某一条本地消息。

    • 如果运行环境不支持数据库,或者未开启数据库, 执行成功,但不会返回或者操作有效的数据。
    • 如果删除的是对应会话的最后一条消息, 那么对应会话的 lastMsg 属性会自动变为变为上一条消息, 同时触发 onupdatesessions 回调。
    • 如果消息不存在,会判定为执行成功

    Parameters

    Returns void

  • deleteLocalMsgs(_options: { end?: number; sessionId: string; start?: number; updateSession?: boolean; done?: any }): void
  • 根据会话ID、起始时间等条件删除本地消息

    • 如果运行环境不支持数据库,或者未开启数据库, 执行成功,但不会返回或者操作有效的数据。
    • 结束时间应该大于开始时间
    • 如不传开始时间和结束时间,则删除某个会话的所有本地消息 相当于调用 deleteLocalMsgsBySession

    示例场景

    Parameters

    • _options: { end?: number; sessionId: string; start?: number; updateSession?: boolean; done?: any }
      • Optional end?: number

        结束时间戳

      • sessionId: string

        session.id

      • Optional start?: number

        开始时间戳

      • Optional updateSession?: boolean

        是否同步更新会话,默认 true

      • done?:function

    Returns void

  • deleteLocalMsgsBySession(_options: { delLastMsg?: boolean; isTag?: boolean; scene: "p2p" | "team" | "superTeam"; to: string; done?: any }): void
  • 删除某个会话下所有的本地消息

    注:如果运行环境不支持数据库,或者未开启数据库, 执行成功,但不会返回或者操作有效的数据。

    Parameters

    • _options: { delLastMsg?: boolean; isTag?: boolean; scene: "p2p" | "team" | "superTeam"; to: string; done?: any }
      • Optional delLastMsg?: boolean

        是否同时会删除 session.lastMsg。默认 false

      • Optional isTag?: boolean

        是否为标记删除,默认 false

        注:为 true 是物理删除,无法能留存为这条消息插入的 localCustom 本地自定义的扩展字段。为 false 是逻辑删除。

      • scene: "p2p" | "team" | "superTeam"

        消息场景

      • to: string

        聊天对象。若是点对点消息请传入对方的账号,若是群消息则传入群id

      • done?:function

    Returns void

  • deleteLocalMsgsByTime(_options: { end?: number; start?: number; deletedone?: any; done?: any }): Promise<void>
  • 删除指定时间的数据库消息

    注:如果运行环境不支持数据库,或者未开启数据库, 执行成功,但不会返回或者操作有效的数据。

    Parameters

    • _options: { end?: number; start?: number; deletedone?: any; done?: any }
      • Optional end?: number
      • Optional start?: number

        开始时间戳,不填默认为 0

      • deletedone?:function
        • deletedone(data: { deletedMsgCount: number }): void
        • Parameters

          • data: { deletedMsgCount: number }
            • deletedMsgCount: number

          Returns void

      • done?:function
        • done(err: null | NIMCommonError | Error, data: null | { deletedMsgCount: number; sessionUpdateCount: number }): void
        • Parameters

          • err: null | NIMCommonError | Error
          • data: null | { deletedMsgCount: number; sessionUpdateCount: number }

          Returns void

    Returns Promise<void>

  • deleteLocalSession(_options: { id: string; isDeleteRoaming?: boolean; isLogic?: boolean; done?: any }): void
  • deleteLocalSysMsg(_options: { idServer: string | string[]; done?: any }): void
  • deleteLocalTeam(_options: { teamId: string | string[]; done?: any }): void
  • deprecated

    已废弃

    Parameters

    • _options: { teamId: string | string[]; done?: any }
      • teamId: string | string[]

        建议传入 teamId 数组。

        注: 为了兼容老接口, 允许传入 string, 但是建议传入数组

      • done?:function

    Returns void

  • deleteMsg(_options: { apnsText?: string; attach?: string; env?: string; msg: NIMMessage; ps?: string; pushPayload?: string; done?: any }): void
  • deprecated

    该方法已废弃,请使用 recallMsg

    Parameters

    • _options: { apnsText?: string; attach?: string; env?: string; msg: NIMMessage; ps?: string; pushPayload?: string; done?: any }
      • Optional apnsText?: string

        自定义推送文案

      • Optional attach?: string

        附加信息,推荐使用 JSON 格式化字符串

      • Optional env?: string

        抄送环境

      • msg: NIMMessage

        待撤回的消息

      • Optional ps?: string

        附言

      • Optional pushPayload?: string

        第三方自定义的推送属性,限制使用 JSON 格式化的字符串

      • done?:function

    Returns void

  • deleteMsgSelf(_options: { custom?: string; msg: NIMMessage; done?: any }): void
  • deleteMsgSelfBatch(_options: { custom?: string; msgs: NIMMessage[]; done?: any }): void
  • deleteNosAccessToken(_options: { token: string; done: any }): void
  • deprecated

    获取短链接的鉴权 token。v8.10.0 后废弃,使用新接口 getFileAuthToken 后不需要主动删除 token

    Parameters

    • _options: { token: string; done: any }
      • token: string

        文件 url

      • done:function
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: { resUrl: string; token: string }
            • resUrl: string

              完整可访问的链接

            • token: string

          Returns void

    Returns void

  • deleteQuickComment(_options: { apnsText?: string; body: number; custom?: string; msg: NIMMessage; needBadge?: boolean; needPush?: boolean; pushPayload?: NIMStrAnyObj; pushTitle?: string; done?: any }): void
  • 删除一个快捷评论

    Parameters

    • _options: { apnsText?: string; body: number; custom?: string; msg: NIMMessage; needBadge?: boolean; needPush?: boolean; pushPayload?: NIMStrAnyObj; pushTitle?: string; done?: any }
      • Optional apnsText?: string

        自定义推送文案

      • body: number

        评论的内容。

        注:输入整数,开发者需要自定义映射规则。如 1 为点赞的表情、2 对应鼓掌的表情等

      • Optional custom?: string

        扩展内容

      • msg: NIMMessage

        被回复的消息

      • Optional needBadge?: boolean

        是否需要消息计数(APP 的角标计数),默认 false

      • Optional needPush?: boolean

        是否需要推送,默认 false。

      • Optional pushPayload?: NIMStrAnyObj

        第三方自定义的推送属性,限制 json

      • Optional pushTitle?: string

        推送的标题

      • done?:function
        • done(err: null | NIMCommonError | Error | NIMStrAnyObj, data: { comment: { body: number; custom?: string; from: string; time: number }; msg: { from: string; idServer: string; scene: "p2p" | "team" | "superTeam"; time: number; to: string } }): void
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: { comment: { body: number; custom?: string; from: string; time: number }; msg: { from: string; idServer: string; scene: "p2p" | "team" | "superTeam"; time: number; to: string } }
            • comment: { body: number; custom?: string; from: string; time: number }

              评论内容

              • body: number

                快捷评论内容

              • Optional custom?: string

                扩展内容

              • from: string

                该评论的发送方的 account ID

              • time: number

                评论的发送时间。

            • msg: { from: string; idServer: string; scene: "p2p" | "team" | "superTeam"; time: number; to: string }

              消息, 摘取 NIMMessage 结构里的几个字段,且 idServer 在这里必须存在。

              • from: string

                消息发送方, 帐号

              • idServer: string

                服务器用于区分消息用的ID, 用于获取历史消息和获取包含关键词的历史消息。

                注:此字段可能没有, 比如说消息被反垃圾过滤了。

              • scene: "p2p" | "team" | "superTeam"

                消息场景:

                • p2p:单聊场景
                • team:群聊场景
                • superteam:超大群场景
              • time: number

                时间戳

              • to: string

                消息接收方, 帐号或群id

          Returns void

    Returns void

  • deleteServerSessions(_options: { sessions: { scene: "p2p" | "team" | "superTeam"; to: string }[]; done: any }): void
  • deleteSession(_options: { scene: "p2p" | "team" | "superTeam"; to: string; done?: any }): void
  • deleteSessions(_options: { sessions: NIMSession[]; done?: any }): void
  • deleteSessionsWithMoreRoaming(_options: { id: string; done?: any }): void
  • deleteStickTopSession(_options: { id: string; done: any }): void
  • destroy(_options: { done?: any }): void
  • 断开IM连接,并销毁IM实例。销毁实例后,无法调用 connect 重新连接。

    注意,在9.9.0以及之前版本,调用 destroy 后,会直接触发 ondisconnect 回调函数,但此时长连接并未真正销毁。只有在 done 回调触发时才能保证长连接真正销毁。为了避免重连时多端互踢,用户应该在 destroy 的 done 回调中设置重连等操作

    关联函数

    Parameters

    Returns void

  • disconnect(_options: { done?: any }): void
  • 断开IM连接,但不销毁IM实例。调用 connect 重新登录后,会基于实例状态增量同步数据

    注意,在9.9.0以及之前版本,调用 destroy 后,会直接触发 ondisconnect 回调函数,但此时长连接并未真正销毁。只有在 done 回调触发时才能保证长连接真正销毁。为了避免重连时多端互踢,用户应该在 destroy 的 done 回调中设置重连等操作

    关联函数

    注意事项

    Parameters

    Returns void

  • dismissTeam(_options: { teamId: string; done?: any }): void
  • Return an array listing the events for which the emitter has registered listeners.

    Returns keyof NIMSignalingEventInterface[]

  • filterClientAntispam(_options: { content: string }): { code: number; content: string; errmsg: string; result: string; type: number }
  • 检查客户端反垃圾。客户端反垃圾具体用法请参考 反垃圾(内容审核)

    注: 调用此接口前,需要调用过一次 getClientAntispamLexicon 来获取反垃圾词库. 否则会出现 404 没有反垃圾词库

    示例场景

    Parameters

    • _options: { content: string }
      • content: string

        待检查文本.

    Returns { code: number; content: string; errmsg: string; result: string; type: number }

    • code: number

      请求的处理状态

    • content: string

      待检查文本.

    • errmsg: string

      建议处理提示

    • result: string

      建议放行的文本

    • type: number

      建议处理类型

      0 放行. 1 对特殊字符过了过滤后放行 2 建议拒绝发送 3 命中客户端反垃圾,交给服务器处理,在发送消息时带上 clientAntiSpam 字段来表示命中.

  • forwardMsg(_options: { msg: NIMMessage; scene: "p2p" | "team" | "superTeam"; to: string; done?: any }): NIMMessage
  • getAllSuperTeamMembers(_options: { teamId: string; done?: any }): void
  • getChatroomAddress(_options: { chatroomId: string; done: any }): void
  • 获取聊天室的连接地址,返回可用的连接地址列表

    depreacated

    推荐开发者使用 服务器接口 查询聊天室地址

    Parameters

    • _options: { chatroomId: string; done: any }
      • chatroomId: string

        聊天室 id

      • done:function
        • done(err: null | NIMCommonError | Error | NIMStrAnyObj, data: { address: string[]; chatroomId: string; ipType: number; isWeixinApp: boolean; type: number }): void
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: { address: string[]; chatroomId: string; ipType: number; isWeixinApp: boolean; type: number }
            • address: string[]

              地址列表

            • chatroomId: string

              聊天室 id

            • ipType: number

              0 代表想要获取 ipv4 的连接,1 代表 ipv6,2 代表不限制。

              默认 0

            • isWeixinApp: boolean

              是否是提供给微信环境下用的链接

            • type: number

          Returns void

    Returns void

  • getClientAntispamLexicon(_options: { done: any }): void
  • 获取反垃圾词库。开发者可以通过此接口获取反垃圾的词库。调用后,词库加载后会自动保存在内存中

    详细用法请参考: 反垃圾(内容审核)

    示例场景

    Parameters

    • _options: { done: any }
      • done:function
        • done(err: null | NIMCommonError | Error | NIMStrAnyObj, data: { clientAntispam: { md5: string; nosurl: string; thesaurus: string; version: string } }): void
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: { clientAntispam: { md5: string; nosurl: string; thesaurus: string; version: string } }
            • clientAntispam: { md5: string; nosurl: string; thesaurus: string; version: string }
              • md5: string

                词库文件的md5

              • nosurl: string

                词库文件的下载地址

              • thesaurus: string

                词库内容, 可以被解析为 JSON 对象

              • version: string

                词库版本

          Returns void

    Returns void

  • getCollects(_options: { beginTime?: number; endTime?: number; lastId?: string; limit?: number; reverse?: boolean; type?: number; done?: any }): void
  • 查询收藏列表

    Parameters

    • _options: { beginTime?: number; endTime?: number; lastId?: string; limit?: number; reverse?: boolean; type?: number; done?: any }
      • Optional beginTime?: number

        开始时间的时间戳, 精确到ms, 默认为0

      • Optional endTime?: number

        结束时间的时间戳, 精确到ms, 默认为服务器最新时间

      • Optional lastId?: string

        上次查询的最后一条收藏的id

        注:从第二页开始建议填写,便于服务器区分相同时间戳的两条记录。

      • Optional limit?: number

        本次查询的消息数量限制, 默认100条

      • Optional reverse?: boolean

        排列顺序。默认为 false

        为 true 则代表按时间戳升序查询,从 beginTime 开始查询到 endTime 之间的 limit 条记录

        为 false 则代表按时间戳降序查询,从 endTime 开始查询到 beginTime 之间的 limit 条记录

      • Optional type?: number

        类型,开发者可自定义映射关系,只能是整数. 缺省表示查询所有的类型

      • done?:function

    Returns void

  • getFriends(_options: { updateTime?: number; done?: any }): void
  • 如果开发者在初始化SDK的时候设置了syncFriends为false, 那么就收不到onfriends回调, 可以调用此接口来获取好友列表

    注:由于 v8.9.0 之后好友数量上限变为 10000,远端协议不允许一口气下发 10000 个。想要一口气获取有两种手段:

    1. 如果开发者使用数据库,那么此接口将会返回所有数据库中有效的,且 updateTime > options.updateTime 的好友记录

    2. 如果开发者不使用数据库,那么使用此接口,传入时间戳,将会从服务器获取 updateTime > options.timetag 的 3000 条记录,分页逻辑请自行处理。

    Parameters

    Returns void

  • getHistoryMsgs(_options: { asc?: boolean; beginTime?: number; endTime?: number; lastMsgId?: string; limit?: number; msgTypes?: ("custom" | "text" | "image" | "audio" | "video" | "geo" | "notification" | "file" | "tip" | "robot" | "g2")[]; reverse?: boolean; scene: "p2p" | "team" | "superTeam"; to: string; done?: any }): void
  • 获取存储在云信服务端的历史消息。由参数beginTime和endTime来控制时间范围。

    • 当reverse为false时, 后续查询的endTime对应上次查询的最后一条消息的time字段
    • 当reverse为true时, 后续查询的beginTime对应上次查询的最后一条消息的time字段
    • 如果要搜索历史消息, 请参考获取 MessageLogInterface.msgFtsInServer

    使用场景

    用户进入会话首次渲染消息列表或者用户“下拉查看更多消息”时,需要调用该 API。

    注意

    • 该 API 获取云端的历史,但不会往本地数据库中插入。
    • 该 API 通过 options.done 回调返回查询到的历史消息列表。
    • 初始化阶段,若在同步完成之前调用此函数,可能会话的已读状态会不准确

    示例场景

    Parameters

    • _options: { asc?: boolean; beginTime?: number; endTime?: number; lastMsgId?: string; limit?: number; msgTypes?: ("custom" | "text" | "image" | "audio" | "video" | "geo" | "notification" | "file" | "tip" | "robot" | "g2")[]; reverse?: boolean; scene: "p2p" | "team" | "superTeam"; to: string; done?: any }
      • Optional asc?: boolean

        排序顺序。默认 false

        false 表示返回的消息按时间降序排序;

        true 表示按时间升序排序

      • Optional beginTime?: number

        开始时间的时间戳. 精确到 ms, 默认为 0

      • Optional endTime?: number

        结束时间的时间戳. 精确到 ms, 默认为 0

      • Optional lastMsgId?: string

        上次查询的最后一条消息的 idServer, 第一次不填

      • Optional limit?: number

        分页查询数量限制,默认 100 条记录

      • Optional msgTypes?: ("custom" | "text" | "image" | "audio" | "video" | "geo" | "notification" | "file" | "tip" | "robot" | "g2")[]

        指定消息类型。默认不填写就是查找全部消息类型

      • Optional reverse?: boolean

        查询顺序。默认 false 代表降序

        false 从 endTime 开始往前查找 limit 条历史消息

        true 从 beginTime 开始往后查找 limit 条历史消息

      • scene: "p2p" | "team" | "superTeam"

        消息场景

      • to: string

        聊天对象。若是点对点消息请传入对方的账号,若是群消息则传入群id

      • done?:function

    Returns void

  • getLocalMsgs(_options: { desc?: boolean; end?: number; keyword?: string; limit?: number; sessionId?: string; start?: number; subTypes?: number[]; types?: ("custom" | "text" | "image" | "audio" | "video" | "geo" | "notification" | "file" | "tip" | "robot" | "g2")[]; done?: any }): void
  • 描述

    从本地数据库拉取历史消息。

    使用场景

    用户进入会话首次渲染消息列表或者用户“下拉查看更多消息”时,需要调用该 API。

    注意

    如果运行环境不支持数据库,或者未开启数据库, 调用能够执行成功,但不会返回或者操作有效的数据。

    Parameters

    • _options: { desc?: boolean; end?: number; keyword?: string; limit?: number; sessionId?: string; start?: number; subTypes?: number[]; types?: ("custom" | "text" | "image" | "audio" | "video" | "geo" | "notification" | "file" | "tip" | "robot" | "g2")[]; done?: any }
      • Optional desc?: boolean

        true 表示从 end 开始查, false 表示从 begin 开始查

      • Optional end?: number

        结束时间戳

      • Optional keyword?: string

        [indexedDB专用]如果提供参数, 那么查询匹配该关键词的消息

        注:这个参数提供的查询是正向索引模式的,数据量大时查询将会相当慢。若是需要支持全文检索(倒排索引结构)的,参见 fts 相关接口

      • Optional limit?: number

        分页限制

      • Optional sessionId?: string

        如果提供该参数, 那么查询该会话的消息

      • Optional start?: number

        开始时间戳

      • Optional subTypes?: number[]

        [indexedDB专用]如果提供该参数, 那么查询这几种子类型的消息

      • Optional types?: ("custom" | "text" | "image" | "audio" | "video" | "geo" | "notification" | "file" | "tip" | "robot" | "g2")[]

        [indexedDB专用]如果提供该参数, 那么查询该类型的消息

      • done?:function

    Returns void

  • getLocalMsgsByIdClients(_options: { idClients: string[]; done?: any }): void
  • 描述

    根据客户端为消息生成的 ID 的列表(idClients)获取本地的历史消息列表。

    注意

    如果运行环境不支持数据库,或者未开启数据库, 调用能执行成功,但不会返回或者操作有效的数据。

    Parameters

    Returns void

  • getLocalSession(_options: { sessionId: string; done: any }): void
  • getLocalSessions(_options: { lastSessionId?: string; limit?: number; reverse?: boolean; done: any }): void
  • 分页查询会话列表

    Parameters

    • _options: { lastSessionId?: string; limit?: number; reverse?: boolean; done: any }
      • Optional lastSessionId?: string

        上一页最后一条会话的 id,第一次查询可以不填。

      • Optional limit?: number

        分页查询数量限制,默认 100 条记录

      • Optional reverse?: boolean

        查询顺序。默认 false 代表降序

        false 即从最近的会话开始往前查找本地会话

        true 表示从第一条会话开始往后查找本地会话

      • done:function

    Returns void

  • getLocalSysMsgs(_options: { lastIdServer?: string; limit?: number; read?: boolean; reverse?: boolean; type?: "custom" | "addFriend" | "applyFriend" | "passFriendApply" | "rejectFriendApply" | "deleteFriend" | "teamInvite" | "rejectTeamInvite" | "applyTeam" | "rejectTeamApply" | "applySuperTeam" | "rejectSuperTeamApply" | "superTeamInvite" | "rejectSuperTeamInvite" | "deleteMsg"; done?: any }): void
  • 获取本地数据库里的系统通知

    Parameters

    • _options: { lastIdServer?: string; limit?: number; read?: boolean; reverse?: boolean; type?: "custom" | "addFriend" | "applyFriend" | "passFriendApply" | "rejectFriendApply" | "deleteFriend" | "teamInvite" | "rejectTeamInvite" | "applyTeam" | "rejectTeamApply" | "applySuperTeam" | "rejectSuperTeamApply" | "superTeamInvite" | "rejectSuperTeamInvite" | "deleteMsg"; done?: any }
      • Optional lastIdServer?: string

        上次查询的最后一条系统通知的 idServer

      • Optional limit?: number

        一页查询数量限制,默认 100

      • Optional read?: boolean

        是否已读.

      • Optional reverse?: boolean

        查询顺序

        默认 false. 表示从最近的系统通知开始往前查找本地系统通知. 若为 true 表示从第一条系统通知开始往后查找本地系统通知

      • Optional type?: "custom" | "addFriend" | "applyFriend" | "passFriendApply" | "rejectFriendApply" | "deleteFriend" | "teamInvite" | "rejectTeamInvite" | "applyTeam" | "rejectTeamApply" | "applySuperTeam" | "rejectSuperTeamApply" | "superTeamInvite" | "rejectSuperTeamInvite" | "deleteMsg"

        类型

      • done?:function

    Returns void

  • getLocalTeamMembers(_options: { accounts: string[]; teamId: string; done?: any }): void
  • getLocalTeams(_options: { teamIds: string[]; done: any }): void
  • getMsgPins(_options: { id: string; done?: any }): void
  • getMsgsByIdServer(_options: { reqMsgs: { from: string; idServer: string; scene: "p2p" | "team" | "superTeam"; time: number; to: string }[] }): void
  • 通过消息 id 等信息批量查询历史消息,thread 聊天专用

    Parameters

    • _options: { reqMsgs: { from: string; idServer: string; scene: "p2p" | "team" | "superTeam"; time: number; to: string }[] }
      • reqMsgs: { from: string; idServer: string; scene: "p2p" | "team" | "superTeam"; time: number; to: string }[]

        查询参数,摘取 NIMMessage 结构里的几个字段,且 idServer 在这里必填。

    Returns void

  • getMutedSuperTeamMembers(_options: { joinTime?: number; limit?: number; reverse?: boolean; teamId: string; done?: any }): void
  • getMutedTeamMembers(_options: { teamId: string; done?: any }): void
  • getMySuperTeamMembers(options: { teamIds: string[]; done: any }): void
  • getMyTeamMembers(options: { teamIds: string[]; done: any }): void
  • getNosAccessToken(_options: { ext?: string; url: string; userAgent?: string; done: any }): void
  • deprecated

    获取文件的短链接的鉴权 token。v8.10.0 后废弃,请使用 {@link CloudStorageInterface.getFileAuthToken}

    Parameters

    • _options: { ext?: string; url: string; userAgent?: string; done: any }
      • Optional ext?: string
      • url: string

        文件 url

      • Optional userAgent?: string
      • done:function
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: { resUrl: string; token: string }
            • resUrl: string

              完整可访问的链接

            • token: string

          Returns void

    Returns void

  • getNosOriginUrl(_options: { safeShortUrl: string; done: any }): void
  • getQuickComments(_options: { msgs: NIMMessage[]; done?: any }): void
  • 批量查询消息的快捷评论

    Parameters

    • _options: { msgs: NIMMessage[]; done?: any }
      • msgs: NIMMessage[]

        被回复的消息

      • done?:function
        • done(err: null | NIMCommonError | Error | NIMStrAnyObj, data: { commentTimetag: number; comments: { body: number; custom?: string; from: string; time: number }[]; idClient: string; idServer: string }): void
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: { commentTimetag: number; comments: { body: number; custom?: string; from: string; time: number }[]; idClient: string; idServer: string }
            • commentTimetag: number

              快捷评论的最近更新时间

            • comments: { body: number; custom?: string; from: string; time: number }[]

              评论内容

              • body: 快捷评论内容
              • custom: 扩展内容
              • from: 该评论的发送方的 account ID
              • time: 评论的发送时间
            • idClient: string

              被评论的消息的 idClient

            • idServer: string

              被评论的消息的 idServer

          Returns void

    Returns void

  • getRelations(_options: { done?: any }): void
  • 获取黑名单和静音列表。如果开发者在初始化SDK的时候设置了syncRelations为false, 那么就收不到onblacklist和onmutelist回调, 可以调用此接口来获取黑名单和静音列表。

    Parameters

    • _options: { done?: any }
      • done?:function
        • done(err: null | NIMCommonError | Error | NIMStrAnyObj, data: { blacklist: { account: string; createTime: number; isBlack?: boolean; isMuted?: boolean; updateTime: number }[]; mutelist: { account: string; createTime: number; isBlack?: boolean; isMuted?: boolean; updateTime: number }[] }): void
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: { blacklist: { account: string; createTime: number; isBlack?: boolean; isMuted?: boolean; updateTime: number }[]; mutelist: { account: string; createTime: number; isBlack?: boolean; isMuted?: boolean; updateTime: number }[] }
            • blacklist: { account: string; createTime: number; isBlack?: boolean; isMuted?: boolean; updateTime: number }[]
              • account: IM account
              • isMuted: 是否被静音
              • isBlack: 是否被拉入黑名单
            • mutelist: { account: string; createTime: number; isBlack?: boolean; isMuted?: boolean; updateTime: number }[]
              • account: IM account
              • isMuted: 是否被静音
              • isBlack: 是否被拉入黑名单

          Returns void

    Returns void

  • getServerSession(_options: { scene: "p2p" | "team" | "superTeam"; to: string; done: any }): void
  • getServerSessions(_options: { limit?: number; maxTimestamp?: number; minTimestamp?: number; needLastMsg?: boolean; done: any }): void
  • 查询云端会话列表

    Parameters

    • _options: { limit?: number; maxTimestamp?: number; minTimestamp?: number; needLastMsg?: boolean; done: any }
      • Optional limit?: number

        分页大小,默认 100

      • Optional maxTimestamp?: number

        最大的时间戳。与 minTimestamp 组成一个时间段作为查询条件。

        默认当前时间戳

      • Optional minTimestamp?: number

        最小的时间戳。与 maxTimestamp 组成一个时间段作为查询条件。

        默认 0 表示不限制。

      • Optional needLastMsg?: boolean

        是否需要返回 last msg。默认 true

      • done:function

    Returns void

  • getServerTime(_options: { done: any }): void
  • getSessionsWithMoreRoaming(_options: { id: string; done?: any }): void
  • getStickTopSessions(_options: { done: any }): void
  • getSuperTeam(_options: { teamId: string; done: any }): void
  • getSuperTeamMembersByAccounts(_options: { accounts: string[]; teamId: string; done?: any }): void
  • getSuperTeamMembersByJoinTime(_options: { joinTime?: number; limit?: number; reverse?: boolean; teamId: string; done?: any }): void
  • 根据进群时间,分页获取超大群成员

    Parameters

    • _options: { joinTime?: number; limit?: number; reverse?: boolean; teamId: string; done?: any }
      • Optional joinTime?: number

        加入时间.

        注: 如果传入这个参数, 获取在这个时间之后加入的成员, 不传则不限制

      • Optional limit?: number

        分页限制, 默认 100, 返回 100 条数据

      • Optional reverse?: boolean

        查询顺序。默认 false

        false 即查询 joinTime 之后加入的成员

        true 即查询 joinTime 之前加入的成员

      • teamId: string
      • done?:function

    Returns void

  • getSuperTeams(_options: { done?: any }): void
  • 获取超级群列表。如果开发者在初始化SDK的时候设置了syncSuperTeams为false, 那么就收不到onSuperTeams回调, 可以调用此接口来获取超大群列表

    注: 没有本地 db 时,将会全量获取服务器的超级群列表

    Parameters

    Returns void

  • getTeam(_options: { sync?: boolean; teamId: string; done?: any }): void
  • getTeamMemberByTeamIdAndAccount(_options: { account: string; teamId: string; done?: any }): void
  • getTeamMemberInvitorAccid(_options: { accounts: string[]; teamId: string; done?: any }): void
  • 获取群成员的邀请者accid

    Parameters

    • _options: { accounts: string[]; teamId: string; done?: any }
      • accounts: string[]

        需要查询的群成员 account ID 账号列表.

        注: 每 200 个触发一次 done 回调提供.

      • teamId: string
      • done?:function
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: {}
            • [key: string]: string

              key 为入参里的 account ID, value 为邀请者的 account ID

          Returns void

    Returns void

  • getTeamMembers(_options: { teamId: string; done?: any }): void
  • getTeamMsgReadAccounts(_options: { teamMsgReceipt: { idClient?: string; idServer: string; teamId: string }; done?: any }): void
  • getTeamMsgReads(_options: { teamMsgReceipts: { idClient?: string; idServer: string; teamId: string }[]; done?: any }): void
  • 查询群组消息的已读、未读数量。

    • 对应于群组消息发送时配置了needMsgReceipt字段的群组消息,接收方可以对消息发送已读回执
    • done 回调的第二个参数是发送的参数,用于校验,第三个参数才是实际的结果
    • 在支持db,且存在idClient时:
      • 查询完成后,db中对应的msg会拥有 read和unread属性,分别对应消息的已读未读人数
      • unread为 0 后,消息的已读、未读数量便不会再变化了,因此建议在调用该接口前,过滤掉unread已为0的消息,减少不必要的性能消耗

    示例场景

    Parameters

    • _options: { teamMsgReceipts: { idClient?: string; idServer: string; teamId: string }[]; done?: any }
      • teamMsgReceipts: { idClient?: string; idServer: string; teamId: string }[]

        待查询的群消息列表

      • done?:function
        • 注意这个回调的真实返回数据在第三个参数

          Parameters

          Returns void

    Returns void

  • getTeams(_options: { done?: any }): void
  • 获取群列

    • 如果开发者在初始化SDK的时候设置了syncTeams为false, 那么就收不到onteams回调, 可以调用此接口来获取群列表

    注: 没有本地 db 时,将会全量获取服务器的群列表

    Parameters

    Returns void

  • getTeamsById(_options: { teamIds: string[]; done?: any }): void
  • 通过一批 teamId 来获取若干个群

    • 开发者可以调用此接口获取若干个群的资料

    注: v8.2.0+ 支持

    Parameters

    • _options: { teamIds: string[]; done?: any }

    Returns void

  • getTeamsFromDB(options: { teamIds?: string[]; done: any }): void
  • getThreadMsgs(_options: { beginTime?: number; endTime?: number; lastMsgId?: string; limit?: number; reverse?: boolean; scene: "p2p" | "team" | "superTeam"; threadMsgFromAccount: string; threadMsgIdServer: string; threadMsgTime: number; threadMsgToAccount: string; done?: any }): void
  • 获取 thread 消息列表

    Parameters

    • _options: { beginTime?: number; endTime?: number; lastMsgId?: string; limit?: number; reverse?: boolean; scene: "p2p" | "team" | "superTeam"; threadMsgFromAccount: string; threadMsgIdServer: string; threadMsgTime: number; threadMsgToAccount: string; done?: any }
      • Optional beginTime?: number

        时间戳, 开始时间, 精确到 ms, 默认为0

      • Optional endTime?: number

        时间戳, 结束时间, 精确到 ms, 默认为服务器的当前时间

      • Optional lastMsgId?: string

        上次查询的最后一条消息的 idServer, 第一次不填

      • Optional limit?: number

        本次查询的消息数量限制, 最多100条, 默认100条

      • Optional reverse?: boolean

        默认false表示从 endTime 开始往前查找历史消息,true 表示从 beginTime 开始往后查找历史消息

      • scene: "p2p" | "team" | "superTeam"

        场景

      • threadMsgFromAccount: string

        thread根消息的from,即发送者账号

      • threadMsgIdServer: string

        thread根消息的 idServer

      • threadMsgTime: number

        thread根消息的time

      • threadMsgToAccount: string

        thread根消息的to,即接受者账号

      • done?:function

    Returns void

  • getUser(_options: { account: string; sync?: boolean; done?: any }): void
  • getUsers(_options: { accounts: string[]; sync?: boolean; done?: any }): void
  • 获取一批用户的名片, 每次最多 150 个.

    Parameters

    • _options: { accounts: string[]; sync?: boolean; done?: any }

    Returns void

  • insertLocalSession(_options: { scene: "p2p" | "team" | "superTeam"; to: string; done?: any }): void
  • 往本地数据库 indexdb 中插入一个会话

    • 如果不支持数据库, 则会在 sdk 内存中插入一条会话。不推荐没有 db 时使用该函数。用户应该在自己的内存数据中维护会话列表。

    • 如果会话已存在, 那么会返回错误

    • 如果有对应会话的本地历史消息, 那么会更新会话的 lastMsg 为最后一条消息

    • 插入成功后, 会触发onupdatesession回调

    Parameters

    Returns void

  • interlaceImage(_options: { url: string; done?: any }): void
  • interlace 图片

    • 只支持通过预览文件或发送文件消息拿到的图片 url, 或者经过其他图片操作后拿到的图片 url
    • 在网络环境较差时, interlace 后的图片会以从模糊到清晰的方式呈现给用户

    Parameters

    Returns void

  • isMsgRemoteRead(_options: { msg: NIMMessage }): boolean
  • deprecated

    此接口用于查询p2p消息是否已接收已读回执,目前已废弃

    查询已读回执

    如何判断消息是否接收已读回执?当 msg.scene === 'p2p' && msg.flow === 'out' && msg.time <= session.msgReceiptTime 时,即可认为消息已收到已读回执

    Parameters

    Returns boolean

  • isMyFriend(_options: { account: string; done?: any }): void
  • 是否为我的好友

    注:该接口需要数据库支持,若没有开启本地数据库能力,done 回调里只会返回 false

    Parameters

    Returns void

  • isUserInBlackList(_options: { account: string; done?: any }): void
  • 查看某人是否在当前用户在黑名单里

    注:该接口需要数据库支持,若没有开启本地数据库能力,done 回调里只会返回 false

    Parameters

    Returns void

  • kick(_options: { deviceIds: []; done?: any }): void
  • leaveSuperTeam(_options: { teamId: string; done?: any }): void
  • leaveTeam(_options: { teamId: string; done?: any }): void
  • Return the number of listeners listening to a given event.

    Parameters

    Returns number

  • logout(): void
  • deprecated

    退出登录。

    注:SDK 版本 v9.6.0 以下推荐先调用 logout 再调用 disconnect/destroy 来保证退出。v9.6.0 及以上不需要调用这个 API,disconnect/destroy 断开前会自动调用。

    Returns void

  • markMsgRead(_options: { msgs: NIMMessage[]; done?: any }): void
  • msgFtsInServer(_options: { fromTime?: number; keyword: string; msgLimit?: number; msgSubTypeList?: string[]; msgTypeList?: string[]; order?: string; p2pList?: string[]; senderList?: string[]; sessionLimit?: number; teamList?: string[]; toTime?: number; done?: any }): void
  • 描述

    云端全文检索消息(full-text search)。返回的消息会按会话(session)分类返回,不按时间分页。

    使用场景

    用户登录后针对所有会话按照关键字等筛选条件,搜索某段时间内的存储在云信服务端的历史消息。

    前提条件

    已在云信控制台开通“全文云端检索消息”功能。

    配置路径:选择应用进入应用详情界面,并选择 IM 免费版/专业版 > 功能权限开通 > 拓展配置 > 全局 > 全文云端消息检索

    Parameters

    • _options: { fromTime?: number; keyword: string; msgLimit?: number; msgSubTypeList?: string[]; msgTypeList?: string[]; order?: string; p2pList?: string[]; senderList?: string[]; sessionLimit?: number; teamList?: string[]; toTime?: number; done?: any }
      • Optional fromTime?: number

        检索目标的开始时间,默认 0 代表不限制

      • keyword: string

        检索关键词

      • Optional msgLimit?: number

        单个会话返回的消息数量限制。默认 5。 举例传 1,每个会话返回 1 条匹配的消息。

      • Optional msgSubTypeList?: string[]

        消息子类型,此类型开发者在发送消息时可自定义,且格式为大于0的整数。示例:[1, 2]

      • Optional msgTypeList?: string[]

        消息类型 示例:['text', 'image', 'audio', 'video', 'geo', 'notification', 'file', 'tip', 'custom']

      • Optional order?: string

        查询的消息排序规则,默认 DESC 按消息时间降序。可选 ASC 升序。

      • Optional p2pList?: string[]

        搜索条件 P2P 会话列表,会话(p2p-accid1)的 account 示例:['accid1', 'accid2', 'accid3']

      • Optional senderList?: string[]

        消息发送者列表,account 列表 示例:['accid1', 'accid2', 'accid3']

      • Optional sessionLimit?: number

        会话数量限制。默认 10. 举例传入 5,检索返回 5 个会话的消息

      • Optional teamList?: string[]

        搜索条件 群列表。从这些 team(team-146694936) 里搜寻消息,示例:['146694936', '13897']

      • Optional toTime?: number

        检索目标的结束时间,默认 当前时间

      • done?:function

    Returns void

  • msgFtsInServerByTiming(_options: { fromTime?: number; keyword: string; msgLimit?: number; msgSubTypeList?: string[]; msgTypeList?: string[]; order?: string; p2pList?: string[]; senderList?: string[]; teamList?: string[]; toTime?: number; done?: any }): void
  • 描述

    云端全文检索消息(按时间分页搜索)。返回的消息结果按时间排序。

    使用场景

    用户登录后针对所有会话按照关键字等筛选条件,搜索某段时间内的存储在云信服务端的历史消息。

    前提条件

    已在云信控制台开通“全文云端检索消息”功能。

    配置路径:选择应用进入应用详情界面,并选择 IM 免费版/专业版 > 功能权限开通 > 拓展配置 > 全局 > 全文云端消息检索

    Parameters

    • _options: { fromTime?: number; keyword: string; msgLimit?: number; msgSubTypeList?: string[]; msgTypeList?: string[]; order?: string; p2pList?: string[]; senderList?: string[]; teamList?: string[]; toTime?: number; done?: any }
      • Optional fromTime?: number

        检索目标的开始时间,默认 0 代表不限制

      • keyword: string

        检索关键词

      • Optional msgLimit?: number

        单个会话返回的消息数量限制。默认 5。 举例传 1,每个会话返回 1 条匹配的消息。

      • Optional msgSubTypeList?: string[]

        消息子类型,此类型开发者在发送消息时可自定义,且格式为大于0的整数。示例:[1, 2]

      • Optional msgTypeList?: string[]

        消息类型 示例:['text', 'image', 'audio', 'video', 'geo', 'notification', 'file', 'tip', 'custom']

      • Optional order?: string

        查询的消息排序规则,默认 DESC 按消息时间降序。可选 ASC 升序。

      • Optional p2pList?: string[]

        搜索条件 P2P 会话列表,会话(p2p-accid1)的 account 示例:['accid1', 'accid2', 'accid3']

      • Optional senderList?: string[]

        消息发送者列表,account 列表 示例:['accid1', 'accid2', 'accid3']

      • Optional teamList?: string[]

        搜索条件 群列表。从这些 team(team-146694936) 里搜寻消息,示例:['146694936', '13897']

      • Optional toTime?: number

        检索目标的结束时间,默认 当前时间

      • done?:function

    Returns void

  • muteTeamAll(_options: { mute: boolean; teamId: string; done?: any }): void
  • notifyForNewTeamMsg(options: { teamIds: string[]; done: any }): void
  • packFileDownloadName(_options: { name: string; url: string }): string
  • passFriendApply(_options: { account: string; idServer: string; ps?: string; done?: any }): void
  • passSuperTeamApply(_options: { from: string; idServer: string; teamId: string; done?: any }): void
  • (管理员)通过超级群申请

    通过入群申请后:

    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 操作者账号
      • msg.to: 群id
      • msg.attach.type: 'passSuperTeamApply'
      • msg.attach.account: 申请方账号
      • msg.attach.members: 被通过申请的群成员列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onAddSuperTeamMembers
    4. 函数调用者触发 onupdatesysmsg

    Parameters

    • _options: { from: string; idServer: string; teamId: string; done?: any }

    Returns void

  • passTeamApply(_options: { from: string; idServer: string; teamId: string; done?: any }): void
  • (管理员)通过群申请

    通过入群申请后:

    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 操作者账号
      • msg.to: 群id
      • msg.attach.type: 'passTeamApply'
      • msg.attach.account: 申请方账号
      • msg.attach.members: 被通过申请的群成员列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onAddTeamMembers
    4. 函数调用者触发 onupdatesysmsg

    Parameters

    • _options: { from: string; idServer: string; teamId: string; done?: any }

    Returns void

  • 上传并且预览文件。开发者在拿到文件对象之后, 可以调用发送文件消息来发送文件消息。

    注意一

    • fileInput、file、blob、filePath四个参数选择一个传入
    • fileInput: type='file'类型的input DOM元素的id。上传完成前请不要操作此节点上的文件
    • file: previewFile 回调函数的参数
    • blob: Blob类型JS对象
    • filePath: RN,小程序等特殊的 JS 运行环境专用(chooseImage 拿到的该临时路径)

    注意二

    • type: image、audio、video 或 file。默认为 file。主要区别在于消息体中 file 对象含有的信息不同
    • image: url, name, size, ext, w, h, type
    • audio: url, name, size, ext, container, dur
    • video: url, name, size, ext, container, dur, w, h
    • file: url, name, size, ext

    注意三

    • 文件大小限制为最大 100M
    • 高级浏览器会在上传前就检测文件大小
    • IE8/IE9 会在上传完成后检测文件大小

    Parameters

    Returns void

  • processImage(_options: { ops: NIMStrAnyObj; url: string; done?: any }): void
  • 处理图片

    此方法接收一组图片操作, 按操作顺序依次处理图片, 可选的操作包括:

    • 修改图片质量
    • interlace 图片
    • 旋转图片
    • 高斯模糊图片
    • 裁剪图片
    • 生成缩略图
    • 预览文件
    • 发送文件消息

    每个操作所需的参数请参考上面的各个方法, 除了上面方法列出来的参数之外, 每个操作需要提供操作类型, 分别是

    • 'quality'
    • 'interlace'
    • 'rotate'
    • 'blur'
    • 'crop'
    • 'thumbnail'

    示例代码

    // 裁剪后旋转
    var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ0MzE0NTgyNDI0M184YjFkYTMwMS02NjcxLTRiYjktYTUwZC04ZTVlZjZlNzZjMzA=';
    nim.processImage({
    url: url,
    ops: [
    {
    type: 'crop',
    x: 100,
    y: 0,
    width: 250,
    height: 250,
    },
    {
    type: 'thumbnail',
    mode: 'cover',
    width: 80,
    height: 80
    }
    ],
    done: processImageDone
    });
    function processImageDone(error, obj) {
    console.log('处理图片' + (!error?'成功':'失败'), error, obj);
    }

    Parameters

    • _options: { ops: NIMStrAnyObj; url: string; done?: any }
      • ops: NIMStrAnyObj

        操作序列. 按操作顺序依次处理图片, 具体格式参照前面几个和 image 相关的处理接口

        类似这样的效果

        [ { type: 'crop', x: 100, y: 0, width: 250, height: 250, }, { type: 'thumbnail', mode: 'cover', width: 80, height: 80 } ]

      • url: string
      • done?:function

    Returns void

  • publishEvent(_options: { broadcastType?: number; custom?: string; sync?: boolean; type: number; validTime?: number; value: number; done?: any }): void
  • 发布事件,事件订阅者会收到 onpushevents 回调函数

    IM订阅事件分为两类:

    1. 在线状态订阅, 主要用于监听好友的在线状态。初始化阶段,只有订阅监听的账户在线时,才会收到在线订阅事件
      • type = 1, value = 1: 用户在线
      • type = 1, value = 2: 用户登出
      • type = 1, value = 3: 用户断开连接
    2. 用户自定义事件。如果云信系统内置的在线状态事件无法满足应用需求,需要自定义事件时,可以使用该 API 来发布自定义事件。用户自定义的订阅事件必须为 type = 1, value >= 10000

    关联函数

    Parameters

    • _options: { broadcastType?: number; custom?: string; sync?: boolean; type: number; validTime?: number; value: number; done?: any }
      • Optional broadcastType?: number

        广播类型

        1: 仅在线 2:在线和离线

      • Optional custom?: string

        用户自定义事件扩展属性

      • Optional sync?: boolean

        是否同步给自己

      • type: number

        事件类型, 目前只有 1。

      • Optional validTime?: number

        发布事件的有效时间 单位秒 60s~7天(604800s),默认 7 天

      • value: number

        事件状态/事件内容,由开发者做自定义映射

        注:value 须为 10000 以上 (1-9999为云信预定义值,开发者不可使用,1代表上线,2代表下线,3代表断开连接)

      • done?:function

    Returns void

  • qualityImage(_options: { quality: number; url: string; done?: any }): void
  • 修改图片质量

    • 只支持通过预览文件或发送文件消息拿到的图片 url, 或者经过其他图片操作后拿到的图片 url
    • 默认图片质量为100, 开发者可以降低图片质量来省流量

    Parameters

    • _options: { quality: number; url: string; done?: any }
      • quality: number

        图片质量, 必须为整数, 取值范围为 0-100

      • url: string

        NOS 图片源链接

      • done?:function

    Returns void

  • querySubscribeEventsByAccounts(_options: { accounts: string[]; type: number; done?: any }): void
  • querySubscribeEventsByType(_options: { type: number; done?: any }): void
  • recallMsg(_options: { apnsText?: string; attach?: string; env?: string; msg: NIMMessage; ps?: string; pushPayload?: string; done?: any }): void
  • 描述

    撤回消息。

    使用场景

    消息发送后的可撤回时长(默认 2 分钟,可在云信控制台配置)内,发送方撤回已发送的单聊消息或者群消息。

    • 单聊场景下,发送方撤回之后,对应的离线消息、漫游消息和历史消息将被删除,消息接收方会收到一条类型为 deleteMsg 的系统通知。
    • 群聊场景下, 所有群成员都会收到类型为 deleteMsg 的系统通知。
    • 如果发送方同时在多个端登录了同一个 IM 账号, 那么其它端也会收到类型为 deleteMsg 的系统通知。

    注意

    单聊和群聊消息的撤回功能存在些许区别:

    • 单聊:用户只能撤回自己发送的消息。
    • 群聊:普通成员只能撤回自己发送的消息。管理员可撤回其他群成员的消息。

    使用限制

    • 如果消息发送失败或者消息发送者被拉黑,那么即使在可撤回时长内也无法撤回。
    • 消息撤回后,无论是发送方还是接收方,都无法在历史消息、漫游消息或者离线消息的接口返回中,查到该消息。
    • 以下情况下,消息撤回会失败:消息为空、消息没有发送成功、消息超过撤回时限,或者消息被反垃圾(内容审核)命中时。

    关联函数

    示例场景

    Parameters

    • _options: { apnsText?: string; attach?: string; env?: string; msg: NIMMessage; ps?: string; pushPayload?: string; done?: any }
      • Optional apnsText?: string

        自定义推送文案

      • Optional attach?: string

        附加信息,推荐使用 JSON 格式化字符串

      • Optional env?: string

        抄送环境

      • msg: NIMMessage

        待撤回的消息

      • Optional ps?: string

        附言

      • Optional pushPayload?: string

        第三方自定义的推送属性,限制使用 JSON 格式化的字符串

      • done?:function

    Returns void

  • rejectFriendApply(_options: { account: string; idServer: string; ps: string; done?: any }): void
  • rejectSuperTeamApply(_options: { from: string; idServer: string; ps?: string; teamId: string; done?: any }): void
  • 管理员拒绝超级群申请

    拒绝群申请后 :

    • 申请者会收到系统通知 onsysmsg
      • from: 拒绝方的账号
      • to: 群id
      • attach: 群信息
    • 函数调用者触发 onupdatesysmsg

    Parameters

    • _options: { from: string; idServer: string; ps?: string; teamId: string; done?: any }
      • from: string

        申请者的 accountId

      • idServer: string

        用户申请进群的系统通知的 idServer

      • Optional ps?: string

        附加信息

      • teamId: string
      • done?:function

    Returns void

  • rejectSuperTeamInvite(_options: { from: string; idServer: string; ps?: string; teamId: string; done?: any }): void
  • 拒绝入群邀请

    用户拒绝群邀请后:

    • 邀请者会收到系统通知 onsysmsg
      • type: 'rejectSuperTeamInvite'
      • from: 拒绝入群邀请的账号
      • to: 群id
    • 函数调用者触发 onupdatesysmsg

    Parameters

    • _options: { from: string; idServer: string; ps?: string; teamId: string; done?: any }
      • from: string

        申请者的 accountId

      • idServer: string

        管理员邀请此用户进群的系统通知的 idServer

      • Optional ps?: string

        附加信息

      • teamId: string
      • done?:function

    Returns void

  • rejectTeamApply(_options: { from: string; idServer: string; ps?: string; teamId: string; done?: any }): void
  • 管理员拒绝群申请

    拒绝群申请后 :

    • 申请者会收到系统通知 onsysmsg
      • from: 拒绝方的账号
      • to: 群id
      • attach: 群信息
    • 函数调用者触发 onupdatesysmsg

    Parameters

    • _options: { from: string; idServer: string; ps?: string; teamId: string; done?: any }
      • from: string

        申请者的 accountId

      • idServer: string

        用户申请进群的系统通知的 idServer

      • Optional ps?: string

        附加信息

      • teamId: string
      • done?:function

    Returns void

  • rejectTeamInvite(_options: { from: string; idServer: string; ps?: string; teamId: string; done?: any }): void
  • 拒绝入群邀请

    用户拒绝群邀请后:

    • 邀请者会收到系统通知 onsysmsg
      • type: 'rejectTeamInvite'
      • from: 拒绝入群邀请的账号
      • to: 群id
    • 函数调用者触发 onupdatesysmsg

    Parameters

    • _options: { from: string; idServer: string; ps?: string; teamId: string; done?: any }
      • from: string

        申请者的 accountId

      • idServer: string

        管理员邀请此用户进群的系统通知的 idServer

      • Optional ps?: string

        附加信息

      • teamId: string
      • done?:function

    Returns void

  • Remove all listeners, or those of the specified event.

    Parameters

    Returns NIM

  • removeFromBlacklist(_options: { account: string; done?: any }): void
  • 移出黑名单。调用后,初始化同步阶段收到 onblacklist 回调,多端同步阶段收到 onsyncmarkinblacklist 回调

    示例场景

    Parameters

    • _options: { account: string; done?: any }
      • account: string
      • done?:function
        • done(err: null | NIMCommonError | Error | NIMStrAnyObj, data: { account: string; isAdd: boolean; record: { account: string; updateTime: number } }): void
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: { account: string; isAdd: boolean; record: { account: string; updateTime: number } }
            • account: string

              被操作者账号 ID

            • isAdd: boolean

              是否加入名单(黑名单或者静音列表)

              true 代表某人被加入名单,false 代表某人被移出名单

            • record: { account: string; updateTime: number }

              该操作记录的详情

              • account: string

                被操作者账号 ID

              • updateTime: number

                更新时间戳

          Returns void

    Returns void

  • removeFromMutelist(_options: { account: string; done?: any }): void
  • 移出静音列表。调用后,初始化同步阶段收到 onmutelist 回调,多端同步阶段收到 onsyncmarkinmutelist 回调

    设置静音列表有两个作用:

    1. 开发者根据用户是否在静音列表,决定是否显示未读数等提示UI
    2. 静音列表中用户发送消息,不会触发推送服务

    示例场景

    Parameters

    • _options: { account: string; done?: any }
      • account: string
      • done?:function
        • done(err: null | NIMCommonError | Error | NIMStrAnyObj, data: { account: string; isAdd: boolean; record: { account: string; updateTime: number } }): void
        • Parameters

          • err: null | NIMCommonError | Error | NIMStrAnyObj
          • data: { account: string; isAdd: boolean; record: { account: string; updateTime: number } }
            • account: string

              被操作者账号 ID

            • isAdd: boolean

              是否加入名单(黑名单或者静音列表)

              true 代表某人被加入名单,false 代表某人被移出名单

            • record: { account: string; updateTime: number }

              该操作记录的详情

              • account: string

                被操作者账号 ID

              • updateTime: number

                更新时间戳

          Returns void

    Returns void

  • removeSuperTeamManagers(_options: { accounts: string[]; teamId: string; done?: any }): void
  • 移除超级群管理员

    添加管理员后:

    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 移除者账号
      • msg.to: 群id
      • msg.attach.type: 'removeSuperTeamManagers'
      • msg.attach.accounts: 被移除的管理员的帐号列表
      • msg.attach.members: 被移除管理员的群成员列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onUpdateSuperTeamManagers

    Parameters

    Returns void

  • removeSuperTeamMembers(_options: { accounts: string[]; teamId: string; done?: any }): void
  • removeSuperTeamMembersFollow(options: { accountIds: string[]; teamId: string; done: any }): void
  • removeTeamManagers(_options: { accounts: string[]; teamId: string; done?: any }): void
  • 移除群管理员

    添加群管理员后:

    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 移除者账号
      • msg.to: 群id
      • msg.attach.type: 'removeTeamManagers'
      • msg.attach.accounts: 被移除的管理员的帐号列表
      • msg.attach.members: 被移除管理员的群成员列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onUpdateTeamManagers

    Parameters

    Returns void

  • removeTeamMembers(_options: { accounts: string[]; teamId: string; done?: any }): void
  • 踢人出群

    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 操作者账号
      • msg.to: 群id
      • msg.attach.type: 'removeTeamMembers'
      • msg.attach.team: 群详情
      • msg.attach.accounts: 被踢人的账号数组
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onRemoveTeamMembers

    Parameters

    • _options: { accounts: string[]; teamId: string; done?: any }

    Returns void

  • removeTeamMembersFollow(options: { accountIds: string[]; teamId: string; done: any }): void
  • resetAllSessionUnread(): void
  • resetCurrSession(_sessionId: string): void
  • resetSessionUnread(_sessionId: string, _done: (err: null | Error, failedSessionId: string) => void): void
  • resetSessionsUnread(_sessionIds: string[], _done: (err: null | Error) => void): Promise<void>
  • resetSuperTeamSessionsUnread(_sessionIds: string[], _done: (err: null | Error) => void): Promise<void>
  • rotateImage(_options: { angle: number; url: string; done?: any }): void
  • 旋转图片

    • 只支持通过预览文件或发送文件消息拿到的图片 url, 或者经过其他图片操作后拿到的图片 url

    Parameters

    • _options: { angle: number; url: string; done?: any }

    Returns void

  • saveMsgsToLocal(_options: { msgs: NIMMessage[]; done?: any }): void
  • searchLocal(_options: { keyPath?: "session" | "session.lastMsg.type" | "session.id" | "session.scene" | "session.lastMsg.text" | "session.localCustom" | "session.target.account" | "session.target.nick" | "session.target.alias" | "session.target.name" | "user" | "user.account" | "user.nick" | "user.alias"; keyword: string; done?: any }): void
  • Parameters

    • _options: { keyPath?: "session" | "session.lastMsg.type" | "session.id" | "session.scene" | "session.lastMsg.text" | "session.localCustom" | "session.target.account" | "session.target.nick" | "session.target.alias" | "session.target.name" | "user" | "user.account" | "user.nick" | "user.alias"; keyword: string; done?: any }
      • Optional keyPath?: "session" | "session.lastMsg.type" | "session.id" | "session.scene" | "session.lastMsg.text" | "session.localCustom" | "session.target.account" | "session.target.nick" | "session.target.alias" | "session.target.name" | "user" | "user.account" | "user.nick" | "user.alias"

        搜索路径。若不填写则搜索下面所有的字段

      • keyword: string

        搜索关键词

      • done?:function

    Returns void

  • 描述

    当 SDK 提供的能力无法满足您的业务需求时,调用该 API 进行个性化定制并在单聊和群聊场景(包括群组和超大群)中发送,例如石头剪刀布和投骰子功能。

    注意

    该接口直接返回的是 sending 状态的未完成消息体,发送完毕的消息体需要传递 options.done 获得。

    影响范围

    调用该 API 可触发:

    1. 接收方的 NIMGetInstanceOptions.onmsg 回调函数
    2. 接收方的 NIMGetInstanceOptions.onupdatesessions 回调
    3. 发送方的 NIMGetInstanceOptions.onupdatesessions 回调
    4. 发送方同时在线的其它客户端 NIMGetInstanceOptions.onmsg 回调

    示例场景

    示例

    nim.sendCustomMsg({
    scene: 'p2p',
    to: 'account',
    //接收方通过onMsg接收消息
    //然后如果msg.type === 'custom',接收方通过读取msg.content,然后调用业务代码
    content: JSON.stringify({type: 1}),
    done: function(err, msg) {
    if (err) {
    console.log('发送失败', err)
    } else {
    console.log('发送消息成功,消息为: ', msg)
    }
    }
    })

    Parameters

    Returns NIMMessage

  • sendCustomSysMsg(_options: { apnsText?: string; cc?: boolean; content: string; env?: string; isPushable?: boolean; needPushNick?: boolean; pushPayload?: string; scene: "p2p" | "team" | "superTeam"; sendToOnlineUsersOnly?: boolean; to: string; done?: any }): void
  • 发送自定义系统通知

    注,自定义系统通知(sendCustoSysmMsg)和自定义消息(sendCustomMsg)的区别如下:

    1. 自定义消息属于 NIMMessage, 会存储在云信服务器消息数据库中, 与其他消息一同传递给开发者,可以查询历史消息,。
    2. 自定义系统通知属于 NIMSystemMessage, 用于第三方通知端侧, 不会存储在云信服务器数据库中,无法查询历史消息。SDK 仅仅负责传递这些通知。

    示例场景

    Parameters

    • _options: { apnsText?: string; cc?: boolean; content: string; env?: string; isPushable?: boolean; needPushNick?: boolean; pushPayload?: string; scene: "p2p" | "team" | "superTeam"; sendToOnlineUsersOnly?: boolean; to: string; done?: any }
      • Optional apnsText?: string

        apns推送文案, 仅对接收方为iOS设备有效

      • Optional cc?: boolean

        是否抄送. 默认 true

      • content: string

        自定义系统消息的内容,推荐传入 JSON 序列化字符串。

      • Optional env?: string

        环境变量,用于指向不同的抄送、第三方回调等配置

      • Optional isPushable?: boolean

        是否需要推送. 默认 true

      • Optional needPushNick?: boolean

        是否需要推送昵称. 默认 false

      • Optional pushPayload?: string

        自定义系统通知的推送属性. 推荐传入 JSON 序列化字符串

      • scene: "p2p" | "team" | "superTeam"

        场景,跟消息场景的一样分为 p2p, team, superTeam.

      • Optional sendToOnlineUsersOnly?: boolean

        是否只发送给在线用户. 默认为 true

        true. 只发送给在线用户, 如果接收方不在线, 这条通知将被丢弃。适合是“正在输入”这种场景

        false. 若接收方在线, 那么会立即收到该通知,若接收方不在线, 会在其上线后推送离线系统通知。

      • to: string

        接收方,account ID,或者群号。

      • done?:function

    Returns void

  • 描述

    发送图片、视频、音频或其他文件。用户可以选择调用 sendFile 上传并发送文件。 也可以选择先调用 previewFile 上传文件,再调用 sendFile 发送文件

    注意一

    • 自版本 v8.9.102 和 v9.7.0+ 开始,该接口直接返回的是 sending 状态的未完成消息体,发送完毕的消息体需要传递 options.done 获得。

    注意二

    • fileInput、file、blob、filePath四个参数选择一个传入
    • fileInput: type='file'类型的input DOM元素的id。上传完成前请不要操作此节点上的文件
    • file: previewFile 回调函数的参数
    • blob: Blob类型JS对象
    • filePath: RN,小程序等特殊的 JS 运行环境专用(chooseImage 拿到的该临时路径)

    注意三

    • type: image、audio、video 或 file。默认为 file。主要区别在于消息体中 file 对象含有的信息不同
    • image: url, name, size, ext, w, h, type
    • audio: url, name, size, ext, container, dur
    • video: url, name, size, ext, container, dur, w, h
    • file: url, name, size, ext

    影响范围

    调用该 API 可触发:

    1. 接收方的 NIMGetInstanceOptions.onmsg 回调函数
    2. 接收方的 NIMGetInstanceOptions.onupdatesessions 回调
    3. 发送方的 NIMGetInstanceOptions.onupdatesessions 回调
    4. 发送方同时在线的其它客户端 NIMGetInstanceOptions.onmsg 回调

    直接发送文件 & 重发文件

    nim.sendFile({
    scene: 'p2p',
    to: 'account',
    type: 'image',
    fileInput: 'domId',
    done: function(err, obj) {
    if (err) {
    console.log('发送失败', err)
    // 重发. 当上传文件失败时 obj 参数的 msg 附带消息体,其他情况的 obj 就是消息体。
    setTimeout(function () {
    resendMessage(obj.msg ? obj.msg : obj)
    }, 3000)
    } else {
    console.log('发送消息成功,消息为: ', obj)
    }
    }
    })

    // 上传前已经能得到 idClient 做渲染
    console.log(message.idClient)

    // 重发
    function resendMessage(oldMessage) {
    nim.sendFile(Object.assign(oldMessage, {
    scene: 'p2p',
    to: 'account',
    type: 'image',
    fileInput: 'domId',
    resend: true, // 注意这个 resend 标记为 true,才能固定使用 oldMessage 里的 idClient
    done: function(err, obj) {
    if (err) {
    console.log('发送失败', err)
    } else {
    console.log('发送消息成功,消息为: ', obj)
    }
    }
    }))
    }

    先previewFile,再发送文件

    nim.previewFile({
    type: 'image',
    fileInput: fileInput,
    uploadprogress: function(obj) {
    console.log('文件总大小: ' + obj.total + 'bytes');
    console.log('已经上传的大小: ' + obj.loaded + 'bytes');
    console.log('上传进度: ' + obj.percentage);
    console.log('上传进度文本: ' + obj.percentageText);
    },
    done: function(error, file) {
    console.log('上传image' + (!error?'成功':'失败'));
    // show file to the user
    if (!error) {
    var msg = nim.sendFile({
    scene: 'p2p',
    to: 'account',
    file: file,
    done: sendMsgDone
    });
    console.log('正在发送p2p image消息, id=' + msg.idClient);
    pushMsg(msg);
    }
    }
    })

    关联链接

    Parameters

    Returns NIMMessage

  • 描述

    向目标用户、目标群组或目标超大群发送地理位置消息。

    注意

    该接口直接返回的是 sending 状态的未完成消息体,发送完毕的消息体需要传递 options.done 获得。

    影响范围

    调用该 API 可触发:

    1. 接收方的 NIMGetInstanceOptions.onmsg 回调函数
    2. 接收方的 NIMGetInstanceOptions.onupdatesessions 回调
    3. 发送方的 NIMGetInstanceOptions.onupdatesessions 回调
    4. 发送方同时在线的其它客户端 NIMGetInstanceOptions.onmsg 回调

    示例

    nim.sendGeo({
    scene: 'p2p',
    to: 'account',
    //接收方通过onMsg接收消息
    //然后如果msg.type === 'geo',接收方通过读取msg.geo,然后调用业务代码
    geo: {
    lng: 116.3833,
    lat: 39.9167,
    title: 'Beijing'
    },
    done: function(err, msg) {
    if (err) {
    console.log('发送失败', err)
    } else {
    console.log('发送消息成功,消息为: ', msg)
    }
    }
    })

    Parameters

    Returns NIMMessage

  • sendMsgReceipt(_options: { msg: NIMMessage; done?: any }): void
  • sendTeamMsgReceipt(_options: { teamMsgReceipts: { idClient?: string; idServer: string; teamId: string }[]; done?: any }): void
  • 描述

    群消息接收发送消息已读回执。发送方如果在线且已在初始化时注册 onTeamMsgReceipt ,会收到群消息已读的通知

    注意

    注意,发送者必须设置needMsgReceipt = true,接收者才能够发送群消息已读回执

    群消息已读回执分有两种接收方式:

    1. 初始化登录时,在同步阶段下发会话的已读回执时间, 必须设置NIMGetInstanceOptions.syncMsgReceipts = true,才能够接收
    2. 在线时,如果其它用户发送已读回执,通过NIMGetInstanceOptions.onTeamMsgReceipt 监听会话的最新已读回执时间

    影响范围

    调用该 API 发送成功时可触发: 回执接收方的 onTeamMsgReceipt 回调。

    示例场景

    示例

    //消息发送方
    nim.sendText({
    scene: 'team',
    to: 'teamId',
    text: "Hello",
    //注意,该字段必须设置为true
    needMsgReceipt: true
    })

    //消息接收方
    nim.sendTeamMsgReceipt({
    teamMsgReceipts: [{
    teamId: 'teamId',
    idClient: 'xxxx',
    idServer: 'yyyy'
    }]
    })

    Parameters

    • _options: { teamMsgReceipts: { idClient?: string; idServer: string; teamId: string }[]; done?: any }

    Returns void

  • 描述

    向目标用户、目标群组或目标超大群发送提示消息。提示消息主要用于会话内的通知提醒,典型业务场景包括进入群组时出现的欢迎消息和会话过程中命中敏感词后的提示等。

    注意

    该接口直接返回的是 sending 状态的未完成消息体,发送完毕的消息体需要传递 options.done 获得。

    影响范围

    调用该 API 可触发:

    1. 接收方的 NIMGetInstanceOptions.onmsg 回调函数
    2. 接收方的 NIMGetInstanceOptions.onupdatesessions 回调
    3. 发送方的 NIMGetInstanceOptions.onupdatesessions 回调
    4. 发送方同时在线的其它客户端 NIMGetInstanceOptions.onmsg 回调

    示例

    nim.sendTipMsg({
    scene: 'p2p',
    to: 'account',
    //接收方通过onMsg接收消息
    //然后如果msg.type === 'tip',接收方通过读取msg.tip,然后调用业务代码
    tip: 'tip content',
    done: function(err, msg) {
    if (err) {
    console.log('发送失败', err)
    } else {
    console.log('发送消息成功,消息为: ', msg)
    }
    }
    })

    Parameters

    Returns NIMMessage

  • setCurrSession(_sessionId: string): void
  • 设置“进入当前会话”

    注:这是 sdk 的一个便于操作的复合接口,做的逻辑有:在内存里记录当前进入的会话,进入会话时调用 resetSessionUnread 清空未读,且后续 onMsg 接收新消息时 resetSessionUnread 清空未读。

    注2:如果不满足开发者的场景,开发者可以组合调用 API,须小心接到新消息而触发的 onupdatesessions 变更时,忽略当前选中的会话的 unread 数变更。

    关联函数

    Parameters

    • _sessionId: string

    Returns void

  • 更新原 NIM 实例的初始化参数配置,可配置的参数与 NIM.getInstance 方法的可配置的参数相同。

    使用场景

    任何需要更新初始化参数配置的场景。例如:

    • 采用动态 token 登录时,可通过该 API 更新动态 token。
    • 采用静态 token 登录时,如果需要刷新了静态 token,可通过该 API 更新静态 token。

    IM 登录相关详情,请参见初始化并登录 IM。

    Parameters

    Returns void

  • signalingAccept(_options: { account: string; attachExt?: string; autoJoin?: boolean; channelId: string; joinAttachExt?: string; offlineEnabled?: boolean; requestId: string; uid?: number }): Promise<void>
  • 接受进入频道的邀请

    Parameters

    • _options: { account: string; attachExt?: string; autoJoin?: boolean; channelId: string; joinAttachExt?: string; offlineEnabled?: boolean; requestId: string; uid?: number }
      • account: string

        邀请者的账号 account id

      • Optional attachExt?: string

        该操作的附加信息,透传给其他人

      • Optional autoJoin?: boolean

        接受邀请后,是否直接加入频道。默认为 true

      • channelId: string

        频道 id

      • Optional joinAttachExt?: string

        接受邀请后,加入频道的操作附加信息,将在加入频道通知中带给其他频道成员

      • Optional offlineEnabled?: boolean

        是否存入离线消息。默认 false

      • requestId: string

        邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该 requestId

      • Optional uid?: number

        接受邀请后,自己在频道中对应的uid。大于零有效,无效时服务器会分配随机唯一的uid

    Returns Promise<void>

  • signalingCall(_options: { account: string; attachExt?: string; channelName: string; ext?: string; offlineEnabled?: boolean; pushInfo?: NIMSignalingPushInfo; requestId: string; type: number; uid?: string }): Promise<NIMSignalingChannel>
  • 呼叫: 创建一个频道, 己方加入,并邀请对方加入频道

    注: 组合接口, 相当于调用 signalingCreateAndJoin 后, 调用 signalingInvite.

    Parameters

    • _options: { account: string; attachExt?: string; channelName: string; ext?: string; offlineEnabled?: boolean; pushInfo?: NIMSignalingPushInfo; requestId: string; type: number; uid?: string }
      • account: string

        受邀请者的账号 account id

      • Optional attachExt?: string

        该操作的附加信息,透传给受邀请者

      • channelName: string

        频道名称

      • Optional ext?: string

        扩展字段

      • Optional offlineEnabled?: boolean

        是否存入离线消息。默认 false

      • Optional pushInfo?: NIMSignalingPushInfo

        推送属性

      • requestId: string

        邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该 requestId

      • type: number

        频道类型, 通话类型 1: 音频; 2: 视频; 3: 其他

      • Optional uid?: string

        自己在频道中对应的uid,大于零有效,无效时服务器会分配随机唯一的uid

    Returns Promise<NIMSignalingChannel>

  • signalingCallEx(_options: { account: string; attachExt?: string; channelName: string; ext?: string; nertcChannelName?: string; nertcJoinRoomQueryParamMap?: string; nertcTokenTtl?: string; offlineEnabled?: boolean; pushInfo?: NIMSignalingPushInfo; requestId: string; type: number; uid?: string }): Promise<NIMSignalingChannel>
  • 呼叫加入音视频频道: 创建一个频道, 己方加入,并邀请对方加入音视频的频道

    注: 组合接口, 比 signalingCall 多了云信 G2 音视频相关的参数

    Parameters

    • _options: { account: string; attachExt?: string; channelName: string; ext?: string; nertcChannelName?: string; nertcJoinRoomQueryParamMap?: string; nertcTokenTtl?: string; offlineEnabled?: boolean; pushInfo?: NIMSignalingPushInfo; requestId: string; type: number; uid?: string }
      • account: string

        受邀请者的账号 account id

      • Optional attachExt?: string

        该操作的附加信息,透传给受邀请者

      • channelName: string

        频道名称

      • Optional ext?: string

        扩展字段

      • Optional nertcChannelName?: string

        云信 G2-RTC 的房间名,加入频道时 sdk 会携带这个参数, 再返回对应的 token

      • Optional nertcJoinRoomQueryParamMap?: string

        云信G2-RTC加入房间的请求参数,推荐传入 JSON 序列化字符串

      • Optional nertcTokenTtl?: string

        云信 G2-RTC 的 token 的有效期,表示 token 的过期时间,单位秒,选填,默认10分钟

      • Optional offlineEnabled?: boolean

        是否存入离线消息。默认 false

      • Optional pushInfo?: NIMSignalingPushInfo

        推送属性

      • requestId: string

        邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该 requestId

      • type: number

        频道类型, 通话类型 1: 音频; 2: 视频; 3: 其他

      • Optional uid?: string

        自己在频道中对应的uid,大于零有效,无效时服务器会分配随机唯一的uid

    Returns Promise<NIMSignalingChannel>

  • signalingCancel(_options: { account: string; attachExt?: string; channelId: string; offlineEnabled?: boolean; requestId: string }): Promise<void>
  • 取消邀请

    Parameters

    • _options: { account: string; attachExt?: string; channelId: string; offlineEnabled?: boolean; requestId: string }
      • account: string

        受邀请者的账号 account id

      • Optional attachExt?: string

        该操作的附加信息,透传给受邀请者

      • channelId: string

        频道 id

      • Optional offlineEnabled?: boolean

        是否存入离线消息。默认 false

      • requestId: string

        邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该 requestId

    Returns Promise<void>

  • signalingClose(_options: { attachExt?: string; channelId: string; offlineEnabled?: boolean }): Promise<void>
  • 关闭频道

    Parameters

    • _options: { attachExt?: string; channelId: string; offlineEnabled?: boolean }
      • Optional attachExt?: string

        该操作的附加信息,透传给其他人

      • channelId: string

        频道 id

      • Optional offlineEnabled?: boolean

        是否存入离线消息。默认 false

    Returns Promise<void>

  • signalingControl(_options: { account?: string; attachExt?: string; channelId: string }): Promise<void>
  • 发送自定义信令

    Parameters

    • _options: { account?: string; attachExt?: string; channelId: string }
      • Optional account?: string

        要通知的目标账号(account id)。如果不传则通知所有人

      • Optional attachExt?: string

        该操作的附加信息,透传给其他人

      • channelId: string

        频道 id

    Returns Promise<void>

  • signalingCreate(_options: { channelName: string; ext?: string; type: number }): Promise<NIMSignalingChannel>
  • 创建频道

    Parameters

    • _options: { channelName: string; ext?: string; type: number }
      • channelName: string

        频道名称

      • Optional ext?: string

        扩展字段

      • type: number

        频道类型, 通话类型 1: 音频; 2: 视频; 3: 其他

    Returns Promise<NIMSignalingChannel>

  • signalingCreateAndJoin(_options: { attachExt?: string; channelName: string; ext?: string; offlineEnabled?: boolean; type: number; uid?: string }): Promise<NIMSignalingChannel>
  • 如果不存在房间, 则创建一个频道,并且己方加入. 如果已存在频道,则己方直接加入

    注: 组合接口, 相当于调用 signalingCreate 后, 调用 signalingJoin.

    Parameters

    • _options: { attachExt?: string; channelName: string; ext?: string; offlineEnabled?: boolean; type: number; uid?: string }
      • Optional attachExt?: string

        该操作的附加信息,透传给受邀请者

      • channelName: string

        频道名称

      • Optional ext?: string

        扩展字段

      • Optional offlineEnabled?: boolean

        是否存入离线消息。默认 false

      • type: number

        频道类型, 通话类型 1: 音频; 2: 视频; 3: 其他

      • Optional uid?: string

        自己在频道中对应的uid,大于零有效,无效时服务器会分配随机唯一的uid

    Returns Promise<NIMSignalingChannel>

  • 延长频道的有效期

    注:SDK 在 v9.8.0 及以后自动托管频道的有效期,不需要开发者再手动延迟.

    Parameters

    • _options: { channelId: string }
      • channelId: string

        频道id,唯一标识

    Returns Promise<NIMSignalingChannel>

  • signalingInvite(_options: { account: string; attachExt?: string; channelId: string; offlineEnabled?: boolean; pushInfo?: NIMSignalingPushInfo; requestId: string }): Promise<void>
  • 邀请某人进入频道

    Parameters

    • _options: { account: string; attachExt?: string; channelId: string; offlineEnabled?: boolean; pushInfo?: NIMSignalingPushInfo; requestId: string }
      • account: string

        受邀请者的账号 account id

      • Optional attachExt?: string

        该操作的附加信息,透传给受邀请者

      • channelId: string

        频道 id

      • Optional offlineEnabled?: boolean

        是否存入离线消息。默认 false

      • Optional pushInfo?: NIMSignalingPushInfo

        推送属性

      • requestId: string

        邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该 requestId

    Returns Promise<void>

  • signalingJoin(_options: { attachExt?: string; channelId: string; offlineEnabled?: boolean; uid?: number }): Promise<NIMSignalingChannel>
  • 加入频道

    Parameters

    • _options: { attachExt?: string; channelId: string; offlineEnabled?: boolean; uid?: number }
      • Optional attachExt?: string

        该操作的附加信息,透传给其他人

      • channelId: string

        频道 id

      • Optional offlineEnabled?: boolean

        是否存入离线消息。默认 false

      • Optional uid?: number

        自己在频道中对应的uid,大于零有效,无效时服务器会分配随机唯一的uid

    Returns Promise<NIMSignalingChannel>

  • signalingJoinAndAccept(_options: { account: string; attachExt?: string; channelId: string; nertcChannelName?: string; nertcJoinRoomQueryParamMap?: string; nertcTokenTtl?: number; offlineEnabled?: boolean; requestId: string; uid?: number }): Promise<void>
  • 加入频道并接受邀请。该接口实际为组合接口,等同于先调用加入频道,成功后再调用接受邀请接口。

    Parameters

    • _options: { account: string; attachExt?: string; channelId: string; nertcChannelName?: string; nertcJoinRoomQueryParamMap?: string; nertcTokenTtl?: number; offlineEnabled?: boolean; requestId: string; uid?: number }
      • account: string

        对方accid,必须

      • Optional attachExt?: string

        该操作的附加信息,透传给其他人

      • channelId: string

        频道 id

      • Optional nertcChannelName?: string

        云信G2-RTC的房间名,加入频道请求时携带,则会返回token

      • Optional nertcJoinRoomQueryParamMap?: string

        云信G2-RTC加入房间的请求参数,推荐传入 JSON 序列化字符串

      • Optional nertcTokenTtl?: number

        云信G2-RTC的token的有效期,表示token的过期时间,单位秒,选填,默认10分钟

      • Optional offlineEnabled?: boolean

        是否存离线通知,默认false

      • requestId: string

        必须,邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该requestId

      • Optional uid?: number

        自己在频道中对应的uid,大于零有效,无效时服务器会分配随机唯一的uid

    Returns Promise<void>

  • signalingLeave(_options: { attachExt?: string; channelId: string; offlineEnabled?: boolean }): Promise<void>
  • 离开频道

    Parameters

    • _options: { attachExt?: string; channelId: string; offlineEnabled?: boolean }
      • Optional attachExt?: string

        该操作的附加信息,透传给其他人

      • channelId: string

        频道 id

      • Optional offlineEnabled?: boolean

        是否存入离线消息。默认 false

    Returns Promise<void>

  • signalingMarkMsgRead(_options: { msgid: string[] | number[] }): Promise<void>
  • 标记信令消息已收到, 下次不会在离线同步中收到此消息

    Parameters

    • _options: { msgid: string[] | number[] }
      • msgid: string[] | number[]

        需要标记的已读的信令消息 id

    Returns Promise<void>

  • signalingReject(_options: { account: string; attachExt?: string; channelId: string; offlineEnabled?: boolean; requestId: string }): Promise<void>
  • 拒绝进入频道的邀请

    Parameters

    • _options: { account: string; attachExt?: string; channelId: string; offlineEnabled?: boolean; requestId: string }
      • account: string

        邀请者的账号 account id

      • Optional attachExt?: string

        该操作的附加信息,透传给其他人

      • channelId: string

        频道 id

      • Optional offlineEnabled?: boolean

        是否存入离线消息。默认 false

      • requestId: string

        邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该 requestId

    Returns Promise<void>

  • signalingSync(): Promise<void>
  • Returns Promise<void>

  • stripImageMeta(_options: { url: string; done: any }): string
  • 去除图片元信息

    • 只支持通过预览文件或发送文件消息拿到的图片 url, 或者经过其他图片操作后拿到的图片 url
    • 去除元信息后的图片将不包含 EXIF 信息

    Parameters

    Returns string

  • subscribeEvent(_options: { accounts: string[]; subscribeTime?: number; sync?: boolean; type: number; done?: any }): void
  • 订阅指定用户的事件。无论是内置的在线状态事件或是自定义的事件,都需要通过该 API 订阅后才能接收。

    注意

    • 每个 IM 帐号最多可订阅 3000 个其他 IM 账号
    • 同一 IM 账号在其他设备端订阅,会覆盖本端订阅有效期。因此建议各端订阅时长保持一致
    • 在 30 秒内,对同一 IM 账号的同一事件的订阅,即使设置为立即同步服务,也不会下发目标事件

    关联函数

    示例场景

    Parameters

    • _options: { accounts: string[]; subscribeTime?: number; sync?: boolean; type: number; done?: any }

    Returns void

  • thumbnailImage(_options: { axis: { x: number; y: number }; height?: number; url: string; width?: number; done?: any }): void
  • 生成图片的略缩图

    • 只支持通过预览文件或发送文件消息拿到的图片 url, 或者经过其他图片操作后拿到的图片 url
    • width/height 限制了缩略图的尺寸。width/height 必须大于等于 0, 不能同时为 0, 必须小于 4096
    • 不同模式下生成的缩略图是不一样的, 目前支持以下三种模式:
      • 'cover': 原图片等比缩略, 缩略图一边等于请求的尺寸, 另一边大于请求的尺寸, 即缩略图刚好能覆盖住尺寸为 width*height 的矩形
      • 'contain': 原图片等比缩略, 缩略图一边等于请求的尺寸, 另一边小于请求的尺寸, 即尺寸为 width*height 的矩形刚好能覆盖住缩略图
      • 'crop': 先等比缩略原图片, 使得一边等于请求的尺寸, 另一边大于请求的尺寸, 然后对大于请求尺寸的那条边进行裁剪, 使得最终的图片大小刚好等于请求的尺寸
    • 如果缩略图尺寸大于图片尺寸, 默认情况下图片不会被放大, 可以传入参数enlarge=true来放大图片
    • 'crop' 模式下可以传入参数 axis.x 或 axis.y 来控制最后一步裁剪的位置
      • x/y 必须为整数, 取值范围为 0-10, 此方法内部使用 Math.round 来格式化 x/y
      • x 为 0 时表示裁取最左端, x 为 10 时表示裁取最右端
      • y 为 0 时表示裁取最上端, y 为 10 时表示裁取最下端
      • x/y 默认值均为 5, 即裁取正中间

    Parameters

    • _options: { axis: { x: number; y: number }; height?: number; url: string; width?: number; done?: any }
      • axis: { x: number; y: number }

        剪裁坐标

        • x: number

          x 坐标, 必须需为整数

        • y: number

          y 坐标, 必须需为整数

      • Optional height?: number

        缩略图的高度

      • url: string

        NOS 图片源链接

      • Optional width?: number

        缩略图的宽度

      • done?:function

    Returns void

  • transferSuperTeam(_options: { account: string; leave: boolean; teamId: string; done?: any }): void
  • 转让超级群, 群主可操作

    • 转让超级群相关通知
    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 转让者账号
      • msg.to: 群id
      • msg.attach.type: 'transferSuperTeam'
      • msg.attach.team: 群详情
      • msg.attach.account: 新群主账号
      • msg.attach.members: 新旧群主成员详情列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onTransferSuperTeam
    • 如果转让群的同时离开群, 那么相当于调用主动退群来离开群
    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.attach.type: 'leaveSuperTeam'
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onRemoveSuperTeamMembers

    Parameters

    • _options: { account: string; leave: boolean; teamId: string; done?: any }

    Returns void

  • transferTeam(_options: { account: string; leave: boolean; teamId: string; done?: any }): void
  • 转让群, 群主可操作

    • 转让群相关通知
    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 转让者账号
      • msg.to: 群id
      • msg.attach.type: 'transferTeam'
      • msg.attach.team: 群详情
      • msg.attach.account: 新群主账号
      • msg.attach.members: 新旧群主成员详情列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onTransferTeam
    • 如果转让群的同时离开群, 那么相当于调用主动退群来离开群
    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.attach.type: 'leaveTeam'
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onRemoveTeamMembers

    Parameters

    • _options: { account: string; leave: boolean; teamId: string; done?: any }

    Returns void

  • unSubscribeEventsByAccounts(_options: { accounts?: string[]; type: number; done?: any }): void
  • unSubscribeEventsByType(_options: { type: number; done?: any }): void
  • updateCollect(_options: { collect: NIMCollect; done?: any }): void
  • updateFriend(_options: { account: string; alias?: string; custom?: string; done?: any }): void
  • updateInfoInSuperTeam(_options: { custom?: string; muteNotiType?: string; muteTeam?: boolean; nickInTeam?: string; teamId: string; done?: any }): void
  • 修改自己在超级群里的信息

    Parameters

    • _options: { custom?: string; muteNotiType?: string; muteTeam?: boolean; nickInTeam?: string; teamId: string; done?: any }
      • Optional custom?: string

        扩展字段

      • Optional muteNotiType?: string

        提醒策略

        "0" 开启提醒 "1" 关闭消息提醒 "2" 只接受管理员的消息的提醒

      • Optional muteTeam?: boolean
        deprecated

        use "muteNotiType" instead

        是否关闭此群的消息提醒, 默认 false.

        注: 为 true 表示关闭提醒, 但是 SDK 仍然会收到这个群的消息. 因为 SDK 只是记录这个设置, 具体根据这个设置要执行的操作由开发者决定

      • Optional nickInTeam?: string

        在群里的昵称

        注: 更新昵称后, 所有其它在线的群成员会收到 onupdateteammember

      • teamId: string
      • done?:function

    Returns void

  • updateInfoInTeam(_options: { custom?: string; muteNotiType?: string; muteTeam?: boolean; nickInTeam?: string; teamId: string; done?: any }): void
  • 修改自己在群里的信息

    示例场景

    Parameters

    • _options: { custom?: string; muteNotiType?: string; muteTeam?: boolean; nickInTeam?: string; teamId: string; done?: any }
      • Optional custom?: string

        扩展字段

      • Optional muteNotiType?: string

        提醒策略

        "0" 开启提醒 "1" 关闭消息提醒 "2" 只接受管理员的消息的提醒

      • Optional muteTeam?: boolean
        deprecated

        use "muteNotiType" instead

        是否关闭此群的消息提醒, 默认 false.

        注: 为 true 表示关闭提醒, 但是 SDK 仍然会收到这个群的消息. 因为 SDK 只是记录这个设置, 具体根据这个设置要执行的操作由开发者决定

      • Optional nickInTeam?: string

        在群里的昵称

        注: 更新昵称后, 所有其它在线的群成员会收到 onupdateteammember

      • teamId: string
      • done?:function

    Returns void

  • updateLocalMsg(_options: { idClient: string; localCustom: string; done?: any }): void
  • 描述

    更新本地消息。仅允许更新 localCustom 本地自定义扩展字段。

    注意

    如果运行环境不支持数据库,或者未开启数据库, 调用会执行成功,但不会返回或者操作有效的数据。

    Parameters

    Returns void

  • updateLocalSession(_options: { id: string; localCustom?: string; needNotify?: boolean; done?: any }): void
  • updateLocalSysMsg(_options: { idServer: string; localCustom?: string; state?: string; done?: any }): void
  • updateMsgPin(_options: { msg: NIMMsgPinInfo; pinCustom?: string; done?: any }): void
  • updateMuteStateInTeam(_options: { account: string; mute: boolean; teamId: string; done?: any }): void
  • 更新群成员禁言状态

    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 操作方
      • msg.to: 群id
      • msg.attach.type: 'updateTeamMute'
      • msg.attach.account: 被禁言的帐号
      • msg.attach.members: 被禁言的群成员列表
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onUpdateTeamMembersMute

    示例场景

    Parameters

    • _options: { account: string; mute: boolean; teamId: string; done?: any }

    Returns void

  • updateMyInfo(_options: { antiSpamBusinessId?: string; avatar?: string; birth?: string; custom?: string; email?: string; gender?: "unknown" | "male" | "female"; nick?: string; sign?: string; tel?: string; done?: any }): void
  • 更新我的名片。调用后,初始化同步阶段收到 onmyinfo 回调,多端同步阶段收到 onupdatemyinfo 回调

    示例场景

    Parameters

    • _options: { antiSpamBusinessId?: string; avatar?: string; birth?: string; custom?: string; email?: string; gender?: "unknown" | "male" | "female"; nick?: string; sign?: string; tel?: string; done?: any }
      • Optional antiSpamBusinessId?: string

        用户配置的对某些资料内容另外的反垃圾的业务 ID

      • Optional avatar?: string

        头像

      • Optional birth?: string

        出生日期

      • Optional custom?: string

        扩展字段

      • Optional email?: string

        邮箱

      • Optional gender?: "unknown" | "male" | "female"

        性别

      • Optional nick?: string

        昵称

      • Optional sign?: string

        签名

      • Optional tel?: string

        电话

      • done?:function

    Returns void

  • updateNickInSuperTeam(_options: { account: string; nickInTeam: string; teamId: string; done?: any }): void
  • updateNickInTeam(_options: { account: string; nickInTeam: string; teamId: string; done?: any }): void
  • updateServerSession(_options: { extra: string; scene: "p2p" | "team" | "superTeam"; to: string; done: any }): void
  • 更新服务器上某个会话的扩展字段

    Parameters

    • _options: { extra: string; scene: "p2p" | "team" | "superTeam"; to: string; done: any }
      • extra: string

        扩展字段,仅自己可见

      • scene: "p2p" | "team" | "superTeam"

        消息的场景

      • to: string

        消息接收者

      • done:function

    Returns void

  • updateSessionsWithMoreRoaming(_options: { msg: NIMMessage; done?: any }): void
  • updateStickTopSession(_options: { id: string; topCustom?: string; done: any }): void
  • updateSuperTeam(_options: { announcement?: string; antiSpamBusinessId?: string; avatar?: string; beInviteMode?: "noVerify" | "needVerify"; custom?: string; intro?: string; inviteMode?: "manager" | "all"; joinMode?: "noVerify" | "needVerify" | "rejectAll"; name: string; teamId: string; updateCustomMode?: "manager" | "all"; updateTeamMode?: "manager" | "all"; done?: any }): void
  • 更新超级群属性

    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 操作者账号
      • msg.to: 群id
      • msg.attach.type: 'updateSuperTeam'
      • msg.attach.team: 群详情
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onUpdateSuperTeam

    Parameters

    • _options: { announcement?: string; antiSpamBusinessId?: string; avatar?: string; beInviteMode?: "noVerify" | "needVerify"; custom?: string; intro?: string; inviteMode?: "manager" | "all"; joinMode?: "noVerify" | "needVerify" | "rejectAll"; name: string; teamId: string; updateCustomMode?: "manager" | "all"; updateTeamMode?: "manager" | "all"; done?: any }
      • Optional announcement?: string

        群公告

      • Optional antiSpamBusinessId?: string

        对某些资料内容进行反垃圾处理的业务 ID, 在云信控制台里配置.

      • Optional avatar?: string

        群头像

      • Optional beInviteMode?: "noVerify" | "needVerify"

        群被邀请模式

      • Optional custom?: string

        扩展字段

      • Optional intro?: string

        群简介

      • Optional inviteMode?: "manager" | "all"

        群邀请模式

      • Optional joinMode?: "noVerify" | "needVerify" | "rejectAll"

        群加入方式

      • name: string

        群名

      • teamId: string

        群 ID

      • Optional updateCustomMode?: "manager" | "all"

        群信息自定义字段修改权限

      • Optional updateTeamMode?: "manager" | "all"

        群信息修改权限

      • done?:function

    Returns void

  • updateSuperTeamMembersMute(_options: { account: string; mute: boolean; teamId: string; done?: any }): void
  • 更新超级群成员禁言状态

    1. 所有群成员触发 onmsg:

      • msg.type: 'notification'
      • msg.from: 操作方
      • msg.to: 群id
      • msg.attach.type: 'updateSuperTeamMembersMute'
      • msg.attach.team: 群详情
      • msg.attach.account: 被禁言的帐号
      • msg.attach.members: 被禁言的群成员列表
    2. 所有群成员触发 onupdatesessions

    3. 所有群成员触发 onUpdateSuperTeamMembersMute

    Parameters

    • _options: { account: string; mute: boolean; teamId: string; done?: any }

    Returns void

  • updateSuperTeamMute(_options: { mute: boolean; teamId: string; done?: any }): void
  • updateTeam(_options: { announcement?: string; antiSpamBusinessId?: string; avatar?: string; beInviteMode?: "noVerify" | "needVerify"; custom?: string; intro?: string; inviteMode?: "manager" | "all"; joinMode?: "noVerify" | "needVerify" | "rejectAll"; name: string; teamId: string; updateCustomMode?: "manager" | "all"; updateTeamMode?: "manager" | "all"; done?: any }): void
  • 更新群属性。

    普通群限制

    如果是普通群,该群不可以更新 - 群加入方式 - 群被邀请模式 - 群邀请模式 - 群信息修改权限 - 群信息自定义字段修改权限

    函数作用

    1. 所有群成员触发 onmsg:
      • msg.type: 'notification'
      • msg.from: 操作者账号
      • msg.to: 群id
      • msg.attach.type: 'updateTeam'
      • msg.attach.team: 群详情
    2. 所有群成员触发 onupdatesessions
    3. 所有群成员触发 onUpdateTeam

    Parameters

    • _options: { announcement?: string; antiSpamBusinessId?: string; avatar?: string; beInviteMode?: "noVerify" | "needVerify"; custom?: string; intro?: string; inviteMode?: "manager" | "all"; joinMode?: "noVerify" | "needVerify" | "rejectAll"; name: string; teamId: string; updateCustomMode?: "manager" | "all"; updateTeamMode?: "manager" | "all"; done?: any }
      • Optional announcement?: string

        群公告

      • Optional antiSpamBusinessId?: string

        对某些资料内容进行反垃圾处理的业务 ID, 在云信控制台里配置.

      • Optional avatar?: string

        群头像

      • Optional beInviteMode?: "noVerify" | "needVerify"

        群被邀请模式

      • Optional custom?: string

        扩展字段

      • Optional intro?: string

        群简介

      • Optional inviteMode?: "manager" | "all"

        群邀请模式

      • Optional joinMode?: "noVerify" | "needVerify" | "rejectAll"

        群加入方式

      • name: string

        群名

      • teamId: string

        群 ID

      • Optional updateCustomMode?: "manager" | "all"

        群信息自定义字段修改权限

      • Optional updateTeamMode?: "manager" | "all"

        群信息修改权限

      • done?:function

    Returns void

    • 此接口为单例模式, 对于同一个账号, 永远返回同一份实例, 即只有第一次调用会初始化一个实例
    • 后续调用此接口会直接返回初始化过的实例, 同时也会调用接口 setOptions 更新传入的配置
    • 后续调用此接口时, 如果连接已断开, 会自动建立连接
    • 当发生掉线时,SDK会自动进行重连

    Parameters

    Returns NIM