new NIM()
请使用 NIM.getInstance 来初始化 SDK.
此接口为单例模式, 对于同一个账号, 永远返回同一份实例, 即只有第一次调用会初始化一个实例, 后续调用此接口会直接返回初始化过的实例.
Methods
-
<static> getInstance(options)
-
- 此接口为单例模式, 对于同一个账号, 永远返回同一份实例, 即只有第一次调用会初始化一个实例
- 后续调用此接口会直接返回初始化过的实例, 同时也会调用接口
setOptions更新传入的配置 - 后续调用此接口时, 如果连接已断开, 会自动建立连接
- 当发生掉线时,SDK会自动进行重连
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description debugBoolean | Object <optional>
false 已废弃: 请使用 logLevel; 是否开启调试, 如果开启调试, 将会在控制台输出一些log。默认
false不输出日志, 可以传true来开启日志。logLevelString <optional>
'off' 日志等级,仅在开启调试后生效,枚举值 debug | log | info | warn | error | off, 设置对应的日志等级后,仅输出高于或等于对应等级的日志, off 关闭所有日志
logFuncfunction | Object <optional>
null 是否对日志做额外的处理,诸如日志存储、日志上报等等,该函数会截获console日志的参数,供开发者使用
secureBoolean | Object <optional>
true secure 模式下会通过 https 协议跟服务器建立连接, 非 secure 模式下会通过 http 协议跟服务器建立连接, 默认 true
appKeyString 在云信管理后台查看应用的 appKey
accountString 帐号, 应用内唯一
tokenString 帐号的 token, 也可理解为密码。初始化登录建立连接时会校验一次
authTypenumber <optional>
0 账号token的认证类型,有三种
- 0:token是固定的,只有主动调用接口修改才会更改
- 1:token是动态的,有过期时间。token过期后已登录状态的连接不受影响,但之后的登录(包括自动重连、正常的登录连接)需使用新token。对于自动重连场景,开发者可在
onwillreconnect中,判断token是否过期,若过期可调用setOptions更新token - 2:账号和token由开发者的服务校验,云信服务器收到登录请求后会转发至开发者服务器,并将其校验结果返回
loginExtstring <optional>
登录时的扩展字段,可抄送给开发者服务器,不会同步至其他端
nosScenesString <optional>
'im' nos文件存储全局配置,存储场景,实例有效,默认im
nosSurvivalTimeNumber <optional>
Infinity nos文件存储全局配置,存储有效时间,实例有效,默认Infinity 不得小于一天,单位秒
customTagString <optional>
客户端自定义tag,登录时多端同步改字段,最大32个字符
customClientTypeInteger <optional>
自定义客户端类型,大于0的整数;可实现自定义多端登录策略,具体策略可在云信管理后台配置
onconnectfunction <optional>
连接建立后的回调, 会传入一个对象, 包含登录的信息, 有以下字段
lastLoginDeviceId: 上次登录的设备的设备号customTag: 客户端自定义tag,登录时多端同步改字段,最大32个字符connectionId: 本次登录的连接号ip: 客户端IPport: 客户端端口country: 本次登录的国家
onwillreconnectfunction <optional>
即将重连的回调
- 此时说明 SDK 已经断开连接, 请开发者在界面上提示用户连接已断开, 而且正在重新建立连接
- 此回调会收到一个对象, 包含额外的信息, 有以下字段
duration: 距离下次重连的时间retryCount: 重连尝试的次数
authType等于1时,开发者需在该回调中检查token的有效期,如果已过期,需调用setOptions更新token,如果是异步场景,比如需要等服务器响应,可以返回一个Promise,SDK会等待(最多10s)Promise完成后再执行重连
ondisconnectfunction <optional>
断开连接后的回调
- 此时说明 SDK 处于断开状态, 开发者此时应该根据错误码提示相应的错误信息, 并且跳转到登录页面
- 此回调会收到一个对象, 包含错误的信息, 有以下字段
code: 出错时的错误码, 可能为空302: 账号或者密码错误, 请跳转到登录页面并提示错误417: 重复登录, 已经在其它端登录了, 请跳转到登录页面并提示错误'kicked': 被踢
- 当
code为'kicked'的时候, 此对象会有以下字段reason: 被踢的原因samePlatformKick: 不允许同一个帐号在多个地方同时登录serverKick: 被服务器踢了otherPlatformKick: 被其它端踢了
message: 文字描述的被踢的原因custom:被服务器踢的扩展字段,调用服务器API踢用户时可以自定义from: 踢人操作方的客户端类型,有以下几种:Android,iOS,PC,Web,Server,Mac,WindowsPhone,HarmonyOS,customClientType: 踢人操作方的自定义客户端类型,仅当操作方登录时指定了自定义客户端类型时才有
onerrorfunction <optional>
发生错误的回调, 会传入
错误对象onloginportschangefunction <optional>
多端登录状态变化的回调, 会收到
登录端列表, 以下情况会收到此回调- 登录时其它端在线
- 登录后其它端上线或者下线
syncRelationsBoolean <optional>
true 是否同步黑名单和静音列表, 默认
true. 如果传false就收不到黑名单和静音列表, 即不会收到onblacklist回调和onmutelist回调, 开发者后续可以调用获取黑名单和静音列表来获取黑名单和静音列表。onblacklistfunction <optional>
同步黑名单的回调, 会传入黑名单列表
blacklistblacklist的属性invalid包含被删除的黑名单列表- 此回调是增量回调, 可以调用
nim.mergeRelations和nim.cutRelations来合并数据
onsyncmarkinblacklistfunction <optional>
当前登录用户在其它端
加入黑名单/从黑名单移除后的回调, 会传入一个参数, 包含两个字段account: 要加入黑名单/从黑名单移除的账号isAdd:true表示加入黑名单,false表示从黑名单移除
onmutelistfunction <optional>
同步静音列表的回调, 会传入静音列表
mutelistmutelist的属性invalid包含被删除的静音列表- 此回调是增量回调, 可以调用
nim.mergeRelations和nim.cutRelations来合并数据
onsyncmarkinmutelistfunction <optional>
当前登录用户在其它端
加入静音列表/从静音列表移除后的回调, 会传入一个参数, 包含两个字段account: 要加入黑名单/从黑名单移除的账号isAdd:true表示加入静音列表,false表示从静音列表移除
syncFriendsBoolean <optional>
是否同步好友列表, 默认
true. 如果传false就收不到onfriends回调, 开发者后续可以调用获取好友列表来获取好友列表。onfriendsfunction <optional>
同步好友列表的回调, 会传入好友列表。没有好友时,使用数据库会调用回调传空数组,否则不回调。
onsyncfriendactionfunction <optional>
当前登录用户在其它端进行好友相关的操作后的回调
- 操作包括
- 此回调会收到一个参数
obj, 它有一个字段type的值为操作的类型, 具体类型如下:'addFriend'(直接加为好友), 此时obj的字段如下:account的值为被直接加为好友的账号friend为被直接加为好友的好友对象ps为附言
'applyFriend'(申请加为好友), 此时obj的字段如下:account的值为被申请加为好友的账号ps为附言
'passFriendApply'(通过好友申请), 此时obj的字段如下:account的值为被通过好友申请的账号friend为被通过好友申请的好友对象ps为附言
'rejectFriendApply'(拒绝好友申请), 此时obj的字段如下:account的值为被拒绝好友申请的账号ps为附言
'deleteFriend'(删除好友), 此时obj的字段如下:account的值为被删除好友的账号
'updateFriend'(更新好友), 此时obj的字段如下:friend的值为被更新的好友对象
onmyinfofunction <optional>
同步登录用户名片的回调, 会传入
用户名片onupdatemyinfofunction <optional>
当前登录用户在其它端修改自己的个人名片之后的回调, 会传入
用户名片syncFriendUsersBoolean <optional>
是否同步好友对应的用户名片列表, 默认
true, 如果传false就收不到onusers回调.onusersfunction <optional>
同步好友用户名片的回调, 会传入
用户名片数组onupdateuserfunction <optional>
用户名片更新后的回调, 会传入
用户名片syncSuperTeamsBoolean <optional>
true 是否同步超大群列表, 默认
true. 如果传false就收不到群列表, 即不会收到onSuperTeams回调, 开发者后续可以调用获取超大群列表来获取群列表.onSuperTeamsfunction <optional>
同步超大群列表的回调, 会传入
超大群数组onSyncCreateSuperTeamfunction <optional>
当前登录者创建超大群后的回调, 会传入
超大群onUpdateSuperTeamfunction <optional>
更新超大群的回调, 此方法接收一个参数, 更新后的群信息
onUpdateSuperTeamMemberfunction <optional>
群成员信息更新后的回调, 会传入
超大群群成员对象, 不过此时的信息是不完整的, 只会包括被更新的字段。当前登录帐号在其它端修改自己在群里面的昵称时也会收到此回调onMySuperTeamMembersfunction <optional>
当前账号所在超级群的成员信息的回调。在同步阶段以及在本端和其它端修改自己的超级群成员信息时会收到此回调。
onAddSuperTeamMembersfunction <optional>
新成员入超大群的回调, 此方法接收一个参数, 包含群信息和群成员信息
onRemoveSuperTeamMembersfunction <optional>
有人出超大群的回调, 此方法接收一个参数, 包含群信息和被移除的群成员账号
onDismissSuperTeamfunction <optional>
超大群解散的回调, 所有群成员均会收到该回调。此方法接收一个参数, 包含被解散的群id
onTransferSuperTeamfunction <optional>
移交超大群的回调, 此方法接收一个参数, 包含群信息和新老群主信息
onUpdateSuperTeamMembersMutefunction <optional>
更新超大群群成员禁言状态的回调, 此方法接收一个参数, 包含群信息和禁言状态信息
syncTeamsBoolean <optional>
true 是否同步群列表, 默认
true. 如果传false就收不到群列表, 即不会收到onteams回调, 开发者后续可以调用获取群列表来获取群列表.syncExtraTeamInfoBoolean <optional>
是否同步额外的群信息, 默认
true会同步额外的群信息, 目前包括- 当前登录用户是否开启某个群的消息提醒 (SDK 只是存储了此信息, 具体用此信息来做什么事情完全由开发者控制)
- 调用接口
NIM#updateInfoInTeam来关闭/开启某个群的消息提醒 - 调用接口
NIM#notifyForNewTeamMsg来查询自己在各个群中所设置的消息提醒策略
onteamsfunction <optional>
同步群列表的回调, 会传入
群数组teamsteams的属性invalid包含退出的群
onsynccreateteamfunction <optional>
onupdateteammemberfunction <optional>
群成员信息更新后的回调, 会传入
群成员对象, 不过此时的信息是不完整的, 只会包括被更新的字段。当前登录帐号在其它端修改自己在群里面的昵称时也会收到此回调。onMyTeamMembersfunction <optional>
当前账号所在群的成员信息的回调。在同步阶段以及在本端和其它端修改自己的群成员信息时会收到此回调。
onCreateTeamfunction <optional>
创建群的回调, 此方法接收一个参数, 包含群信息和群主信息
onUpdateTeamfunction <optional>
更新群的回调, 此方法接收一个参数, 更新后的群信息
onAddTeamMembersfunction <optional>
新成员入群的回调, 此方法接收一个参数, 包含群信息和群成员信息
onRemoveTeamMembersfunction <optional>
有人出群的回调, 此方法接收一个参数, 包含群信息和群成员账号
onUpdateTeamManagersfunction <optional>
更新群管理员的回调, 此方法接收一个参数, 包含群信息和管理员信息
onDismissTeamfunction <optional>
解散群的回调, 此方法接收一个参数, 包含被解散的群id
onTransferTeamfunction <optional>
移交群的回调, 此方法接收一个参数, 包含群信息和新老群主信息
onUpdateTeamMembersMutefunction <optional>
更新群成员禁言状态的回调, 此方法接收一个参数, 包含群信息和禁言状态信息
syncSessionUnreadBoolean <optional>
false 是否同步会话的未读数, 默认不同步
- 如果选择同步
- 那么在一个端读过的会话在其它端也会被标记为已读
- 在调用
NIM#setCurrSession的时候 SDK 会自动同步一次未读数, 此后如果收到当前会话的消息, 需要手动调用NIM#resetSessionUnread来同步未读数
onupdatesessionfunction <optional>
更新会话的回调, 会传入
会话(仅包含更新的字段);以下情况会收到此回调- 收到消息
- 发送消息
- 设置当前会话
- 重置会话未读数
onupdatesessionsfunction <optional>
批量更新会话的回调, 传出会话列表数组。此函数优先级高于上面的 onupdatesession,若定义了此函数,会话更新回调只会走这个函数。
syncStickTopSessionsBoolean <optional>
是否同步置顶会话,默认
false,如果传true,则在有置顶会话时,可以收到onStickTopSessions回调,传false则不会onStickTopSessionsfunction <optional>
同步置顶会话列表, 会传入
会话列表onSyncUpdateServerSessionfunction <optional>
更新服务端会话在线多端同步回调。多端登录时,一端调用
NIM#updateServerSession更新了服务端会话,其他端会收到该同步回调onSessionsWithMoreRoamingfunction <optional>
同步还有更多漫游消息的会话列表。会传入会话列表,其中的
time字段代表该会话在此时间之前的本地漫游消息是不完整的。开发者可以通过获取历史消息的方式获取该时间之前的完整消息列表shouldIgnoreMsgfunction <optional>
是否要忽略某消息。该方法会接收一个消息对象,如果该方法返回 true, 那么 SDK 将忽略此条消息(不计未读数,不当lastMsg,不存数据库,不触发
onmsg通知)shouldIgnoreNotificationfunction <optional>
是否要忽略某条通知类消息, 该方法会接收一个消息对象, 如果该方法返回 true, 那么 SDK 将忽略此条通知类消息
shouldCountNotifyUnreadfunction <optional>
通知类消息是否要计入未读数,该方法接收一个消息消息,如果返回true,则将该通知消息计入未读数,否则不计入未读数
syncRoamingMsgsBoolean <optional>
true 是否同步漫游消息, 默认
true. 如果传false就收不到漫游消息, 即不会收到onroamingmsgs回调.syncSuperTeamRoamingMsgsBoolean <optional>
true 是否额外同步大群漫游消息, 默认
true. 如果传false就不会收到超大群的onroamingmsgs回调.onroamingmsgsfunction <optional>
同步漫游消息(包括超大群漫游消息和其他漫游消息)的回调, 每个会话对应一个回调, 会传入
消息数组onofflinemsgsfunction <optional>
同步离线消息的回调, 每个会话对应一个回调, 会传入
消息数组onmsgfunction <optional>
收到消息的回调, 会传入
消息对象- 当前登录帐号在其它端发送消息之后也会收到此回调, 注意此时消息对象的
from字段就是当前登录的帐号
onQuickCommentfunction <optional>
收到快捷评论,会传入两个参数,分别是对应的
消息和评论onDeleteQuickCommentfunction <optional>
收到删除了快捷评论,会传入两个参数,分别是对应的
消息和评论onPinMsgChangefunction <optional>
收到PIN变更,会传入两个参数,第一个参数是变更的类型,第二个参数是一个对象,有
msg和pinTag两个属性,分别是被PIN的消息和PIN操作的相关信息- 新增/删除/更新 PIN都会收到该回调,三种变更对应的第一个参数分别是
add、delete、update - 第二个参数的pinTag属性是一个对象,有
pinFrom、pinCustom、createTime、updateTime四个字段,分别代表pin的操作者、扩展字段、创建时间和更新时间
syncMsgReceiptsBoolean <optional>
是否同步已读回执时间戳, 默认
true. 如果传false就收不到已读回执时间戳.onofflinesysmsgsfunction <optional>
同步离线系统通知的回调, 会传入
系统通知数组onroamingsysmsgsfunction <optional>
同步漫游系统通知的回调, 会传入
系统通知数组onsysmsgfunction <optional>
收到系统通知的回调, 会传入
系统通知onupdatesysmsgfunction <optional>
更新系统通知后的回调, 会传入
系统通知onsysmsgunreadfunction <optional>
收到系统通知未读数的回调
- SDK 会管理内建系统通知的未读数, 此回调接收的对象包括以下字段
total: 总共的未读数friend: 所有跟好友相关的系统通知的未读数addFriend: 直接加为好友的未读数applyFriend: 申请加为好友的未读数passFriendApply: 通过好友申请的未读数rejectFriendApply: 拒绝好友申请的未读数deleteFriend: 删除好友的未读数team: 所有跟群相关的系统通知的未读数teamInvite: 入群邀请的未读数rejectTeamInvite: 接受入群邀请的未读数applyTeam: 入群申请的未读数rejectTeamApply: 拒绝入群申请的未读数
onTeamMsgReceiptfunction <optional>
收到群消息已读通知(msgReceipt)
onupdatesysmsgunreadfunction <optional>
更新系统通知未读数的回调
onofflinecustomsysmsgsfunction <optional>
同步离线自定义系统通知的回调, 会传入
系统通知数组oncustomsysmsgfunction <optional>
收到自定义系统通知的回调, 会传入
系统通知onDeleteMsgSelffunction <optional>
收到单向删除消息的回调,单向删除消息和批量单向删除消息都会触发这个回调,会传入被删除的
消息数组onClearServerHistoryMsgsfunction <optional>
收到清除会话历史消息的回调, 会传入被删除的 sessionId 以及删除时间
onsyncdonefunction <optional>
当上面各个同步(不包括下面的同步群成员)完成后, 会调用此回调;注意, SDK保证在
onsyncdone调用的时候上面的同步肯定完成了, 但是不保证各个同步回调的顺序。autoMarkReadBoolean <optional>
true 是否自动标记消息为已收到
- 默认情况下SDK在收到服务器推送过来的消息后, 会在将消息推给开发者时将消息标记为已读状态, 下次登录后就不会收到标记为已读的消息。
- SDK通过
onofflinemsgs、onofflinesysmsgs、onofflinecustomsysmsgs等回调将离线消息推送给开发者 - SDK通过
onmsg、onsysmsg、oncustomsysmsg等回调将在线消息推送给开发者
- SDK通过
- 如果开发者想控制标记消息为已收到的时机, 那么可以传
false, 这样SDK就不会自动标记消息已读, 此时需要开发者在适当的时机调用相关的方法来标记消息为已读, 否则下次登录后还会收到未标记为已读的消息。
dbBoolean <optional>
true 是否使用数据库
- 在支持数据库的浏览器上 SDK 会将数据缓存到数据库中, 后续同步都是增量更新, 加快初始化速度
- 如果开发者不想使用数据库, 那么可以设置
db为false来禁用数据库 - 日志的db存储由初始化的dbLog参数控制,与该参数相互独立
needReconnectBoolean <optional>
true 是否开启自动重连
reconnectionAttemptsNumber <optional>
SDK尝试重连的最大次数。在重连阶段,重连次数超过此参数限制后,将不再尝试重连,此时会触发
ondisconnect回调quickReconnectBoolean <optional>
false 是否开启快速自动重连,只有当needReconnect=true时该配置才有效
syncBroadcastMsgsBoolean <optional>
false 是否同步离线广播
onbroadcastmsgsfunction <optional>
同步到离线广播消息的回调,仅当
options.syncBroadcastMsgs=true时,才会同步离线广播消息onbroadcastmsgfunction <optional>
在线时收到广播消息的回调
thumbnailToStaticBoolean <optional>
true 是否将动态图片缩略为静态图片,默认将动态图片缩略为静态图片
- 仅在
cover和contain缩略模式下,才支持将动态图片缩略为动态图片,其他模式下只能缩略为静态图片 - 可以调用SDK的
thumbnailImage,processImage等API生成图片的缩略图
rollbackDelMsgUnreadBoolean <optional>
false 撤回消息后是否更新该消息影响的会话未读数。如某会话有两条消息未读,然后其中一条消息被撤回了,若该参数为true,则未读数变为1,否则未读数仍是2
rollbackClearMsgsUnreadBoolean <optional>
true 默认 true,清除会话的消息时会去同时更新会话的未读数,lastmsg
logReportBoolean <optional>
false 是否上报异常错误日志,可以将该项设为
false来禁止上报错误日志- SDK会将部分错误及相关信息上传至云信统计平台,方便开发者统计及排查线上错误
defaultLinkString <optional>
lbs请求出错时,SDK会尝试连接该地址。默认连接云信的备用地址
lbsBackupBoolean <optional>
true 是否开启备用lbs。若开启,SDK会将备用的lbs地址存储到本地LocalStorage,当主lbs意外不可用时,会尝试请求备用lbs地址连接
lbsBackupUrlsCustomerBoolean <optional>
用户自定义的备用 lbs 地址,接收数组形式,如 ['https://address1', 'https://address2'],用于自行定义接口去代理 lbs 返回,防止运营商劫持。当主lbs意外不可用时,会尝试请求备用lbs地址连接,优先级比上文 localstorage 里缓存的低。
resetUnreadModeBoolean <optional>
true 重置会话未读数时,若同步至服务器失败,是否仅重置本地会话未读数。当同步至服务器失败时,若为true,则本地未读数会被重置,服务器和其他端的未读数不会;若为false,则本地、服务器和其他端都不会被重置(重置失败),各端未读数会保持一致
dbLogBoolean <optional>
true 是否将日志存储到本地数据库,可设置有效期;若为true,日志会被存储到数据库中,可通过服务器API拉取本地数据库中日志。若为false,则不会存储日志。注:日志数据库与IM业务数据库为两个数据库,互不影响。
expireNumber <optional>
72 本地数据库中的日志的有效期,单位
小时,默认72小时httpsEnabledBoolean <optional>
false 消息内容里的文件 cdn 链接,是否强制使用 https 协议
Example
var data = {}; var nim = new NIM({ // 初始化SDK // debug: true appKey: 'appKey', account: 'account', token: 'token', onconnect: onConnect, onerror: onError, onwillreconnect: onWillReconnect, ondisconnect: onDisconnect, // 多端 onloginportschange: onLoginPortsChange, // 用户关系 onblacklist: onBlacklist, onsyncmarkinblacklist: onMarkInBlacklist, onmutelist: onMutelist, onsyncmarkinmutelist: onMarkInMutelist, // 好友关系 onfriends: onFriends, onsyncfriendaction: onSyncFriendAction, // 用户名片 onmyinfo: onMyInfo, onupdatemyinfo: onUpdateMyInfo, onusers: onUsers, onupdateuser: onUpdateUser, // 超大群 onSuperTeams: onSuperTeams, onSyncCreateSuperTeam: onSyncCreateSuperTeam, onDismissSuperTeam: onDismissSuperTeam, onUpdateSuperTeamMember: onUpdateSuperTeamMember, onUpdateSuperTeam: onUpdateSuperTeam, // 更新超大群的回调 onAddSuperTeamMembers: onAddSuperTeamMembers, // 新成员入超大群的回调 onRemoveSuperTeamMembers: onRemoveSuperTeamMembers // 群组 onteams: onTeams, onsynccreateteam: onCreateTeam, onteammembers: onTeamMembers, onsyncteammembersdone: onSyncTeamMembersDone, onupdateteammember: onUpdateTeamMember, // 会话 onsessions: onSessions, onupdatesession: onUpdateSession, // 消息 onroamingmsgs: onRoamingMsgs, onofflinemsgs: onOfflineMsgs, onmsg: onMsg, // 系统通知 onofflinesysmsgs: onOfflineSysMsgs, onsysmsg: onSysMsg, onupdatesysmsg: onUpdateSysMsg, onsysmsgunread: onSysMsgUnread, onupdatesysmsgunread: onUpdateSysMsgUnread, onofflinecustomsysmsgs: onOfflineCustomSysMsgs, oncustomsysmsg: onCustomSysMsg, // 同步完成 onsyncdone: onSyncDone }); function onConnect() { console.log('连接成功'); } function onWillReconnect(obj) { // 此时说明 `SDK` 已经断开连接, 请开发者在界面上提示用户连接已断开, 而且正在重新建立连接 console.log('即将重连', obj); } function onDisconnect(error) { // 此时说明 `SDK` 处于断开状态, 开发者此时应该根据错误码提示相应的错误信息, 并且跳转到登录页面 console.log('连接断开', error); if (error) { switch (error.code) { // 账号或者密码错误, 请跳转到登录页面并提示错误 case 302: break; // 重复登录, 已经在其它端登录了, 请跳转到登录页面并提示错误 case 417: break; // 被踢, 请提示错误后跳转到登录页面 case 'kicked': break; default: break; } } } function onError(error, obj) { console.log('发生错误', error, obj); } function onLoginPortsChange(loginPorts) { console.log('当前登录帐号在其它端的状态发生改变了', loginPorts); } function onBlacklist(blacklist) { console.log('收到黑名单', blacklist); data.blacklist = nim.mergeRelations(data.blacklist, blacklist); data.blacklist = nim.cutRelations(data.blacklist, blacklist.invalid); refreshBlacklistUI(); } function onMarkInBlacklist(obj) { console.log(obj.account + '被你' + (obj.isAdd ? '加入' : '移除') + '黑名单', obj); if (obj.isAdd) { addToBlacklist(obj); } else { removeFromBlacklist(obj); } } function addToBlacklist(obj) { data.blacklist = nim.mergeRelations(data.blacklist, obj.record); refreshBlacklistUI(); } function removeFromBlacklist(obj) { data.blacklist = nim.cutRelations(data.blacklist, obj.record); refreshBlacklistUI(); } function refreshBlacklistUI() { // 刷新界面 } function onMutelist(mutelist) { console.log('收到静音列表', mutelist); data.mutelist = nim.mergeRelations(data.mutelist, mutelist); data.mutelist = nim.cutRelations(data.mutelist, mutelist.invalid); refreshMutelistUI(); } function onMarkInMutelist(obj) { console.log(obj.account + '被你' + (obj.isAdd ? '加入' : '移除') + '静音列表', obj); if (obj.isAdd) { addToMutelist(obj); } else { removeFromMutelist(obj); } } function addToMutelist(obj) { data.mutelist = nim.mergeRelations(data.mutelist, obj.record); refreshMutelistUI(); } function removeFromMutelist(obj) { data.mutelist = nim.cutRelations(data.mutelist, obj.record); refreshMutelistUI(); } function refreshMutelistUI() { // 刷新界面 } function onFriends(friends) { console.log('收到好友列表', friends); data.friends = nim.mergeFriends(data.friends, friends); data.friends = nim.cutFriends(data.friends, friends.invalid); refreshFriendsUI(); } function onSyncFriendAction(obj) { console.log('收到好友操作', obj); switch (obj.type) { case 'addFriend': console.log('你在其它端直接加了一个好友' + obj); onAddFriend(obj.friend); break; case 'applyFriend': console.log('你在其它端申请加了一个好友' + obj); break; case 'passFriendApply': console.log('你在其它端通过了一个好友申请' + obj); onAddFriend(obj.friend); break; case 'rejectFriendApply': console.log('你在其它端拒绝了一个好友申请' + obj); break; case 'deleteFriend': console.log('你在其它端删了一个好友' + obj); onDeleteFriend(obj.account); break; case 'updateFriend': console.log('你在其它端更新了一个好友', obj); onUpdateFriend(obj.friend); break; } } function onAddFriend(friend) { data.friends = nim.mergeFriends(data.friends, friend); refreshFriendsUI(); } function onDeleteFriend(account) { data.friends = nim.cutFriendsByAccounts(data.friends, account); refreshFriendsUI(); } function onUpdateFriend(friend) { data.friends = nim.mergeFriends(data.friends, friend); refreshFriendsUI(); } function refreshFriendsUI() { // 刷新界面 } function onMyInfo(user) { console.log('收到我的名片', user); data.myInfo = user; updateMyInfoUI(); } function onUpdateMyInfo(user) { console.log('我的名片更新了', user); data.myInfo = NIM.util.merge(data.myInfo, user); updateMyInfoUI(); } function updateMyInfoUI() { // 刷新界面 } function onUsers(users) { console.log('收到用户名片列表', users); data.users = nim.mergeUsers(data.users, users); } function onUpdateUser(user) { console.log('用户名片更新了', user); data.users = nim.mergeUsers(data.users, user); } function onSuperTeams (superTeams) { console.log('收到超大群列表', superTeams) data.superTeams = nim.mergeTeams(data.superTeams, superTeams) onInvalidSuperTeams(superTeams.invalid) } function onInvalidSuperTeams (teams) { data.superTeams = nim.cutTeams(data.superTeams, teams) data.invalidSuperTeams = nim.mergeTeams(data.invalidSuperTeams, teams) refreshSuperTeamsUI() } function onSyncCreateSuperTeam (team, owner) { console.log('创建了一个超大群 onSyncCreateSuperTeam ', team, owner) data.superTeams = nim.mergeTeams(data.superTeams, team) refreshSuperTeamsUI() onSuperTeamMembers({ teamId: team.teamId, members: owner }) } function onAddSuperTeamMembers (team, accounts, members) { console.log('添加群成员 onAddSuperTeamMembers ', team, accounts, members) if (!accounts && !members) { accounts = team.accounts || [] members = team.members || [] team = team.team || {} } var teamId = team.teamId // 如果是别人被拉进来了,那么拼接群成员列表 // 如果是自己被拉进来了,那么同步一次群成员列表 if (accounts.indexOf(data.account) === -1) { onSuperTeamMembers({ teamId: teamId, members: members }) } else { // ... } onSuperTeams(team) } function onDismissSuperTeam(obj) { console.log('解散超大群 onDismissSuperTeam', obj); var teamId = obj.teamId removeAllSuperTeamMembers(teamId) data.superTeams = nim.cutTeams(data.superTeams, obj) refreshSuperTeamsUI() refreshSuperTeamMembersUI() } function onRemoveSuperTeamMembers (obj) { console.log('移除了群成员 onRemoveSuperTeamMembers ', obj.accounts, obj) var teamId = obj.team.teamId var accounts = obj.accounts var team if (!teamId && !accounts) { accounts = obj.accounts || [] } // 如果是别人被踢了,那么移除群成员 // 如果是自己被踢了,那么离开该群 if (accounts.indexOf(data.account) === -1) { if (team) { onSuperTeams(team) } if (!data.superTeamMembers) { data.superTeamMembers = {} } data.superTeamMembers[teamId] = nim.cutTeamMembersByAccounts( data.superTeamMembers[teamId], teamId, accounts ) refreshSuperTeamMembersUI() } else { leaveSuperTeam(teamId) } } function onUpdateSuperTeam(err, msg) { console.log('更新了超大群 teamId', err, msg) } function onUpdateSuperTeamMember (member) { console.log('群成员信息更新了', member) } function leaveSuperTeam (teamId) { onInvalidSuperTeams({ teamId: teamId }) removeAllSuperTeamMembers(teamId) } function refreshSuperTeamsUI () { } function refreshSuperTeamMembersUI () { } function removeAllSuperTeamMembers () { } function onTeams(teams) { console.log('群列表', teams); data.teams = nim.mergeTeams(data.teams, teams); onInvalidTeams(teams.invalid); } function onInvalidTeams(teams) { data.teams = nim.cutTeams(data.teams, teams); data.invalidTeams = nim.mergeTeams(data.invalidTeams, teams); refreshTeamsUI(); } function onCreateTeam(team) { console.log('你创建了一个群', team); data.teams = nim.mergeTeams(data.teams, team); refreshTeamsUI(); onTeamMembers({ teamId: team.teamId, members: owner }); } function refreshTeamsUI() { // 刷新界面 } function onTeamMembers(obj) { console.log('收到群成员', obj); var teamId = obj.teamId; var members = obj.members; data.teamMembers = data.teamMembers || {}; data.teamMembers[teamId] = nim.mergeTeamMembers(data.teamMembers[teamId], members); data.teamMembers[teamId] = nim.cutTeamMembers(data.teamMembers[teamId], members.invalid); refreshTeamMembersUI(); } function onSyncTeamMembersDone() { console.log('同步群列表完成'); } function onUpdateTeamMember(teamMember) { console.log('群成员信息更新了', teamMember); onTeamMembers({ teamId: teamMember.teamId, members: teamMember }); } function refreshTeamMembersUI() { // 刷新界面 } function onSessions(sessions) { console.log('收到会话列表', sessions); data.sessions = nim.mergeSessions(data.sessions, sessions); updateSessionsUI(); } function onUpdateSession(session) { console.log('会话更新了', session); data.sessions = nim.mergeSessions(data.sessions, session); updateSessionsUI(); } function updateSessionsUI() { // 刷新界面 } function onRoamingMsgs(obj) { console.log('漫游消息', obj); pushMsg(obj.msgs); } function onOfflineMsgs(obj) { console.log('离线消息', obj); pushMsg(obj.msgs); } function onMsg(msg) { console.log('收到消息', msg.scene, msg.type, msg); pushMsg(msg); } function pushMsg(msgs) { if (!Array.isArray(msgs)) { msgs = [msgs]; } var sessionId = msgs[0].sessionId; data.msgs = data.msgs || {}; data.msgs[sessionId] = nim.mergeMsgs(data.msgs[sessionId], msgs); } function onOfflineSysMsgs(sysMsgs) { console.log('收到离线系统通知', sysMsgs); pushSysMsgs(sysMsgs); } function onSysMsg(sysMsg) { console.log('收到系统通知', sysMsg) pushSysMsgs(sysMsg); } function onUpdateSysMsg(sysMsg) { pushSysMsgs(sysMsg); } function pushSysMsgs(sysMsgs) { data.sysMsgs = nim.mergeSysMsgs(data.sysMsgs, sysMsgs); refreshSysMsgsUI(); } function onSysMsgUnread(obj) { console.log('收到系统通知未读数', obj); data.sysMsgUnread = obj; refreshSysMsgsUI(); } function onUpdateSysMsgUnread(obj) { console.log('系统通知未读数更新了', obj); data.sysMsgUnread = obj; refreshSysMsgsUI(); } function refreshSysMsgsUI() { // 刷新界面 } function onOfflineCustomSysMsgs(sysMsgs) { console.log('收到离线自定义系统通知', sysMsgs); } function onCustomSysMsg(sysMsg) { console.log('收到自定义系统通知', sysMsg); } function onSyncDone() { console.log('同步完成'); } -
acceptSuperTeamInvite(options)
-
接受入群邀请
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description idServerString 对应的系统通知的
idServerteamIdString 群id
fromString 邀请方的帐号
donedone 结果回调函数, 成功时会收到
群资料Returns:
- Type
- Void
Example
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知 nim.acceptSuperTeamInvite({ idServer: sysMsg.idServer, teamId: '123', from: 'zyy1', done: acceptSuperTeamInviteDone }); function acceptSuperTeamInviteDone(error, obj) { console.log('接受入群邀请' + (!error?'成功':'失败'), error, obj); } -
acceptTeamInvite(options)
-
接受入群邀请
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description idServerString 对应的系统通知的
idServerteamIdString 群id
fromString 邀请方的帐号
donedone 结果回调函数, 成功时会收到
群资料Returns:
- Type
- Void
Example
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知 nim.acceptTeamInvite({ idServer: sysMsg.idServer, teamId: '123', from: 'zyy1', done: acceptTeamInviteDone }); function acceptTeamInviteDone(error, obj) { console.log('接受入群邀请' + (!error?'成功':'失败'), error, obj); } -
addCollect(options, done)
-
增加一个收藏
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description typeNumber 收藏的类型,只能是整数,开发者可自定义映射规则
dataString 收藏的具体内容,最大20480
uniqueIdString <optional>
唯一ID,可用于去重。当传入uniqueId时,会校验该ID之前是否存在,如不存在则会新增一个收藏,如存在则会更新之
customString <optional>
扩展字段,最大1024
donefunction 结果回调函数,第一个参数是error,第二个参数有一个collect属性,是新增收藏对象
-
addFriend(options)
-
直接加为好友
直接加某个用户为好友后, 对方不需要确认, 直接成为当前登录用户的好友。- 对方会收到一条类型为
'addFriend'的系统通知, 此类系统通知的from字段的值为申请方的帐号,to字段的值为接收方的账号。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description accountString 要直接加为好友的账号
psString <optional>
附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.addFriend({ account: 'account', ps: 'ps', done: addFriendDone }); function addFriendDone(error, obj) { console.log('直接加为好友' + (!error?'成功':'失败'), error, obj); if (!error) { onAddFriend(obj.friend); } } -
addMsgPin(options, done)
-
新增PIN一条消息
- 若成功,会触发相关人员的
onPinMsgChange初始化回调
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description msgObject 要PIN的消息对象
pinCustomString <optional>
PIN的扩展字段
donefunction 结果回调函数,第一个参数是error,代表是否有错
- 若成功,会触发相关人员的
-
addQuickComment(options, done)
-
增加一个快捷评论
- 不同于消息,评论只有几个简单的字段,可删除,不计入未读数
- 若成功,消息发送方和评论发送方的多端登录会收到
onQuickComment回调
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description msgIMMessage 被回复的消息,至少要包含
scene,from,to,idServer,idClient,time六个字段bodyNumber 评论的内容,只能是整数,开发者可自定义映射规则,如1点赞的表情、2对应鼓掌的表情等等
customString <optional>
扩展字段,最大8字节
needPushBoolean <optional>
false 是否需要推送
needBadgeBoolean <optional>
false 是否需要角标
pushTitleString <optional>
推送的标题
apnsTextString <optional>
自定义推送文案
pushPayloadString <optional>
第三方自定义的推送属性,限制json字符串,长度最大2048字节
donefunction 结果回调函数,第一个参数是error,第二个参数返回完整的评论内容和时间戳
-
addStickTopSession(options, done)
-
新增会话置顶
- 若成功,会触发
onupdatesession回调 - 多端登录时,会触发多端的
onupdatesession回调
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description idString 要置顶的会话ID
topCustomString <optional>
会话置顶的扩展字段
donefunction 结果回调函数,第一个参数是error,代表是否有错
- 若成功,会触发
-
addSuperTeamManagers(options)
-
添加群管理员
添加群管理员后, 所有群成员会收到一条类型为的'addSuperTeamManagers'群通知消息。此类群通知消息的from字段的值为添加群管理员的人的帐号,to字段的值为对应的群ID,attach有一个字段accounts的值为被加为管理员的帐号列表,attach有一个字段members的值为被加为管理员的群成员列表。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountsArray.<String> 要添加的管理员帐号列表
donedone 结果回调函数
- See:
Returns:
- Type
- Void
Example
nim.addSuperTeamManagers({ teamId: '123', accounts: ['a2', 'a3'], done: addSuperTeamManagersDone }); function addSuperTeamManagersDone(error, obj) { console.log('添加群管理员' + (!error?'成功':'失败'), error, obj); } -
addSuperTeamMembers(options)
-
添加群成员
- 当
超大群被邀请模式是needVerify时,添加群成员后,被邀请的人会直接进群,此时所有超大群群成员会收到一条类型为的'addSuperTeamMembers'群通知消息。此类群通知消息的from字段的值为邀请者的帐号,to字段的值为对应的群ID;attach有一个字段team的值为对应的超大群对象,有一个字段members是被邀请新入群的成员信息数组。 - 当
超大群被邀请模式是noVerify时,添加群成员后,被邀请的人会收到一条类型为'superTeamInvite'的系统通知, 此类系统通知的from字段的值为邀请方的帐号,to字段的值为对应的群ID, 此类系统通知的attach有一个字段team的值为被邀请进入的超大群, 被邀请的人可以选择接受入群邀请或者拒绝入群邀请。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description teamIdString 超大群ID
accountsArray.<String> 邀请入群的账号列表
psString <optional>
附言, 选填, 长度不能大于5000, 开发者也可以使用JSON格式的字符串来扩展此内容
donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.addSuperTeamMembers({ teamId: '123', accounts: ['a1', 'a1'], done: addSuperTeamMembersDone }) function addSuperTeamMembersDone(error, obj) { console.log('入群邀请发送' + (!error?'成功':'失败'), error, obj); } - 当
-
addTeamManagers(options)
-
添加群管理员
添加群管理员后, 所有群成员会收到一条类型为的'addTeamManagers'群通知消息。此类群通知消息的from字段的值为添加群管理员的人的帐号,to字段的值为对应的群ID,attach有一个字段accounts的值为被加为管理员的帐号列表,attach有一个字段members的值为被加为管理员的群成员列表。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountsArray.<String> 要添加的管理员帐号列表
donedone 结果回调函数
- See:
Returns:
- Type
- Void
Example
nim.addTeamManagers({ teamId: '123', accounts: ['a2', 'a3'], done: addTeamManagersDone }); function addTeamManagersDone(error, obj) { console.log('添加群管理员' + (!error?'成功':'失败'), error, obj); } -
addTeamMembers(options)
-
拉人入群
- 普通群,
拉人入群后, 所有群成员会收到一条类型为``'addTeamMembers'的群通知消息。此类群通知消息的from字段的值为拉人的人的帐号,to字段的值为对应的群ID,attach有一个字段team的值为对应的[群对象](#群对象),attach有一个字段accounts的值为被拉的人的帐号列表,attach有一个字段members`的值为被拉的群成员列表。- 被邀请的群成员在有人说话后才能看到该
群, 而且会先收到一条类型为的'addTeamMembers'群通知消息, 然后会收到其它群消息。
- 被邀请的群成员在有人说话后才能看到该
- 高级群的群主和管理员在邀请成员加入群(通过操作
创建群或拉人入群)之后, 被邀请的人会收到一条类型为'teamInvite'的系统通知, 此类系统通知的from字段的值为邀请方的帐号,to字段的值为对应的群ID, 此类系统通知的attach有一个字段team的值为被邀请进入的群, 被邀请的人可以选择接受邀请或者拒绝邀请。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description teamIdString 群id
accountsArray.<String> 要拉进群的成员的帐号列表
psString <optional>
附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
customString <optional>
自定义扩展字段,选填,最长512字符,开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.addTeamMembers({ teamId: '123', accounts: ['a3', 'a4'], ps: '加入我们的群吧', custom: '', done: addTeamMembersDone }); function addTeamMembersDone(error, obj) { console.log('入群邀请发送' + (!error?'成功':'失败'), error, obj); } - 普通群,
-
addToBlacklist(options)
-
加入黑名单
- 如果一个用户被加入了黑名单, 那么就不再会收到此用户发送的消息
- SDK内部调用
nim.markInBlacklist来完成实际工作
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description accountString 要加入黑名单的账号
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.addToBlacklist({ account: 'account', done: addToBlacklistDone }); function addToBlacklistDone(error, obj) { console.log('加入黑名单' + (!error?'成功':'失败'), error, obj); if (!error) { addToBlacklist(obj); } } -
addToMutelist(options)
-
加入静音列表
- SDK只负责维护静音列表, 具体要根据静音列表进行的操作由开发者决定
- SDK内部调用
nim.markInMutelist来完成实际工作
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description accountString 要加入静音列表的账号
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.addToMutelist({ account: 'account', done: addToMutelistDone }); function addToMutelistDone(error, obj) { console.log('加入静音列表' + (!error?'成功':'失败'), error, obj); if (!error) { addToMutelist(obj); } } -
applyFriend(options)
-
申请加为好友
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description accountString 要申请加为好友的账号
psString <optional>
附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.applyFriend({ account: 'account', ps: 'ps', done: applyFriendDone }); function applyFriendDone(error, obj) { console.log('申请加为好友' + (!error?'成功':'失败'), error, obj); } -
applySuperTeam(options)
-
申请入群
- 用户可以主动
申请加入超大群, 目标群的群主和管理员会收到一条类型为'applySuperTeam'的系统通知, 此类系统通知的from字段的值为申请方的帐号,to字段的值为对应的群ID, 高级群的群主和管理员在收到入群申请后, 可以选择通过或者拒绝入群申请。- 如果
通过入群申请, 那么该群的所有群成员会收到一条类型为'passSuperTeamApply'的群通知消息, 此类群通知消息的from字段的值为通过入群申请的人的帐号,to字段的值为对应的群ID,attach有一个字段team的值为对应的群对象,attach有一个字段account包含了申请方的帐号,attach有一个字段members的值为被通过申请的群成员列表。 - 如果
拒绝入群申请, 那么申请人会收到一条类型为'rejectSuperTeamApply'的系统通知, 此类系统通知的from字段的值为拒绝方的帐号,to字段的值为对应的群ID,attach有一个字段team的值为对应的群。
- 如果
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description teamIdString 群id
psString <optional>
附言, 选填, 长度不能大于5000, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数, 成功时会收到
群资料Returns:
- Type
- Void
Example
nim.applySuperTeam({ teamId: '123', ps: '请加', done: applySuperTeamDone }); function applySuperTeamDone(error, obj) { console.log('申请入群' + (!error?'成功':'失败'), error, obj); } - 用户可以主动
-
applyTeam(options)
-
申请入群
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description teamIdString 群id
psString <optional>
附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数, 成功时会收到
群资料Returns:
- Type
- Void
Example
nim.applyTeam({ teamId: '123', ps: '请加', done: applyTeamDone }); function applyTeamDone(error, obj) { console.log('申请入群' + (!error?'成功':'失败'), error, obj); } -
audioToMp3(options)
-
将音频 url 转为 mp3
- 此方法会返回一个新的 url
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description urlString url
Returns:
转为 mp3 后的 url
- Type
- String
Example
var url = 'http://b12026.nos.netease.com/MTAxMTAxMA==/bmltYV8xMTQwMzFfMTQ1MTg4ODk5MjMxMV9mNmI1Y2QyZC03N2UzLTQxNmUtYWY5NC1iODlhZGY4ZTYzYWQ='; var mp3Url = nim.audioToMp3({ url: url }); console.log(mp3Url); -
audioToText(options)
-
音频转文字
- 仅支持通过
previewFile或者sendFile拿到的音频 url, 或者收到的音频消息的 url
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description urlString 音频 url
donefunction 结果回调函数, 成功时会额外附上文本 text
Returns:
- Type
- Void
Example
var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ1MTg5MDI2MjY0MF9lYzk1MWMyZC1hMzRmLTQ1YzctYWI2ZS1kZWE2NTA2M2Q4NjY='; nim.audioToText({ url: url, done: audioToTextDone }); function audioToTextDone(error, obj) { console.log('语音转文字' + (!error?'成功':'失败'), error, obj); } - 仅支持通过
-
blurImage(options, radius, sigma)
-
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description urlString 原图 url
radiusNumber 高斯模糊半径, 不包含中心点的像素, 取值范围 [1,50]
sigmaNumber 高斯模糊标准差, 不能小于 0
options.donedone 结果回调函数, 成功时附上高斯模糊后的图片 url
Returns:
- Type
- Void
Example
var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ0MzE0NTgyNDI0M184YjFkYTMwMS02NjcxLTRiYjktYTUwZC04ZTVlZjZlNzZjMzA='; var blurUrl = nim.blurImage({ url: url, radius: 5, sigma: 3, done: blurImageDone }); function blurImageDone(error, obj) { console.log('高斯模糊图片' + (!error?'成功':'失败'), error, obj); } -
clearServerHistoryMsgs(options)
-
删除单人会话服务器聊天记录(此接口废弃,请使用 clearServerHistoryMsgsWithSync )
- 更多功能参考:
删除会话服务器聊天记录,支持群聊场景,支持多端同步
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description accountString 对方账号
delRoamBoolean 是否同时删除漫游,默认
truedonefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.clearServerHistoryMsgs({ account: 'xxx', delRoam: false, done: clearServerHistoryMsgsDone }); function clearServerHistoryMsgsDone(error, obj) { console.log('删除服务器消息' + (!error?'成功':'失败'), error, obj); } - 更多功能参考:
-
clearServerHistoryMsgsWithSync(options)
-
删除会话服务器聊天记录
- 该API和
clearServerHistoryMsgs有以下几点不同 - 该API支持群聊场景;
clearServerHistoryMsgs不支持 - 该API支持多端同步;
clearServerHistoryMsgs不支持 - 该API清空服务器聊天记录后,会同步删除本地db中的会话消息;
clearServerHistoryMsgs不会同步删除本地消息
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description sceneString 场景,仅支持p2p和teamtoString 对方账号或群ID
isSyncSelfBoolean <optional>
false 是否多端同步。默认
falseextString <optional>
扩展字段
donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.clearServerHistoryMsgsWithSync({ type: 1, account: 'xxx', isSyncSelf: false, done: function (error, obj) {} }); - 该API和
-
connect()
-
登录 SDK
- See:
Returns:
- Type
- Void
Example
nim.connect();
-
createTeam(options)
-
创建群
普通群不可以设置群加入方式高级群的群加入方式默认为'needVerify'高级群的群被邀请模式默认为'needVerify'高级群的群邀请模式默认为'manager'高级群的群信息修改权限默认为'manager'高级群的群信息自定义字段修改权限默认为'manager'普通群被邀请的群成员在有人说话之后才会看到该群, 而且会先收到一条类型为'addTeamMembers'的群通知消息, 然后会收到其它群消息。高级群被邀请的群成员会收到一条类型为'teamInvite'的系统通知。- 接受邀请后, 所有
群成员会收到一条类型为'acceptTeamInvite'的群通知消息。 - 拒绝邀请后,
群主会收到一条类型为'rejectTeamInvite'的系统通知。
- 接受邀请后, 所有
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description typeString 群类型nameString 群名字
avatarString 群头像
accountsArray.<String> 要拉进群的成员的帐号列表
introString <optional>
群简介
announcementString <optional>
群公告
joinModeString <optional>
群加入方式beInviteModeString <optional>
群被邀请模式inviteModeString <optional>
群邀请模式updateTeamModeString <optional>
群信息修改权限updateCustomModeString <optional>
customString <optional>
扩展字段
antiSpamBusinessIdString <optional>
用户配置的对某些资料内容另外的反垃圾的业务ID
psString <optional>
附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数, 成功时会收到
群资料Returns:
- Type
- Void
Example
// 创建普通群 nim.createTeam({ type: 'normal', name: '普通群', avatar: 'avatar', accounts: ['a1', 'a2'], ps: '我建了一个普通群', done: createTeamDone }); // 创建高级群 nim.createTeam({ type: 'advanced', name: '高级群', avatar: 'avatar', accounts: ['a1', 'a2'], intro: '群简介', announcement: '群公告', // joinMode: 'needVerify', // beInviteMode: 'needVerify', // inviteMode: 'manager', // updateTeamMode: 'manager', // updateCustomMode: 'manager', ps: '我建了一个高级群', done: createTeamDone }); function createTeamDone(error, obj) { console.log('创建' + obj.team.type + '群' + (!error?'成功':'失败'), error, obj); if (!error) { onCreateTeam(obj.team, obj.owner); } } -
cropImage(options)
-
裁剪图片
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description urlString 原图 url
xInt 起点坐标 x, 必须需为整数, 此方法内部使用 Math.round 来格式化 x/y/width/height
yInt 起点坐标 y, 必须需为整数, 此方法内部使用 Math.round 来格式化 x/y/width/height
widthInt 宽度, 必须需为整数, 此方法内部使用 Math.round 来格式化 x/y/width/height
heightInt 高度, 必须需为整数, 此方法内部使用 Math.round 来格式化 x/y/width/height
donedone 结果回调函数, 成功时附上裁剪后的图片的 url
Returns:
- Type
- Void
Example
var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ0MzE0NTgyNDI0M184YjFkYTMwMS02NjcxLTRiYjktYTUwZC04ZTVlZjZlNzZjMzA='; var cropUrl = nim.cropImage({ url: url, x: 100, y: 0, width: 250, height: 250, done: function cropImageDone }); function cropImageDone(error, obj) { console.log('裁剪图片' + (!error?'成功':'失败'), error, obj); } -
cutFriends(olds, invalids)
-
去除好友
- 此方法不会改变参数的值,而是会返回新的数组,包含去除后的好友列表
- 去除时按照
account的值去除 - 此方法内部调用
NIM.util.cutObjArray来完成实际工作
if (!olds) {return olds;} if (!invalids) {return olds;} if (!NIM.util.isArray(invalids)) { invalids = [invalids]; } if (!invalids.length) {return olds;} var options = { keyPath: 'account' }; NIM.util.cutObjArray(olds, invalids, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.cutObjArray来去除好友
Parameters:
Name Type Description oldsArray.<Friend> 原始好友数组
invalidsFriend | Array.<Friend> 待去除的好友或好友数组
Returns:
去除后的好友数组
- Type
- Array.<Friend>
-
cutFriendsByAccounts(olds, invalids)
-
去除
accounts对应的好友- 此方法不会改变参数的值,而是会返回新的数组,包含去除后的好友列表
- 去除时按照
account的值去除 - 此方法内部调用
nim.cutFriends来完成实际工作
if (!NIM.util.isArray(accounts)) { accounts = [accounts]; } var invalids = accounts.map(function(account) { return { account: account }; }); return nim.cutFriends(olds, invalids);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.cutObjArray来去除好友
Parameters:
Name Type Description oldsArray.<Friend> 原始好友数组
invalidsFriend | Array.<Friend> 待去除的好友或好友数组
Returns:
去除后的好友数组
- Type
- Array.<Friend>
-
cutLoginPorts(olds, invalids)
-
去除登录端
- 此方法不会改变参数的值,而是会返回新的数组,包含去除后的登录端列表
- 去除时按照
account的值去除 - 此方法内部调用
NIM.util.cutObjArray来完成实际工作
if (!olds) {return olds;} if (!invalids) {return olds;} if (!NIM.util.isArray(invalids)) { invalids = [invalids]; } if (!invalids.length) {return olds;} var options = { keyPath: 'account' }; NIM.util.cutObjArray(olds, invalids, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.cutObjArray来去除登录端
Parameters:
Name Type Description oldsArray.<LoginPort> 原始登录端数组
invalidsLoginPort | Array.<LoginPort> 待去除的登录端或登录端数组
Returns:
去除后的登录端数组
- Type
- Array.<LoginPort>
-
cutRelations(olds, invalids)
-
去除关系
- 此方法不会改变参数的值,而是会返回新的数组,包含去除后的关系列表
- 去除时按照
account的值去除 - 此方法内部调用
NIM.util.cutObjArray来完成实际工作
if (!olds) {return olds;} if (!invalids) {return olds;} if (!NIM.util.isArray(invalids)) { invalids = [invalids]; } if (!invalids.length) {return olds;} var options = { keyPath: 'account' }; NIM.util.cutObjArray(olds, invalids, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.cutObjArray来去除关系
Parameters:
Name Type Description oldsArray.<Relation> 原始关系数组
invalidsRelation | Array.<Relation> 待去除的关系或关系数组
Returns:
去除后的关系数组
- Type
- Array.<Relation>
-
cutTeamMembers(olds, invalids)
-
去除群成员
- 此方法不会改变参数的值,而是会返回新的数组,包含去除后的群成员列表
- 去除时按照
id的值去除 - 此方法内部调用
NIM.util.cutObjArray来完成实际工作
if (!olds) {return olds;} if (!invalids) {return olds;} if (!NIM.util.isArray(invalids)) { invalids = [invalids]; } if (!invalids.length) {return olds;} var options = { }; NIM.util.cutObjArray(olds, invalids, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.cutObjArray来去除群成员
Parameters:
Name Type Description oldsArray.<TeamMember> 原始群成员数组
invalidsTeamMember | Array.<TeamMember> 待去除的群成员或群成员数组
Returns:
去除后的群成员数组
- Type
- Array.<TeamMember>
-
cutTeamMembersByAccounts(olds, invalids)
-
去除
accounts对应的群成员- 此方法不会改变参数的值,而是会返回新的数组,包含去除后的群成员列表
- 去除时按照
account的值去除 - 此方法内部调用
nim.cutTeamMembers来完成实际工作
if (!NIM.util.isArray(accounts)) { accounts = [accounts]; } var invalids = TeamMember.assembleMembers({ teamId: teamId }, accounts); return nim.cutTeamMembers(olds, invalids);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.cutObjArray来去除群成员
Parameters:
Name Type Description oldsArray.<TeamMember> 原始群成员数组
invalidsTeamMember | Array.<TeamMember> 待去除的群成员或群成员数组
Returns:
去除后的群成员数组
- Type
- Array.<TeamMember>
-
cutTeams(olds, invalids)
-
去除群
- 此方法不会改变参数的值,而是会返回新的数组,包含去除后的群列表
- 去除时按照
teamId的值去除 - 此方法内部调用
NIM.util.cutObjArray来完成实际工作
if (!olds) {return olds;} if (!invalids) {return olds;} if (!NIM.util.isArray(invalids)) { invalids = [invalids]; } if (!invalids.length) {return olds;} var options = { keyPath: 'teamId' }; NIM.util.cutObjArray(olds, invalids, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.cutObjArray来去除群
Parameters:
Name Type Description oldsArray.<Team> 原始群数组
invalidsTeam | Array.<Team> 待去除的群或群数组
Returns:
去除后的群数组
- Type
- Array.<Team>
-
deleteAllLocalMsgs(options)
-
删除所有本地消息
- 如果不
支持数据库, 算成功 - 此方法同时会清空所有的会话
Parameters:
Name Type Description optionsObject 配置参数
Returns:
- Type
- Void
Example
nim.deleteAllLocalMsgs({ done: deleteAllLocalMsgsDone }); function deleteAllLocalMsgsDone(error, obj) { console.log('删除所有本地消息' + (!error?'成功':'失败'), error, obj); } - 如果不
-
deleteAllLocalSysMsgs(options)
-
删除所有本地系统通知
- 如果不
支持数据库, 算成功
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.deleteAllLocalSysMsgs({ done: deleteAllLocalSysMsgsDone }); function deleteAllLocalSysMsgsDone(error, obj) { console.log(error); console.log(obj); console.log('删除所有本地系统通知' + (!error?'成功':'失败')); } - 如果不
-
deleteCollects(options, done)
-
批量删除收藏
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description collectListObject 要删除的收藏列表,每个收藏对象至少要包含
id、createTime两个字段;列表长度不能大于100donefunction 结果回调函数,第一个参数是error,第二个参数有一个属性
deleteNum,代表成功删除的个数 -
deleteFriend(options)
-
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description accountString 要删除好友的账号
delAliasBoolean 是否要删除好友的备注,默认
false不删除donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.deleteFriend({ account: 'account', delAlias: true, done: deleteFriendDone }); function deleteFriendDone(error, obj) { console.log('删除好友' + (!error?'成功':'失败'), error, obj); if (!error) { onDeleteFriend(obj.account); } } -
deleteLocalMsg(options)
-
删除本地消息
- 在
支持数据库时- 如果删除的是对应会话的最后一条消息, 那么对应会话的
lastMsg属性会自动变为变为上一条消息, 同时触发onupdatesession回调 - 如果对应的消息不存在, 算成功
- 如果删除的是对应会话的最后一条消息, 那么对应会话的
- 如果不
支持数据库, 算成功
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description msgIMMessage 待删除的消息
donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.deleteLocalMsg({ msg: msg, done: deleteLocalMsgDone }); function deleteLocalMsgDone(error, obj) { console.log('删除本地消息' + (!error?'成功':'失败'), error, obj); } - 在
-
deleteLocalMsgs(options)
-
根据会话ID、起始时间等条件删除本地消息
- 结束时间大于开始时间
- 这个方法会更新会话最后一条消息
- 如不传开始时间和结束时间,则删除某个会话的所有本地消息 相当于
删除某个会话的本地消息
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description sessionIdString 会话ID
startNumber <optional>
开始时间,毫秒时间戳,默认为负无穷大
endNumber <optional>
结束时间,毫秒时间戳,默认为无穷大
updateSessionBoolean <optional>
true 是否同步更新会话。为
true,在删除完消息后SDK会检查是否更新对应会话中的lastMsg;为false,则SDK仅删除本地消息,不更新会话。若开发者确定没有删除最后一定消息,建议传false,减少不必要的检测和更新donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.deleteLocalMsgs({ sessionId: 'p2p-xx', start: 1561355358000, end: 1561355458000, done: deleteLocalMsgsDone }); function deleteLocalMsgsDone(error, obj) { console.log('删除会话本地消息' + (!error?'成功':'失败'), error, obj); } -
deleteLocalMsgsBySession(options)
-
删除某个会话的本地消息
- 如果不
支持数据库, 算成功
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description sceneString toString 聊天对象, 账号或者群id
delLastMsgBoolean <optional>
false 是否同时删除本地会话对象中的的lastMsg
isTagBoolean <optional>
false 是否为标记删除,若为
true,则SDK会记录本地清空会话的时间戳,再调用获取历史消息或获取包含关键词的历史消息接口时,便不能再获取到该时间戳之前的消息了donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.deleteLocalMsgsBySession({ scene: 'p2p', to: 'account', delLastMsg: true, done: deleteLocalMsgsBySessionDone }); function deleteLocalMsgsBySessionDone(error, obj) { console.log('删除会话本地消息' + (!error?'成功':'失败'), error, obj); } - 如果不
-
deleteLocalSession(options)
-
删除本地会话
- 删了本地会话之后, 并且设置isDeleteRoaming为true下次同步就同步不到对应的会话
- 如果对应的会话不存在, 算成功
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description idString | Array.<String> 会话 id 或 id 数组
isLogicBoolean <optional>
false 是否为逻辑删除。7.9.1版本新增,逻辑删除不会真的删除本地会话,而是标记会话为“已删除”状态,这样可以保留会话的
unread和msgReceiptTime,下次新建该会话时,可以保持正确的未读数和已读时间戳isDeleteRoamingBoolean <optional>
false 是否需要删除此会话的服务器漫游消息。8.2.0版本新增,写 true 的话,下次登录服务器不再下发此会话的漫游消息,此规则会影响多端登录的其他端,慎用。
donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.deleteLocalSession({ id: 'p2p-account', done: deleteLocalSessionDone }); function deleteLocalSessionDone(error, obj) { console.log('删除本地会话' + (!error?'成功':'失败'), error, obj); } -
deleteLocalSysMsg(options)
-
删除本地系统通知
- 删除
idServer对应的本地系统通知 - 如果不
支持数据库, 算成功 - 如果对应的系统通知不存在, 算成功
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description idServerString | Array.<String> idServer 或 idServer 数组
donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.deleteLocalSysMsg({ idServer: '1234', done: deleteLocalSysMsgDone }); function deleteLocalSysMsgDone(error, obj) { console.log(error); console.log(obj); console.log('删除本地系统通知' + (!error?'成功':'失败')); } - 删除
-
deleteLocalTeam(options)
-
删除
teamId对应的本地群- 如果不
支持数据库, 算成功 - 如果当前用户还在群里面, 那么会失败
- 如果对应的群不存在, 算成功
- 如果传了多个 teamId, 但是当前用户还在某个群里面, 那么会失败, 但是所有用户不在的群都会被删掉
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString | Array.<String> teamId 或者 teamId 数组
donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.deleteLocalTeam({ teamId: '1234', done: deleteLocalTeamDone }); function deleteLocalTeamDone(error, obj) { console.log('删除本地群' + (!error?'成功':'失败')); console.log(error); console.log(obj); } - 如果不
-
deleteMsg(options)
-
此api已更名为 recallMsg,请使用 recallMsg 兼容后续版本升级!
撤回消息
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description msgIMMessage 待撤回的消息
apnsTextString <optional>
自定义推送文案
pushPayloadString <optional>
第三方自定义的推送属性,限制json字符串,长度最大2048
psString <optional>
附言
attachString <optional>
附加信息,推荐使用JSON格式构建
envString <optional>
抄送环境
donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.deleteMsg({ msg: someMsg, done: deleteMsgDone }) console.log('正在撤回消息', someMsg) function deleteMsgDone (error) { console.log('撤回消息' + (!error?'成功':'失败'), error); } -
deleteMsgPin(options, done)
-
取消PIN一条消息,即unPin
- 若成功,会触发相关人员的
onPinMsgChange初始化回调
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description msgObject 要PIN的消息对象
donefunction 结果回调函数,第一个参数是error,代表是否有错
- 若成功,会触发相关人员的
-
deleteMsgSelf(options)
-
单向删除消息
- 不同与直接删除消息,单向删除消息后,自己看不到删除的消息,但对方仍能看到,也就是仅删除自己这侧的消息
- 如果存在多端登录,其他端会收到一个单向删除的系统通知
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description msgIMMessage 待删除的消息
customObject <optional>
扩展字段
doneObject 结果回调函数,第一个参数是error,若为
null,则说明删除成功 -
deleteMsgSelfBatch(options)
-
批量单向删除消息
- 不同与直接删除消息,单向删除消息后,自己看不到删除的消息,但对方仍能看到,也就是仅删除自己这侧的消息
- 如果存在多端登录,其他端会收到一条批量单向删除的系统通知
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description msgsIMMessage 待删除的消息列表
customObject <optional>
扩展字段
doneObject 结果回调函数,第一个参数是error,若为
null,则说明删除成功 -
deleteNosAccessToken(options)
-
删除NOS安全下载token
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description tokenObject 需要删除的token
doneObject 结果回调函数
-
deleteQuickComment(options, done)
-
删除一个快捷评论
- 不同于消息,评论只有几个简单的字段,可删除,不计入未读数
- 若成功,消息发送方和评论发送方的多端登录会收到
onDeleteQuickComment回调
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description msgIMMessage 被回复的消息,至少要包含
scene,from,to,idServer,idClient,time六个字段bodyNumber 评论的内容,只能是整数,开发者可自定义映射规则,如1点赞的表情、2对应鼓掌的表情等等
customString <optional>
扩展字段
needPushBoolean <optional>
false 是否需要推送
needBadgeBoolean <optional>
false 是否需要角标
pushTitleString <optional>
推送的标题
apnsTextString <optional>
自定义推送文案
pushPayloadString <optional>
第三方自定义的推送属性,限制json字符串,长度最大2048
donefunction 结果回调函数,第一个参数是error,第二个参数返回完整的评论内容和时间戳
-
deleteServerSessions(options)
-
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description sessionsArray 会话数组,数组项是一个对象,对象必须要包含scene、to两个属性
session.sceneString 会话
场景session.toString 对方账号或群ID
Example
nim.deleteServerSessions({ sessions: [{ scene: 'p2p', to: 'account' }, { scene: 'p2p', to: 'account1' }], done: function (error, obj) { console.log('删除会话' + (!error?'成功':'失败'), error, obj); } }); -
deleteSession(options)
-
删除服务器上的漫游会话
此api已更名为deleteRoamingMsgBySession,后续版本即将删除,请使用deleteRoamingMsgBySession兼容后续版本升级!- 删了后, 在不
支持数据库时, 下次同步就同步不到对应的会话以及会话对应的漫游消息; 此外, 在新设备上也同步不到对应的会话以及会话对应的漫游消息
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description sceneString toString 对方账号或群ID
donedone 结果回调函数
- See:
Returns:
- Type
- Void
Example
nim.deleteSession({ scene: 'p2p', to: 'account', done: deleteSessionDone }); function deleteSessionDone(error, obj) { console.log('删除会话' + (!error?'成功':'失败'), error, obj); } - 删了后, 在不
-
deleteSessions(options)
-
批量删除服务器上的漫游会话
- 删了服务器上的漫游会话之后, 在不
支持数据库时, 下次同步就同步不到对应的会话以及会话对应的漫游消息; 此外, 在新设备上也同步不到对应的会话以及会话对应的漫游消息
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description sessionsArray.<Session> 会话列表
donedone 结果回调函数
- See:
Returns:
- Type
- Void
Example
nim.deleteSessions({ sessions: [{ scene: 'p2p', to: 'account' }, { scene: 'p2p', to: 'account1' }], done: deleteSessionsDone }); function deleteSessionsDone(error, obj) { console.log('批量删除会话' + (!error?'成功':'失败'), error, obj); } - 删了服务器上的漫游会话之后, 在不
-
deleteSessionsWithMoreRoaming(options)
-
根据id删除漫游消息不全的会话
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description idString 要删除的会话id
donefunction -
deleteStickTopSession(options, done)
-
取消会话置顶
- 若成功,会触发
onupdatesession回调 - 多端登录时,会触发多端的
onupdatesession回调
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description idString 取消置顶的会话ID
donefunction 结果回调函数,第一个参数是error,代表是否有错
- 若成功,会触发
-
disconnect()
-
断开连接(包含登出
logout)- See:
Returns:
- Type
- Void
Example
nim.disconnect();
-
dismissTeam(options)
-
解散群
解散群后, 所有群成员会收到一条类型为的'dismissTeam'群通知消息。此类群通知消息的from字段为解散群的人的帐号,to字段的值为被对应的群ID。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.dismissTeam({ teamId: '123', done: dismissTeamDone }); function dismissTeamDone(error, obj) { console.log('解散群' + (!error?'成功':'失败'), error, obj); } -
filterClientAntispam(content, antispamLexicon, code, type, content)
-
检查客户端反垃圾
- 开发者在
getClientAntispamLexicon获取反垃圾词库以后,可以通过此接口识别判断是否是垃圾文本
Parameters:
Name Type Description contentString 待检查文本
antispamLexiconObject 反垃圾词库,可选
codeString 错误码
typeInteger 反垃圾类型
contentString 过滤后文本
Returns:
- Type
- Object
Example
nim.filterClientAntispam({ content: '啦啦啦' }); - 开发者在
-
findFriend(friends, account)
-
在好友数组里面根据
account找到对应的好友- 此方法内部调用
NIM.util.findObjInArray来完成实际工作
NIM.util.findObjInArray(friends, { keyPath: 'account', value: account });- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个好友
Parameters:
Name Type Description friendsArray.<Friend> 好友数组
accountString 待查找的好友的
accountReturns:
对应的好友或者 null
- Type
- Friend | null
- 此方法内部调用
-
findMsg(msgs, idClient)
-
在消息数组里面根据
idClient找到对应的消息- 此方法内部调用
NIM.util.findObjInArray来完成实际工作
NIM.util.findObjInArray(msgs, { keyPath: 'idClient', value: idClient });- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个消息
Parameters:
Name Type Description msgsArray.<Message> 消息数组
idClientString 待查找的消息的
idClientReturns:
对应的消息或者 null
- Type
- Message | null
- 此方法内部调用
-
findRelation(relations, account)
-
在关系数组里面根据
account找到对应的关系- 此方法内部调用
NIM.util.findObjInArray来完成实际工作
NIM.util.findObjInArray(relations, { keyPath: 'account', value: account });- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个关系
Parameters:
Name Type Description relationsArray.<Relation> 关系数组
accountString 待查找的关系的
accountReturns:
对应的关系或者 null
- Type
- Relation | null
- 此方法内部调用
-
findSession(sessions, sessionId)
-
在会话数组里面根据
id找到对应的会话- 此方法内部调用
NIM.util.findObjInArray来完成实际工作
NIM.util.findObjInArray(sessions, { keyPath: 'id', value: sessionId });- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个会话
Parameters:
Name Type Description sessionsArray.<Session> 会话数组
sessionIdString 待查找的会话的
idReturns:
对应的会话或者 null
- Type
- Session | null
- 此方法内部调用
-
findSysMsg(sysMsgs, idServer)
-
在系统通知数组里面根据
idServer找到对应的系统通知- 此方法内部调用
NIM.util.findObjInArray来完成实际工作
NIM.util.findObjInArray(sysMsgs, { keyPath: 'idServer', value: idServer });- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个系统通知
Parameters:
Name Type Description sysMsgsArray.<SystemMessage> 系统通知数组
idServerString 待查找的系统通知的
idServerReturns:
对应的系统通知或者 null
- Type
- SystemMessage | null
- 此方法内部调用
-
findTeam(teams, teamId)
-
在群数组里面根据
teamId找到对应的群- 此方法内部调用
NIM.util.findObjInArray来完成实际工作
NIM.util.findObjInArray(teams, { keyPath: 'teamId', value: teamId });- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个群
Parameters:
Name Type Description teamsArray.<Team> 群数组
teamIdString 待查找的群的
teamIdReturns:
对应的群或者 null
- Type
- Team | null
- 此方法内部调用
-
findTeamMember(members, id)
-
在群成员数组里面根据
id找到对应的群成员- 此方法内部调用
NIM.util.findObjInArray来完成实际工作
NIM.util.findObjInArray(members, { keyPath: 'id', value: id });- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个群成员
Parameters:
Name Type Description membersArray.<TeamMember> 群成员数组
idString 待查找的群成员的
idReturns:
对应的群成员或者 null
- Type
- TeamMember | null
- 此方法内部调用
-
findUser(users, account)
-
在名片数组里面根据
account找到对应的名片- 此方法内部调用
NIM.util.findObjInArray来完成实际工作
NIM.util.findObjInArray(users, { keyPath: 'account', value: account });- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个名片
Parameters:
Name Type Description usersArray.<User> 名片数组
accountString 待查找的名片的
accountReturns:
对应的名片或者 null
- Type
- User | null
- 此方法内部调用
-
forwardMsg(options)
-
转发消息
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description msgIMMessage 待转发的消息
sceneString 新的
场景toString 新的接收方, 对方帐号或者群id
donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.forwardMsg({ msg: someMsg, scene: 'p2p', to: 'account', done: sendMsgDone }) console.log('正在转发消息', someMsg) -
getAllSuperTeamMembers(options)
-
获取超大群成员。群成员信息体积太大时,会分多次返回,即options.done会被调用多次,回调函数的第二个参数有一个
isAll属性,用来标示是否返回完毕- 接受入群邀请之后可调用此方法来获取
超大群群成员列表
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
donedone 结果回调函数, 成功时会额外附上
群成员列表- See:
Returns:
- Type
- Void
Example
nim.getAllSuperTeamMembers({ teamId: '123', done: getAllSuperTeamMembersDone }); function getAllSuperTeamMembersDone(error, obj) { console.log('获取群成员' + (!error?'成功':'失败')); console.log('群成员', obj.members) } - 接受入群邀请之后可调用此方法来获取
-
getChatroomAddress(options)
-
获取聊天室服务器地址
- 可以在 IM 连接上获取聊天室服务器地址
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description chatroomIdString <optional>
聊天室 id
Returns:
- Type
- Void
Example
nim.getChatroomAddress({ chatroomId: 'chatroomId', done: getChatroomAddressDone }); function getChatroomAddressDone(error, obj) { console.log('获取聊天室地址' + (!error?'成功':'失败'), error, obj); } -
getClientAntispamLexicon()
-
获取反垃圾词库
- 开发者可以通过此接口获取反垃圾的词库
- 通过回调参数,开发者可以检查词库是否合规
- 回调函数第一个参数为该接口是否有错,第二个参数为词库对象,词库加载后会自动保存在内存中,开发者可以手动传入或者直接使用
Returns:
反垃圾词库文件file包含
- version 词库版本
- md5 词库文件的md5
- nosurl 词库文件的下载地址
- thesaurus 词库内容
- Type
- Void
Example
nim.getClientAntispamLexicon({ done: function(error, file) { console.log(error, file) } }); - 开发者可以通过此接口获取反垃圾的词库
-
getCollects(options)
-
查询收藏列表
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description typeNumber <optional>
要查询的收藏类型,缺省表示所有类型
beginTimeNumber <optional>
时间戳, 开始时间, 精确到ms, 默认为0
endTimeNumber <optional>
时间戳, 结束时间, 精确到ms, 默认为服务器的最新时间
lastIdString <optional>
上次查询的最后一条收藏的
id, 第一次可不填limitNumber <optional>
100 本次查询的消息数量限制, 最多100条, 默认100条
reverseBoolean <optional>
false 默认
false表示从endTime开始往前查找历史消息,true表示从beginTime开始往后查找历史消息donefunction 结果回调函数,其第二个参数有两个属性
collectList和total,分别是查到的收藏列表和总数Returns:
- Type
- Void
-
getFriends(options)
-
获取好友列表
- 如果开发者在
初始化SDK的时候设置了syncFriends为false, 那么就收不到onfriends回调, 可以调用此接口来获取好友列表。
注:由于 8.9.0 之后好友数量上限变为 10000,远端协议不允许一口气下发 10000 个。
- 如果开发者使用数据库,那么此接口将会返回所有数据库中 valid: true 且 updateTime > options.timetag 的记录
- 如果开发者不使用数据库,那么使用此接口,传入 timetag,将会从服务器获取 updateTime > options.timetag 的 3000 条记录,分页逻辑请自行处理。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description updateTimeNumber 时间戳,默认 0。获取更新时间大于此时间戳的升序 3000 条好友。
donedone 结果回调函数, 成功的时候会收到
好友列表Returns:
- Type
- Void
Example
nim.getFriends({ done: getFriendsDone }); function getFriendsDone(error, friends) { console.log('获取好友列表' + (!error?'成功':'失败'), error, friends); if (!error) { onFriends(friends); } } - 如果开发者在
-
getHistoryMsgs(options)
-
获取云端历史记录
- 该接口用于获取一段时间内的历史消息, 由参数
beginTime和endTime来控制时间范围。- 当
reverse为false时, 后续查询的endTime对应上次查询的最后一条消息的time字段 - 当
reverse为true时, 后续查询的beginTime对应上次查询的最后一条消息的time字段
- 当
- 如果要搜索历史消息, 请参考
获取包含关键词的历史消息
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description sceneString 请参考
消息场景toString 聊天对象, 账号或者群id
beginTimeNumber <optional>
时间戳, 开始时间, 精确到ms, 默认为0
endTimeNumber <optional>
时间戳, 结束时间, 精确到ms, 默认为服务器的当前时间
lastMsgIdString <optional>
上次查询的最后一条消息的
idServer, 第一次不填limitNumber <optional>
本次查询的消息数量限制, 最多100条, 默认100条
reverseBoolean <optional>
false 默认
false表示从endTime开始往前查找历史消息;
true表示从beginTime开始往后查找历史消息ascBoolean <optional>
false 默认
false表示返回的消息按时间逆序排序;
true表示按时间正序排序msgTypesStringArray <optional>
['text', 'image', ...] 消息类型列表,默认全部消息类型
donedone 结果回调函数, 成功时会额外附上
消息列表Returns:
- Type
- Void
Example
nim.getHistoryMsgs({ scene: 'p2p', to: 'account', done: getHistoryMsgsDone }); function getHistoryMsgsDone(error, obj) { console.log('获取云端历史记录' + (!error?'成功':'失败'), error, obj); if (!error) { console.log(obj.msgs); } } - 该接口用于获取一段时间内的历史消息, 由参数
-
getLocalMsgByIdClient(options)
-
获取 idClient 对应的本地消息
- 如果不
支持数据库, 算成功, 返回 null
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description idClientString idClient
donefunction 结果回调函数, 成功时会额外附上
消息Returns:
- Type
- Void
Example
nim.getLocalMsgByIdClient({ idClient: 'd7a1b2c63066e1038e9aa01321652370', done: getLocalMsgByIdClientDone }); function getLocalMsgByIdClientDone(error, obj) { console.log('获取本地消息' + (!error?'成功':'失败'), error, obj); if (!error) { console.log(obj.msg); } } - 如果不
-
getLocalMsgs(options)
-
获取本地历史记录
- 如果不
支持数据库, 算成功, 返回空数组
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description sessionIdString <optional>
如果提供该参数, 那么查询该会话的消息
startNumber <optional>
0 开始时间
endNumber <optional>
Infinity 结束时间
descBoolean <optional>
true true 表示从 end 开始查, false 表示从 begin 开始查
limitNumber <optional>
100 limit 数量限制
typeString <optional>
消息类型, [indexedDB专用]如果提供该参数, 那么查询该类型的消息typesArray.<String> <optional>
[indexedDB专用]如果提供该参数, 那么查询这几种类型的消息
subTypesArray.<Interger> <optional>
[indexedDB专用]如果提供该参数, 那么查询这几种子类型的消息
keywordString <optional>
[indexedDB专用]如果提供参数, 那么查询匹配该关键词的消息
filterFuncfunction <optional>
[indexedDB专用]可选参数, 过滤函数, 接收消息对象, 返回 true 表示结果保留该消息
donedone 结果回调函数, 成功时会附上
消息列表Returns:
- Type
- Void
Example
nim.getLocalMsgs({ sessionId: 'p2p-account' limit: 100, done: getLocalMsgsDone }) function getLocalMsgsDone(error, obj) { console.log('获取本地消息' + (!error?'成功':'失败'), error, obj) } - 如果不
-
getLocalMsgsByIdClients(options)
-
获取 idClients 对应的本地消息
- 如果不
支持数据库, 算成功, 返回空数组
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description idClientsArray.<String> idClients
donefunction 结果回调函数, 成功时会额外附上
消息列表Returns:
- Type
- Void
Example
nim.getLocalMsgsByIdClients({ idClients: [ 'd7a1b2c63066e1038e9aa01321652370', '22e604c7811c23586355f63f24658525' ], done: getLocalMsgsByIdClientsDone }); function getLocalMsgsByIdClientsDone(error, obj) { console.log('获取本地消息' + (!error?'成功':'失败'), error, obj); if (!error) { console.log(obj.msgs); } } - 如果不
-
getLocalSession(options)
-
通过sessionId获取本地会话
- 如果
支持数据库, 则查找数据库中的对应会话,有则返回会话对象,无则返回 null - 如果不
支持数据库, 则查找之前同步到的会话列表,有则返回会话对象,无则返回 null
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description sessionIdString <optional>
需要查询的会话的
sessionIddonedone 结果回调函数
Returns:
- Type
- Void
Example
nim.getLocalSession({ sessionId: sessionId, done: getLocalSessionDone }); function getLocalSessionDone(error, obj) { console.log('获取本地会话操作' + (!error ? '完成' : '失败'), error, obj) if (!error) { onSession(obj); } } - 如果
-
getLocalSessions(options)
-
获取本地会话列表
- 从内存中获取, 未获取到则返回空数组
- 会话列表按时间逆序排列, 即最近聊过天的放在列表的最前面
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description lastSessionIdNumber <optional>
上次查询的最后一条会话的
id, 第一次不填limitNumber <optional>
本次查询的会话数量限制, 最多 100 条, 默认 100 条
reverseBoolean <optional>
false 默认
false表示从最近的会话开始往前查找本地会话;
true表示从第一条会话开始往后查找本地会话donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.getLocalSessions({ lastSessionId: lastSessionId, limit: 100, done: getLocalSessionsDone }); function getLocalSessionsDone(error, obj) { console.log('获取本地会话列表' + (!error?'成功':'失败'), error, obj); if (!error) { onSessions(obj.sessions); } } -
getLocalSessionsByMsgType(options)
-
获取本地会话列表,开发者可以指定排除
lastMsg的类型,比如获取lastMsg是非通知类型的会话列表- 如果不
支持数据库, 返回空数组 - 会话列表按时间逆序排列, 即最近聊过天的放在列表的最前面
- 与
getLocalSessions不同的是,该接口可以排除或指定lastMsg的类型,如当excludeType='notification'时,返回的session列表是包含非通知类型消息的会话,该会话的lastMsg为最后一条非通知消息 - 如果某会话中没有符合类型的消息,则lastMsg为null
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description excludeString | Array <optional>
lastMsg要排除的类型,具体参见
消息类型,如不填,表示lastMsg不排除任何类型donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.getLocalSessionsByMsgType({ exclude: 'notification', // exclude: ['notification', 'image'], done: getLocalSessionsByMsgTypeDone }); function getLocalSessionsByMsgTypeDone(error, obj) { console.log('获取会话列表' + (!error?'成功':'失败'), error, obj); if (!error) { onSessions(obj.sessions); } } - 如果不
-
getLocalSysMsgs(options)
-
获取本地系统通知
- 如果不
支持数据库, 算成功, 返回空数组
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description categoryString <optional>
typeString <optional>
readBoolean <optional>
可选
- 如果不传, 默认获取所有已读和未读的系统通知
- 如果传
true, 那么只获取已读的系统通知 - 如果传
false, 那么只获取未读的系统通知
lastIdServerString <optional>
上次查询的最后一条系统通知的
idServer, 第一次不填limitNumber <optional>
本次查询的消息数量限制, 最多 100 条, 默认 100 条
reverseBoolean <optional>
false 默认
false表示从最近的系统通知开始往前查找本地系统通知;
true表示从第一条系统通知开始往后查找本地系统通知donedone 结果回调函数, 成功时会额外附上
系统通知列表Returns:
- Type
- Void
Example
nim.getLocalSysMsgs({ lastIdServer: 'lastIdServer', limit: 100, done: getLocalSysMsgsDone }); function getLocalSysMsgsDone(error, obj) { console.log(error); console.log(obj); console.log('获取本地系统通知' + (!error?'成功':'失败')); if (!error) { console.log(obj.sysMsgs); } } - 如果不
-
getLocalTeamMembers(options)
-
获取本地群成员
- 如果不
支持数据库, 算成功
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString teamId 数组
accountsArray.<String> 成员account列表
donefunction 结果回调函数, 成功时会额外附上群列表
Returns:
- Type
- Void
Example
nim.getLocalTeamMembers({ teamIds: teamIds done: getLocalTeamMembers }); function getLocalTeamMembers(error, obj) { console.log('获取本地群成员' + (!error?'成功':'失败')); console.log(error); console.log(obj); } - 如果不
-
getLocalTeams(options)
-
获取
teamIds对应的本地群- 如果不
支持数据库, 算成功
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdsArray.<String> teamId 数组
donefunction 结果回调函数, 成功时会额外附上群列表
Returns:
- Type
- Void
Example
nim.getLocalTeams({ teamIds: teamIds done: getLocalTeamsDone }); function getLocalTeamsDone(error, obj) { console.log('获取本地群' + (!error?'成功':'失败')); console.log(error); console.log(obj); } - 如果不
-
getMsgPins(options, done)
-
获取会话的PIN消息列表
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description idString 会话ID
donefunction 结果回调函数,第一个参数是error,代表是否有错;第二个参数是返回的PIN消息列表
-
getMsgsByIdServer(options, done)
-
根据idServer批量查询服务器消息
- 主要用于Thread消息场景
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description reqMsgsObjectArray 数组的每个元素都是一个对象,包含
scene,from,to,idServer,time五个字段,数组长度最大为100donefunction 结果回调函数,第一个参数是error,第二个参数返回的具体消息列表
-
getMutedSuperTeamMembers(options)
-
获取超大群内被禁言的群成员列表
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description teamIdString 群id
joinTimeBoolean <optional>
0 获取
joinTime在此之后的被禁言的群成员limitObject <optional>
100 本次获取的群成员数量上限
reverseBoolean <optional>
false false 按joinTime正序排列 true - 按joinTime逆序排列
donedone 结果回调函数, 成功时会额外附上
群成员列表和分页数据(如果有的话)- See:
Returns:
- Type
- Void
Example
nim.getMutedSuperTeamMembers({ teamId: '123', joinTime: 0, limit: 100, done: onMembers(err, arr) }); function onMembers (error, arr) { console.log('获取群成员' + (!error?'成功':'失败')); console.log('群成员:', arr) var lastmembers = arr && arr[arr.length - 1] if (lastmembers) { // 继续获取下一页 nim.getMutedSuperTeamMembers({ teamId: '123', joinTime: lastmembers.joinTime, limit: 200, done: onMembers(err, arr) }) } } -
getMutedTeamMembers(options)
-
获取群禁言成员列表
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群 ID
Returns:
- Type
- Void
Example
nim.getMutedTeamMembers({ teamId: 'teamId', done: getMutedTeamMembersDone }) function getMutedTeamMembersDone (error, obj) { console.log('获取群禁言成员列表' + (!error?'成功':'失败')); } -
getNosAccessToken(options)
-
获取NOS安全下载token
- 在上传文件时,若设置参数
nosScenes为nim_security_开头的字符串,则需要调用该接口获取token后才能下载文件。nosScenes可在初始化时全局配置,也可在发送、预览某文件时单独设置 - 下载文件后请及时
删除token,避免token泄漏
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description urlObject 文件url
userAgentObject <optional>
用户user agent
extObject <optional>
扩展字段
doneObject 结果回调函数。第一个参数是错误信息,第二个参数是结果对象,它有
token和resUrl两个属性,分别是文件token和带有token的最终url(可以用该url直接下载文件) - 在上传文件时,若设置参数
-
getPushNotificationMultiportConfig()
-
获取当前多端推送配置选项
Returns:
多端推送配置选项
- Type
- PushNotificationMultiportConfig
-
getQChatAddress()
-
获取圈组功能的连接地址
- 可以在 IM 连接上获取圈组连接地址,再使用圈组 SDK 启动它。
Returns:
- Type
- String
Example
nim.getQChatAddress({ done: function (error, obj) { console.log('获取圈组连接地址' + (!error?'成功':'失败'), error, obj); } }); -
getQuickComments(options, done)
-
查询消息的快捷评论列表
- 可批量,即同时查询多个消息的评论列表
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description msgsIMMessageArray 被回复的消息,至少要包含
scene,from,to,idServer,idClient,time六个字段donefunction 结果回调函数,第一个参数是error,第二个参数返回完整的评论内容和时间戳
-
getRelations(options)
-
获取黑名单和静音列表
- 如果开发者在
初始化SDK的时候设置了syncRelations为false, 那么就收不到onblacklist和onmutelist回调, 可以调用此接口来获取黑名单和静音列表。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description donedone 结果回调函数, 成功时会返回黑名单和静音列表
- See:
Returns:
- Type
- Void
Example
nim.getRelations({ done: getRelationsDone }); function getRelationsDone(error, obj) { console.log('获取静音列表' + (!error?'成功':'失败'), error, obj); if (!error) { onBlacklist(obj.blacklist); onMutelist(obj.mutelist); } } - 如果开发者在
-
getServerSession(options)
-
获取服务器上的某个会话
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description sceneString 会话
场景toString 对方账号或群ID
Example
nim.getServerSession({ scene: 'p2p', to: 'account', done: function (obj) { console.log('获取会话' + (!error?'成功':'失败'), error, obj); } }); -
getServerSessions(options)
-
获取服务器会话列表
- 与漫游消息构成的会话列表不同,该列表记录的会话数量更多,超过了漫游列表100条的限制,但列表中的会话没有未读数
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description minTimestampNumber <optional>
0 最小的时间戳。0表示之前从未请求过。如果之前拉取过会话,可以填写上次的时间戳,拉取自上次之后更新的会话
maxTimestampNumber <optional>
最大的时间戳。默认是当前时间,表示拉取最新的会话。拉取第一页之后的会话时,填写上一页最后一条会话的更新时间
needLastMsgBoolean <optional>
true 是否需要lastMsg
limitNumber <optional>
100 返回的最大条数,最大100,剩余的可分页获取
Example
nim.getServerSessions({ minTimestamp: 1571039417853, // 获取 1571039417853 时间之后更新的会话,增量获取 maxTimestamp: 1571039418800, // 非第一页,上一页会话列表最小的时间时1571039418800 done: function (error, obj) { console.log('获取会话列表' + (!error?'成功':'失败'), error, obj); } }); -
getServerTime(options)
-
获取服务器时间戳(毫秒)
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.getServerTime({ done: getServerTimeDone }); function getServerTimeDone(error, time) { console.log('获取服务器时间' + (!error?'成功':'失败'), error, time); } -
getSessionsWithMoreRoaming(options)
-
查询漫游消息不全的会话/会话列表
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description idString <optional>
要查询的会话id,若不填,则查询全部
donefunction -
getStickTopSessions(options)
-
获取置顶会话列表
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description donefunction 结果回调函数,第一个参数是error,代表是否有错
findDeleteBoolean 结果是否显示已删除的会话,默认false不显示
-
getSuperTeam(options)
-
获取群信息
- 开发者可以调用此接口根据群ID获取群资料
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
donedone 结果回调函数, 成功时会收到
超大群资料- See:
-
获取群列表获取群成员
Returns:
- Type
- Void
Example
nim.getSuperTeam({ teamId: '123', done: getSuperTeamDone }); function getSuperTeamDone(error, obj) { console.log(error); console.log(obj); console.log('获取群' + (!error?'成功':'失败')); } -
getSuperTeamMembersByAccounts(options)
-
通过群ID及成员账号获取超大群成员信息
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountsArray.<String> 群成员账号列表
donedone 结果回调函数, 成功时会额外附上
超大群成员列表- See:
Returns:
- Type
- Void
Example
nim.getSuperTeamMembersByAccounts({ teamId: '123', account: 'abc', done: done }); function done(error, obj) { console.log(error); console.log(obj); console.log('获取群成员' + (!error?'成功':'失败')); if (!error) { onTeamMember(obj); } } -
getSuperTeamMembersByJoinTime(options)
-
根据进群时间,分页获取超大群成员
- 接受入群邀请之后可调用此方法来分页获取
超大群群成员列表
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description teamIdString 群id
joinTimeBoolean <optional>
0 获取在该时间以后进群的群成员
limitObject <optional>
100 本次获取的群成员数量
reverseBoolean <optional>
false false - 获取joinTime之后进群的群成员,按时间正序排列 true - 获取joinTime之前进群的群成员,按时间逆序排列
donedone 结果回调函数, 成功时会额外附上
群成员列表和分页数据(如果有的话)- See:
Returns:
- Type
- Void
Example
nim.getSuperTeamMembersByJoinTime({ teamId: '123', joinTime: 0, limit: 100, done: onMembers(err, arr) }); function onMembers (error, arr) { console.log('获取群成员' + (!error?'成功':'失败')); console.log('群成员:', arr) var lastmembers = arr && arr[arr.length - 1] if (lastmembers) { // 继续获取下一页 nim.getSuperTeamMembersByJoinTime({ teamId: '123', joinTime: lastmembers.joinTime, limit: 200, done: onMembers(err, arr) }) } } - 接受入群邀请之后可调用此方法来分页获取
-
getSuperTeams(options)
-
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description donedone 结果回调函数, 成功时会收到
超大群列表- See:
-
获取超大群资料获取超大群成员
Returns:
- Type
- Void
Example
nim.getSuperTeams({ done: getSuperTeamsDone }); function getSuperTeamsDone(error, teams) { console.log(error); console.log(teams); console.log('获取超大群列表' + (!error?'成功':'失败')); } -
getTeam(options)
-
获取群
- 开发者可以调用此接口获取群资料
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
donedone 结果回调函数, 成功时会收到
群资料Returns:
- Type
- Void
Example
nim.getTeam({ teamId: '123', done: getTeamDone }); function getTeamDone(error, obj) { console.log(error); console.log(obj); console.log('获取群' + (!error?'成功':'失败')); } -
getTeamMemberByTeamIdAndAccount(options)
-
通过群ID及成员账号获取群成员信息
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountString 群成员账号
donedone 结果回调函数, 成功时会额外附上
群成员列表Returns:
- Type
- Void
Example
nim.getTeamMemberByTeamIdAndAccount({ teamId: '123', account: 'abc', done: getTeamMemberDone }); function getTeamMemberDone(error, obj) { console.log(error); console.log(obj); console.log('获取群成员' + (!error?'成功':'失败')); if (!error) { onTeamMember(obj); } } -
getTeamMemberInvitorAccid(options)
-
获取群成员的邀请者accid
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountsArray.<String> 表示需要查询邀请者accid的群成员账号列表,一次最多查200个。当群成员数量小于等于200时为可选参数,不填默认查全部成员;群成员数量大于200时,需要将成员列表分批多次调用此接口查询。
donedone 结果回调函数,返回数据类型为Object,key/value分别是群成员accid/邀请者accid
Returns:
- Type
- Void
Example
nim.getTeamMemberInvitorAccid({ teamId: '123', account: ['abc'], done: getTeamMemberInvitorAccidDone }); function getTeamMemberInvitorAccidDone(error, obj) { console.log(error); console.log(obj); console.log('获取群成员邀请者' + (!error?'成功':'失败')); } -
getTeamMembers(options)
-
获取群成员
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
donedone 结果回调函数, 成功时会额外附上
群成员列表Returns:
- Type
- Void
Example
nim.getTeamMembers({ teamId: '123', done: getTeamMembersDone }); function getTeamMembersDone(error, obj) { console.log(error); console.log(obj); console.log('获取群成员' + (!error?'成功':'失败')); if (!error) { onTeamMembers(obj); } } -
getTeamMsgReadAccounts(options)
-
查询群组已读、未读账号列表
- 若支持db且存在idClient,会将查询到的结果存db
- 之后从服务器查询失败时,会将错误信息和db中缓存的结果一同返回
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamMsgReceiptObject 已读消息对象
Properties
Name Type Argument Description teamIdString 群序号
idServerString 消息idServer
idClientString <optional>
消息idClient,若支持db且有该参数,则SDK会将查询到的结果存到db中,离线期间也可查
donefunction 结果回调函数,第三个参数是查询到的结果
Returns:
- Type
- Void
Example
nim.getTeamMsgReadAccounts({ teamMsgReceipt: { teamId: '1027484', idServer: '68953284018302' }, done: getTeamMsgReadAccountsDone }) function getTeamMsgReadAccountsDone (error, params, result) { console.log('查询群组已读、未读账号列表' + (!error?'成功':'失败'), err, result); } -
getTeamMsgReads(options)
-
查询群组消息已读、未读数量
- 对应于群组消息发送时配置了
needMsgReceipt字段的群组消息,接收方可以对消息发送已读回执 done回调的第二个参数是发送的参数,用于校验,第三个参数才是实际的结果- 在支持db,且存在idClient时:
- 查询完成后,db中对应的msg会拥有
read和unread属性,分别对应消息的已读未读人数 unread为 0 后,消息的已读、未读数量便不会再变化了,因此建议在调用该接口前,过滤掉unread已为0的消息,减少不必要的性能消耗
- 查询完成后,db中对应的msg会拥有
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description teamMsgReceiptsArray.<Object> 已读消息对象
teamMsgReceipt.teamIdString 群序号
teamMsgReceipt.idServerString 消息编号
teamMsgReceipt.idClientString <optional>
消息的idClient
Returns:
- Type
- Void
Example
nim.getTeamMsgReads({ teamMsgReceipts: [{ teamId: '1027484', idServer: '68953284018302' }], done: getTeamMsgReadsDone }) function getTeamMsgReadsDone (error, params, result) { console.log('查询群组消息已读、未读数量' + (!error?'成功':'失败')); } - 对应于群组消息发送时配置了
-
getTeams(options)
-
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description donedone 结果回调函数, 成功时会收到
群列表Returns:
- Type
- Void
Example
nim.getTeams({ done: getTeamsDone }); function getTeamsDone(error, teams) { console.log(error); console.log(teams); console.log('获取群列表' + (!error?'成功':'失败')); } -
getTeamsById(options)
-
通过 teamId 来获取若干个群
- 开发者可以调用此接口获取若干个群的资料
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdsStringArray 群ids,数组,长度最大为 10
donedone 结果回调函数, 成功时会收到
群资料Returns:
注:若批量查询部分成功,部分失败的情况,则下文 example 里的 result,
result.teams 代表成功列表部分的列表,result.tids 代表操作失败的群id。- Type
- Void
Example
nim.getTeamsById({ teamIds: ['812345', '885921'], done: (error, result) => { console.log(error, result) } }); -
getThreadMsgs(options)
-
获取某thread的消息列表
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description sceneString threadMsgFromAccountString thread根消息的
from,即发送者账号threadMsgToAccountString thread根消息的
to,即接受者账号threadMsgIdServerString thread根消息的
idServerthreadMsgTimeNumber thread根消息的
timebeginTimeNumber <optional>
时间戳, 开始时间, 精确到ms, 默认为0
endTimeNumber <optional>
时间戳, 结束时间, 精确到ms, 默认为服务器的当前时间
lastMsgIdString <optional>
上次查询的最后一条消息的
idServer, 第一次不填limitNumber <optional>
100 本次查询的消息数量限制, 最多100条, 默认100条
reverseBoolean <optional>
false 默认
false表示从endTime开始往前查找历史消息,true表示从beginTime开始往后查找历史消息donefunction 结果回调函数
Returns:
- Type
- Void
-
getUser(options)
-
获取用户名片
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description accountString 账号
syncBoolean 是否去服务器上获取,为 true 则从服务器获取,默认从本地 db 获取
donefunction 结果回调函数, 成功时会返回用户名片
Returns:
- Type
- Void
Example
nim.getUser({ account: 'account', done: getUserDone }); function getUserDone(error, user) { console.log('获取用户名片' + (!error?'成功':'失败'), error, obj); if (!error && user) { onUsers(user); } } -
getUsers(options)
-
获取用户名片数组
- 每次最多 150 个
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description accountsArray.<String> 账号数组
syncBoolean 是否去服务器上获取,为 true 则从服务器获取,默认从本地 db 获取
donefunction 结果回调函数, 成功时会返回用户名片列表
Returns:
- Type
- Void
Example
nim.getUsers({ accounts: ['account1', 'account2'], done: getUsersDone }); function getUsersDone(error, users) { console.log('获取用户名片数组' + (!error?'成功':'失败'), error, users); if (!error && users.length) { onUsers(users); } } -
insertLocalSession(options)
-
插入一条本地会话记录
- 如果会话已存在, 那么会返回错误
- 如果不
支持数据库, 那么算成功 - 如果有对应会话的本地历史消息, 那么会更新会话的
lastMsg为最后一条消息 - 插入成功后, 会触发
onupdatesession回调
Parameters:
Name Type Argument Description optionsObject 配置参数
Properties
Name Type Description sceneString option.toString 会话对象, 账号或群IDoptions.updateTimeNumber <optional>
可选, 会话更新的时间, 如果不填, SDK 会设置一个比当前所有会话更新时间大的一个时间
options.donefunction 结果回调函数, 如果成功会额外附上生成的会话对象
Returns:
- Type
- Void
Example
nim.insertLocalSession({ scene: 'p2p', to: 'account', done: insertLocalSessionDone }); function insertLocalSessionDone(error, obj) { console.log('插入本地会话记录' + (!error?'成功':'失败'), error, obj); if (!error) { onSessions(obj.session); } } -
interlaceImage(options)
-
interlace 图片
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description urlString 原图 url
donedone 结果回调函数, 成功时附上 interlace 后的图片 url
Returns:
- Type
- Void
Example
var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ0MzE0NTgyNDI0M184YjFkYTMwMS02NjcxLTRiYjktYTUwZC04ZTVlZjZlNzZjMzA='; var interlaceUrl = nim.interlaceImage({ url: url, done: interlaceImageDone }); function interlaceImageDone(error, obj) { console.log('interlace 图片' + (!error?'成功':'失败'), error, obj); } -
isMsgRemoteRead(msg)
-
查询消息是否被对方读过了
- 目前只支持
'p2p'会话
Parameters:
Name Type Description msgIMMessage 消息
Returns:
是否被对方读过
- Type
- Boolean
Example
var isRemoteRead = nim.isMsgRemoteRead(msg);
- 目前只支持
-
isMyFriend(options)
-
查看某人是否为当前用户的好友
- 注:此接口为数据库接口。如果开发者在
初始化SDK的时候设置了db为false, 或者所在环境不支持数据库,那么此接口永远返回 false。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description accountString 查询目标的 account ID
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.isMyFriend({ account: 'cs1', done: function (err, isFriend) {} }); - 注:此接口为数据库接口。如果开发者在
-
isUserInBlackList(options)
-
查看某人是否在当前用户在黑名单里
- 注:此接口为数据库接口。如果开发者在
初始化SDK的时候设置了db为false, 或者所在环境不支持数据库,那么此接口永远返回 false。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description accountString 查询目标的 account ID
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.isUserInBlackList({ account: 'cs1', done: function (err, isInBlackList) {} }); - 注:此接口为数据库接口。如果开发者在
-
kick(options)
-
踢当前用户登录的其它端
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description deviceIdsArray.<String> 要踢掉的端的设备号数组
donedone 结果回调函数, 成功时会收到被踢掉的设备号数组
Returns:
- Type
- Void
Example
nim.kick({ deviceIds: ['device1'], done: onKick }); function onKick(error, obj) { console.log('踢其它端' + (!error?'成功':'失败')); console.log(error); console.log(obj); } -
leaveSuperTeam(options)
-
主动退群
主动退群后, 所有超大群群成员会收到一条类型为的'leaveSuperTeam'群通知消息。此类群通知消息的from字段的值为退群的人的帐号,to字段的值为对应的群ID,attach有一个字段team的值为对应的超大群对象。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.leaveSuperTeam({ teamId: '123', done: leaveSuperTeamDone }); function leaveSuperTeamDone(error, obj) { console.log('主动退群' + (!error?'成功':'失败'), error, obj); } -
leaveTeam(options)
-
主动退群
主动退群后, 所有群成员会收到一条类型为的'leaveTeam'群通知消息。此类群通知消息的from字段的值为退群的人的帐号,to字段的值为对应的群ID,attach有一个字段team的值为对应的群对象。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.leaveTeam({ teamId: '123', done: leaveTeamDone }); function leaveTeamDone(error, obj) { console.log('主动退群' + (!error?'成功':'失败'), error, obj); } -
logout()
-
- Deprecated:
-
- 登出SDK
- 这个 API 即将废弃,请直接使用
disconnect替代。 - 在连接正常的情况下,可以调用该方法退出登录,如果您不确定连接是否正常,请使用connect
- 登出SDK
- 这个 API 即将废弃,请直接使用
- See:
Returns:
- Type
- Void
Example
nim.logout();
-
markInBlacklist(options)
-
加入黑名单/从黑名单移除
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description accountString 要加入黑名单/从黑名单移除的账号
isAddBoolean true表示加入黑名单,false表示从黑名单移除donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.markInBlacklist({ account: 'account', // `true`表示加入黑名单, `false`表示从黑名单移除 isAdd: true, done: markInBlacklistDone }); function markInBlacklistDone(error, obj) { console.log('将' + obj.account + (isAdd ? '加入黑名单' : '从黑名单移除') + (!error?'成功':'失败'), error, obj); if (!error) { onMarkInBlacklist(obj); } } -
markInMutelist(options)
-
加入静音列表/从静音列表移除
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description accountString 要加入静音列表/从静音列表移除的账号
isAddBoolean true表示加入静音列表,false表示从静音列表移除donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.markInMutelist({ account: 'account', // `true`表示加入静音列表, `false`表示从静音列表移除 isAdd: 'true', done: markInMutelistDone }); function markInMutelistDone(error, obj) { console.log('将' + obj.account + (isAdd ? '加入静音列表' : '从静音列表移除') + (!error?'成功':'失败'), error, obj); if (!error) { onMarkInMutelist(obj); } } -
markMsgRead(msgs)
-
标记消息为已收到
- 如果没有消息、或者支持数据库、或者设置了自动标记, 那么直接返回
注:调用此接口只是向服务器确认本端收到了此消息,下次登录时不会把这些消息当作离线的下发。和消息已读/未读没有关系
Parameters:
Name Type Description msgsArray.<IMMessage> 待标记的消息或者消息数组
Returns:
- Type
- Void
Example
nim.markMsgRead(someMsg); // or nim.markMsgRead([someMsg]);
-
markSysMsgRead(options)
-
标记系统通知为已收到
- SDK 在收到系统通知后会更新系统通知未读数, 开发者需要调用此接口来通知 SDK 将某条系统通知标记为已读状态, 标记后会触发
onupdatesysmsgunread回调
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description sysMsgsSystemMessage | Array.<SystemMessage> 通过
onofflinesysmsgs或者onsysmsg接收到的系统通知或者系统通知数组donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.markSysMsgRead({ sysMsgs: someSysMsg, done: markSysMsgReadDone }); function markSysMsgReadDone(error, obj) { console.log(error); console.log(obj); console.log('标记系统通知为已收到' + (!error?'成功':'失败')); } - SDK 在收到系统通知后会更新系统通知未读数, 开发者需要调用此接口来通知 SDK 将某条系统通知标记为已读状态, 标记后会触发
-
mergeFriends(olds, news)
-
合并好友
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的好友列表
- 合并时按照
account的值去重,按照account的值正序排序 - 此方法内部调用
NIM.util.mergeObjArray来完成实际工作
if (!olds) {olds = [];} if (!news) {return olds;} if (!NIM.util.isArray(news)) { news = [news]; } if (!news.length) {return olds;} var options = { keyPath: 'account' }; NIM.util.mergeObjArray([], olds, news, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.mergeObjArray来合并好友
Parameters:
Name Type Description oldsArray.<Friend> 原始好友数组
newsFriend | Array.<Friend> 待合并的好友或好友数组
Returns:
合并后的好友数组
- Type
- Array.<Friend>
-
mergeLoginPorts(olds, news)
-
合并登录端
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的登录端列表
- 合并时按照
deviceId的值去重,按照deviceId的值正序排序 - 此方法内部调用
NIM.util.mergeObjArray来完成实际工作
if (!olds) {olds = [];} if (!news) {return olds;} if (!NIM.util.isArray(news)) { news = [news]; } if (!news.length) {return olds;} var options = { keyPath: 'deviceId' }; NIM.util.mergeObjArray([], olds, news, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.mergeObjArray来合并登录端
Parameters:
Name Type Description oldsArray.<LoginPort> 原始登录端数组
newsLoginPort | Array.<LoginPort> 待合并的登录端或登录端数组
Returns:
合并后的登录端数组
- Type
- Array.<LoginPort>
-
mergeMsgs(olds, news)
-
合并消息
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的消息列表
- 合并时按照
idClient的值去重,按照time的值排序 - 此方法内部调用
NIM.util.mergeObjArray来完成实际工作
if (!olds) {olds = [];} if (!news) {return olds;} if (!NIM.util.isArray(news)) { news = [news]; } if (!news.length) {return olds;} var options = { keyPath: 'idClient', sortPath: 'time' }; NIM.util.mergeObjArray([], olds, news, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.mergeObjArray来合并消息
Parameters:
Name Type Description oldsArray.<Message> 原始消息数组
newsMessage | Array.<Message> 待合并的消息或消息数组
Returns:
合并后的消息数组
- Type
- Array.<Message>
-
mergeRelations(olds, news)
-
合并关系
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的关系列表
- 合并时按照
account的值去重,按照account的值正序排序 - 此方法内部调用
NIM.util.mergeObjArray来完成实际工作
if (!olds) {olds = [];} if (!news) {return olds;} if (!NIM.util.isArray(news)) { news = [news]; } if (!news.length) {return olds;} var options = { keyPath: 'account' }; NIM.util.mergeObjArray([], olds, news, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.mergeObjArray来合并关系
Parameters:
Name Type Description oldsArray.<Relation> 原始关系数组
newsRelation | Array.<Relation> 待合并的关系或关系数组
Returns:
合并后的关系数组
- Type
- Array.<Relation>
-
mergeSessions(olds, news)
-
合并会话
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的会话列表
- 合并时按照
id的值去重,按照updateTime的值倒序排序 - 此方法内部调用
NIM.util.mergeObjArray来完成实际工作
if (!olds) {olds = [];} if (!news) {return olds;} if (!NIM.util.isArray(news)) { news = [news]; } if (!news.length) {return olds;} var options = { sortPath: 'updateTime', desc: true }; NIM.util.mergeObjArray([], olds, news, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.mergeObjArray来合并会话
Parameters:
Name Type Description oldsArray.<Session> 原始会话数组
newsSession | Array.<Session> 待合并的会话或会话数组
Returns:
合并后的会话数组
- Type
- Array.<Session>
-
mergeSysMsgs(olds, news)
-
合并系统通知
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的系统通知列表
- 合并时按照
idServer的值去重,按照idServer的值倒序排序 - 此方法内部调用
NIM.util.mergeObjArray来完成实际工作
if (!olds) {olds = [];} if (!news) {return olds;} if (!NIM.util.isArray(news)) { news = [news]; } if (!news.length) {return olds;} var options = { keyPath: 'idServer', desc: true }; NIM.util.mergeObjArray([], olds, news, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.mergeObjArray来合并系统通知
Parameters:
Name Type Description oldsArray.<SystemMessage> 原始系统通知数组
newsSystemMessage | Array.<SystemMessage> 待合并的系统通知或系统通知数组
Returns:
合并后的系统通知数组
- Type
- Array.<SystemMessage>
-
mergeTeamMembers(olds, news)
-
合并群成员
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的群成员列表
- 合并时按照
id的值去重,按照id的值正序排序 - 此方法内部调用
NIM.util.mergeObjArray来完成实际工作
if (!olds) {olds = [];} if (!news) {return olds;} if (!NIM.util.isArray(news)) { news = [news]; } if (!news.length) {return olds;} var options = { }; NIM.util.mergeObjArray([], olds, news, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.mergeObjArray来合并群成员
Parameters:
Name Type Description oldsArray.<TeamMember> 原始群成员数组
newsTeamMember | Array.<TeamMember> 待合并的群成员或群成员数组
Returns:
合并后的群成员数组
- Type
- Array.<TeamMember>
-
mergeTeams(olds, news)
-
合并群
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的群列表
- 合并时按照
teamId的值去重,按照teamId的值正序排序 - 此方法内部调用
NIM.util.mergeObjArray来完成实际工作
if (!olds) {olds = [];} if (!news) {return olds;} if (!NIM.util.isArray(news)) { news = [news]; } if (!news.length) {return olds;} var options = { keyPath: 'teamId' }; NIM.util.mergeObjArray([], olds, news, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.mergeObjArray来合并群
Parameters:
Name Type Description oldsArray.<Team> 原始群数组
newsTeam | Array.<Team> 待合并的群或群数组
Returns:
合并后的群数组
- Type
- Array.<Team>
-
mergeUsers(olds, news)
-
合并名片
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的名片列表
- 合并时按照
account的值去重,按照account的值正序排序 - 此方法内部调用
NIM.util.mergeObjArray来完成实际工作
if (!olds) {olds = [];} if (!news) {return olds;} if (!NIM.util.isArray(news)) { news = [news]; } if (!news.length) {return olds;} var options = { keyPath: 'account' }; NIM.util.mergeObjArray([], olds, news, options);- 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.mergeObjArray来合并名片
Parameters:
Name Type Description oldsArray.<User> 原始名片数组
newsUser | Array.<User> 待合并的名片或名片数组
Returns:
合并后的名片数组
- Type
- Array.<User>
-
msgFtsInServer(options)
-
云端全文检索消息(full text search)
- 返回的消息会按会话 session 分类
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description keywordString 检索关键词
fromTimeInterger <optional>
检索目标的开始时间,默认 0 代表不限制
toTimeInterger <optional>
检索目标的结束时间,默认 当前时间
sessionLimitInterger <optional>
会话数量限制。默认 10. 举例传入 5,检索返回 5 个会话的消息
msgLimitInterger <optional>
单个会话返回的消息数量限制。默认 5。 举例传 1,每个会话返回 1 条匹配的消息。
orderInterger <optional>
查询的消息排序规则,默认 DESC 按消息时间降序。可选 ASC 升序。
p2pListArray.<String> <optional>
搜索条件 P2P会话列表,会话(p2p-accid1)的 account 示例:['accid1', 'accid2', 'accid3']
teamListArray.<String> <optional>
搜索条件 群列表。从这些 team(team-146694936) 里搜寻消息,示例:['146694936', '13897']
senderListArray.<String> <optional>
消息发送者列表,account 列表 示例:['accid1', 'accid2', 'accid3']
msgTypeListArray.<String> <optional>
消息类型 示例:['text', 'image', 'audio', 'video', 'geo', 'notification', 'file', 'tip', 'custom']
msgSubTypeListArray.<String> <optional>
消息子类型,此类型开发者在发送消息时可自定义,且格式为大于0的整数。示例:[1, 2]
donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.msgFtsInServer({ keyword: '一个关键词' done: function(err, obj) { console.log(err, obj) } }); -
msgFtsInServerByTiming(options)
-
云端全文检索消息-按时间分页搜索(full text search)
- 返回的消息结果按时间自然排序
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description keywordString 检索关键词
fromTimeInterger <optional>
检索目标的开始时间,默认 0 代表不限制
toTimeInterger <optional>
检索目标的结束时间,默认 当前时间
msgLimitInterger <optional>
单个会话返回的消息数量限制。默认 20。举例传 1,每个会话返回 1 条匹配的消息。
orderInterger <optional>
查询的消息排序规则,默认 DESC 按消息时间降序。可选 ASC 升序。
p2pListArray.<String> <optional>
搜索条件 P2P会话列表,会话(p2p-accid1)的 account 示例:['accid1', 'accid2', 'accid3']
teamListArray.<String> <optional>
搜索条件 群列表。从这些 team(team-146694936) 里搜寻消息,示例:['146694936', '13897']
senderListArray.<String> <optional>
消息发送者列表,account 列表 示例:['accid1', 'accid2', 'accid3']
msgTypeListArray.<String> <optional>
消息类型 示例:['text', 'image', 'audio', 'video', 'geo', 'notification', 'file', 'tip', 'custom']
msgSubTypeListArray.<String> <optional>
消息子类型,此类型开发者在发送消息时可自定义,且格式为大于0的整数。示例:[1, 2]
donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.msgFtsInServerByTiming({ keyword: '一个关键词' done: function(err, obj) { console.log(err, obj) } }); -
muteTeamAll(options)
-
群组禁言
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 待禁言群的群id
muteBoolean 是否禁言
Returns:
- Type
- Void
Example
nim.muteTeamAll({ teamId: '1027484', mute: 1, done: muteTeamAllDone }) function muteTeamAllDone (error, obj) { console.log('禁言群' + (!error?'成功':'失败')); } -
notifyForNewTeamMsg(options)
-
查询自己在各个群中所设置的消息提醒策略
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdsArray.<String> 群列表
donedone 结果回调函数,成功时第二个参数是一个map, key是群ID, value 是一个布尔值, 表示该群是否需要群消息通知;如果有部分成功部分失败,第三个参数是失败的群ID数组
Returns:
- Type
- Void
Example
nim.notifyForNewTeamMsg({ teamIds: ['123'], done: notifyForNewTeamMsgDone }) function notifyForNewTeamMsgDone(error, map) { console.log(error); console.log(map); console.log('查询是否需要群消息通知' + (!error?'成功':'失败')); } -
packFileDownloadName(options)
-
修改图片下载的名字
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description urlString 原图 url
nameString 下载的名字
Returns:
修改图片下载名字后的图片 url
- Type
- String
Example
var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ0MzE0NTgyNDI0M184YjFkYTMwMS02NjcxLTRiYjktYTUwZC04ZTVlZjZlNzZjMzA='; var nameUrl = nim.packFileDownloadName({ url: url, name: '测试.jpg' }); console.log(nameUrl); -
passFriendApply(options)
-
通过好友申请
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description idServerString 对应的系统通知的
idServeraccountString 要通过好友申请的账号
psString <optional>
附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
- Type
- Void
Example
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知 nim.passFriendApply({ idServer: sysMsg.idServer, account: 'account', ps: 'ps', done: passFriendApplyDone }); function passFriendApplyDone(error, obj) { console.log('通过好友申请' + (!error?'成功':'失败'), error, obj); if (!error) { onAddFriend(obj.friend); } } -
passSuperTeamApply(options)
-
通过入群申请
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description idServerString 对应的系统通知的
idServerteamIdString 群ID
fromString 申请方的帐号
donedone 结果回调函数
Returns:
- Type
- Void
Example
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知 nim.passSuperTeamApply({ idServer: sysMsg.idServer, teamId: '123', from: 'a2', done: passSuperTeamApplyDone }); function passSuperTeamApplyDone(error, obj) { console.log('通过入群申请' + (!error?'成功':'失败'), error, obj); } -
passTeamApply(options)
-
通过入群申请
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description idServerString 对应的系统通知的
idServerteamIdString 群ID
fromString 申请方的帐号
donedone 结果回调函数
Returns:
- Type
- Void
Example
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知 nim.passTeamApply({ idServer: sysMsg.idServer, teamId: '123', from: 'a2', done: passTeamApplyDone }); function passTeamApplyDone(error, obj) { console.log('通过入群申请' + (!error?'成功':'失败'), error, obj); } -
previewFile(options)
-
预览文件
- 开发者可以预览文件, 支持以下几种场景
- 通过参数
fileInput传入文件选择 dom 节点或者节点 ID, SDK 会读取该节点下的文件, 在上传完成前请不要操作该节点下的文件 - 通过参数
blob传入 Blob 对象 - 通过参数
dataURL传入包含 MIME type 和 base64 数据的 data URL, 此用法需要浏览器支持 Blob - 通过参数
filePath传入文件路径(跨平台系列),支持小程序(5.1.0+)、nodejs(5.4.0+ 内测中)、react-native(5.3.0+),;该参数不支持浏览器环境
- 通过参数
- SDK会将文件上传到文件服务器, 然后将拿到的文件对象在
done回调中传给开发者, 文件对象有以下几种图片对象音频对象视频对象文件对象
- 开发者在拿到文件对象之后, 可以调用
发送文件消息来发送文件消息。 - 文件大小限制为最大 100M
- 高级浏览器会在上传前就检测文件大小
- IE8/IE9 会在上传完成后检测文件大小
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description typeString <optional>
文件过滤器
- image会过滤掉非图片的文件, audio过滤掉非音频, video会过滤掉非视频的文件
- IE8/IE9 不支持文件过滤
fileInputString | Node <optional>
文件选择 dom 节点或者节点 ID, SDK 会读取该节点下的文件, 在上传完成前请不要操作该节点下的文件
filePathString <optional>
filePath 文件路径(跨平台系列),支持小程序(5.1.0+)、nodejs(5.4.0+ 内测中)、react-native(5.3.0+),上传文件统一使用该参数;该参数不支持浏览器环境
maxSizeNumber <optional>
限制文件的大小,单位字节
commonUploadBoolean <optional>
使用普通上传(最大100M文件)
blobBlob <optional>
Blob 对象
dataURLString <optional>
包含 MIME type 和 base64 数据的 data URL
uploadprogressuploadprogress <optional>
上传进度, ie9以下不支持上传进度
nosScenesString <optional>
存储场景,不传默认实例化配置,默认为"im"
nosSurvivalTimeNumber <optional>
存储有效时间,不传默认实例化配置 不得小于一天,单位秒
transcodeBoolean <optional>
仅当 type 为 file 时,此参数为 true,举例 docx 文件上传后还会被转换为图片。
donedone 结果回调函数, 成功时会收到文件对象, 请参考
图片对象音频对象视频对象文件对象
Returns:
- Type
- Void
Example
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); } } }); - 开发者可以预览文件, 支持以下几种场景
-
processImage(options)
-
处理图片
此方法接收一组图片操作, 按操作顺序依次处理图片, 可选的操作包括:
每个操作所需的参数请参考上面的各个方法, 除了上面方法列出来的参数之外, 每个操作需要提供操作类型, 分别是
'quality''interlace''rotate''blur''crop''thumbnail'
请参考下面的示例代码
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description urlString 原图 url
opsArray 操作序列
donedone 结果回调函数, 成功时附上处理后的图片 url
Returns:
- Type
- Void
Example
// 裁剪后旋转 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); } -
qualityImage(options)
-
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description urlString 原图 url
qualityInt 图片质量, 必须为整数, 取值范围为 0-100, 此方法内部使用 Math.round 来格式化 quality
donedone 结果回调函数, 成功时附上修改质量后的图片 url
Returns:
- Type
- Void
Example
var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ0MzE0NTgyNDI0M184YjFkYTMwMS02NjcxLTRiYjktYTUwZC04ZTVlZjZlNzZjMzA='; var qualityUrl = nim.qualityImage({ url: url, quality: 20, done: qualityImageDone }); function qualityImageDone(error, obj) { console.log('修改图片质量' + (!error?'成功':'失败'), error, obj); } -
recallMsg(options)
-
撤回消息
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description msgIMMessage 待撤回的消息
apnsTextString <optional>
自定义推送文案
pushPayloadString <optional>
第三方自定义的推送属性,限制json字符串,长度最大2048
psString <optional>
附言
attachString <optional>
附加信息,推荐使用JSON格式构建
envString <optional>
抄送环境
donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.recallMsg({ msg: someMsg, done: deleteMsgDone }) console.log('正在撤回消息', someMsg) function deleteMsgDone (error) { console.log('撤回消息' + (!error?'成功':'失败'), error); } -
rejectFriendApply(options)
-
拒绝好友申请
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description idServerString 对应的系统通知的
idServeraccountString 要拒绝好友申请的账号
psString <optional>
附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
- Type
- Void
Example
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知 nim.rejectFriendApply({ idServer: sysMsg.idServer, account: 'account', ps: 'ps', done: rejectFriendApplyDone }); function rejectFriendApplyDone(error, obj) { console.log(error); console.log(obj); console.log('拒绝好友申请' + (!error?'成功':'失败')); } -
rejectSuperTeamApply(options)
-
拒绝入群申请
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description idServerString 对应的系统通知的
idServerteamIdString 群ID
fromString 申请方的帐号
psString <optional>
附言, 选填, 长度不能大于5000, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
- Type
- Void
Example
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知 nim.rejectSuperTeamApply({ idServer: sysMsg.idServer, teamId: '123', from: 'a2', ps: '就不', done: rejectSuperTeamApplyDone }); function rejectSuperTeamApplyDone(error, obj) { console.log('拒绝入群申请' + (!error?'成功':'失败'), error, obj); } -
rejectSuperTeamInvite(options)
-
拒绝入群邀请
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description idServerString 对应的系统通知的
idServerteamIdString 群id
fromString 邀请方的帐号
psString <optional>
附言, 选填, 长度不能大于5000, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
- Type
- Void
Example
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知 nim.rejectSuperTeamInvite({ idServer: sysMsg.idServer, teamId: '123', from: 'zyy1', ps: '就不', done: rejectSuperTeamInviteDone }); function rejectSuperTeamInviteDone(error, obj) { console.log('拒绝入群邀请' + (!error?'成功':'失败'), error, obj); } -
rejectTeamApply(options)
-
拒绝入群申请
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description idServerString 对应的系统通知的
idServerteamIdString 群ID
fromString 申请方的帐号
psString <optional>
附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
- Type
- Void
Example
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知 nim.rejectTeamApply({ idServer: sysMsg.idServer, teamId: '123', from: 'a2', ps: '就不', done: rejectTeamApplyDone }); function rejectTeamApplyDone(error, obj) { console.log('拒绝入群申请' + (!error?'成功':'失败'), error, obj); } -
rejectTeamInvite(options)
-
拒绝入群邀请
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description idServerString 对应的系统通知的
idServerteamIdString 群id
fromString 邀请方的帐号
psString <optional>
附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
- Type
- Void
Example
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知 nim.rejectTeamInvite({ idServer: sysMsg.idServer, teamId: '123', from: 'zyy1', ps: '就不', done: rejectTeamInviteDone }); function rejectTeamInviteDone(error, obj) { console.log('拒绝入群邀请' + (!error?'成功':'失败'), error, obj); } -
removeFromBlacklist(options)
-
从黑名单移除
- 如果一个用户被从黑名单移除, 那么会重新收到此用户发送的消息
- SDK内部调用
nim.markInBlacklist来完成实际工作
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description accountString 要从黑名单移除的账号
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.removeFromBlacklist({ account: 'account', done: removeFromBlacklistDone }); function removeFromBlacklistDone(error, obj) { console.log('从黑名单移除' + (!error?'成功':'失败'), error, obj); if (!error) { removeFromBlacklist(obj); } } -
removeFromMutelist(options)
-
从静音列表移除
- SDK只负责维护静音列表, 具体要根据静音列表进行的操作由开发者决定
- SDK内部调用
nim.markInMutelist来完成实际工作
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description accountString 要从静音列表移除的账号
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.removeFromMutelist({ account: 'account', done: removeFromMutelistDone }); function removeFromMutelistDone(error, obj) { console.log('从静音列表移除' + (!error?'成功':'失败'), error, obj); if (!error) { removeFromMutelist(obj); } } -
removeSuperTeamManagers(options)
-
移除群管理员
移除群管理员后, 所有群成员会收到一条类型为的'removeSuperTeamManagers'群通知消息。此类群通知消息的from字段的值为移除群管理员的人的帐号,to字段的值为对应的群ID,attach有一个字段accounts的值为被移除的管理员的帐号列表,attach有一个字段members的值为被移除管理员的群成员列表。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountsArray.<String> 要移除的管理员帐号列表
donedone 结果回调函数
- See:
Returns:
- Type
- Void
Example
nim.removeSuperTeamManagers({ teamId: '123', accounts: ['a2', 'a3'], done: removeSuperTeamManagersDone }); function removeSuperTeamManagersDone(error, obj) { console.log('移除群管理员' + (!error?'成功':'失败'), error, obj); } -
removeSuperTeamMembers(options)
-
踢人出群
踢人出群, 所有超大群群成员会收到一条类型为的'removeSuperTeamMembers'群通知消息。此类群通知消息的from字段的值为退群的人的帐号,to字段的值为对应的群ID;attach有一个字段team的值为对应的超大群对象,有一个字段accounts的是被踢人的账号数组。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountsArray.<String> 要移除的成员帐号列表
donedone 结果回调函数
- See:
Returns:
- Type
- Void
Example
nim.removeSuperTeamMembers({ teamId: '123', accounts: ['a3', 'a4'], done: removeSuperTeamMembersDone }); function removeSuperTeamMembersDone(error, obj) { console.log('踢人出群' + (!error?'成功':'失败'), error, obj); } -
removeTeamManagers(options)
-
移除群管理员
移除群管理员后, 所有群成员会收到一条类型为的'removeTeamManagers'群通知消息。此类群通知消息的from字段的值为移除群管理员的人的帐号,to字段的值为对应的群ID,attach有一个字段accounts的值为被移除的管理员的帐号列表,attach有一个字段members的值为被移除管理员的群成员列表。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountsArray.<String> 要移除的管理员帐号列表
donedone 结果回调函数
- See:
Returns:
- Type
- Void
Example
nim.removeTeamManagers({ teamId: '123', accounts: ['a2', 'a3'], done: removeTeamManagersDone }); function removeTeamManagersDone(error, obj) { console.log('移除群管理员' + (!error?'成功':'失败'), error, obj); } -
removeTeamMembers(options)
-
踢人出群
踢人出群后, 所有群成员会收到一条类型为的'removeTeamMembers'群通知消息。此类群通知消息的from字段的值为踢人的人的帐号,to字段的值为对应的群ID,attach有一个字段team的值为对应的群对象,attach有一个字段accounts的值为被踢的人的帐号列表。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountsArray.<String> 要移除的成员帐号列表
donedone 结果回调函数
- See:
Returns:
- Type
- Void
Example
nim.removeTeamMembers({ teamId: '123', accounts: ['a3', 'a4'], done: removeTeamMembersDone }); function removeTeamMembersDone(error, obj) { console.log('踢人出群' + (!error?'成功':'失败'), error, obj); } -
resetAllSessionUnread()
-
重置所有会话的未读数
- 如果是已经存在的会话记录, 会将此会话未读数置为 0, 那么会收到
onupdatesession回调 - 之后此会话在收到消息之后依然会更新未读数
Returns:
- Type
- Void
Example
nim.resetAllSessionUnread('sessionId'); - 如果是已经存在的会话记录, 会将此会话未读数置为 0, 那么会收到
-
resetCurrSession()
-
重置当前会话
- 重置当前会话后, 所有会话在收到消息之后会更新未读数
Example
nim.resetCurrSession();
-
resetSessionsUnread(sessionIds, done)
-
批量重置会话的未读数
- 如果是已经存在的会话记录, 会将此会话未读数置为 0, 那么会收到
onupdatesessions回调 - 之后此会话在收到消息之后依然会更新未读数
- 会同步至多端登录的其他端
Parameters:
Name Type Description sessionIdsString 会话ID数组
donefunction done回调,第一个参数
err,err为null时,表示成功Returns:
- Type
- Void
Example
nim.resetSessionsUnread(['p2p-xx', 'p2p-yy'], (err) => { if (err) { console.log('重置失败:', err) } }); - 如果是已经存在的会话记录, 会将此会话未读数置为 0, 那么会收到
-
resetSessionUnread(sessionId, done)
-
重置某个会话的未读数
- 如果是已经存在的会话记录, 会将此会话未读数置为 0, 那么会收到
onupdatesession回调 - 之后此会话在收到消息之后依然会更新未读数
- 会同步至多端登录的其他端
Parameters:
Name Type Description sessionIdString 会话ID
donefunction done回调,第一个参数
err,err为null时,表示成功;若err不为null,表示同步至其他端失败,第二个参数是失败的sessionIdReturns:
- Type
- Void
Example
nim.resetSessionUnread('sessionId', (err, failId) => { if (err) { console.log('重置失败:', err, '失败的sessionid是', failId) } }); - 如果是已经存在的会话记录, 会将此会话未读数置为 0, 那么会收到
-
resetSuperTeamSessionsUnread(sessionIds, done)
-
批量重置超大群会话的未读数
- 如果是已经存在的会话记录, 会将此会话未读数置为 0, 那么会收到
onupdatesessions回调 - 之后此会话在收到消息之后依然会更新未读数
- 会同步至多端登录的其他端
Parameters:
Name Type Description sessionIdsString 会话ID数组
donefunction done回调,第一个参数
err,err为null时,表示成功Returns:
- Type
- Void
Example
nim.resetSuperTeamSessionsUnread(['superTeam-xx', 'superTeam-yy'], (err) => { if (err) { console.log('重置失败:', err) } }); - 如果是已经存在的会话记录, 会将此会话未读数置为 0, 那么会收到
-
rotateImage(options)
-
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description urlString 原图 url
angleInt 旋转的角度, 正整数表示顺时针, 负整数表示逆时针, 必须为整数, 此方法内部会先将 angle 格式化为 [0, 360] 范围内的数字, 然后使用 Math.round 来格式化 angle
donedone 结果回调函数, 成功时附上旋转后的图片的 url
Returns:
- Type
- Void
Example
var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ0MzE0NTgyNDI0M184YjFkYTMwMS02NjcxLTRiYjktYTUwZC04ZTVlZjZlNzZjMzA='; var rotateUrl = nim.rotateImage({ url: url, angle: 90, done: rotateImageDone }); function rotateImageDone(error, obj) { console.log('旋转图片' + (!error?'成功':'失败'), error, obj); } -
saveMsgsToLocal(options)
-
将消息存储至本地数据库
- 若不支持数据库,算成功
- SDK仅会主动存储离线、漫游、在线时收发的消息,其他消息开发者可根据需要调用该接口存储到本地数据库
- 请考虑用户终端上数据库的容量合理使用、定时清除,避免出现爆仓等问题
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description msgsArray 要存储的消息数据,每条消息都应该至少包含idClient,并符合云信消息的结构
donefunction 结果回调函数
Example
nim.saveMsgsToLocal({ msgs: msgs, // 要存储的消息 done: err => console.log(err ? '存储失败' : '存储成功') }) -
searchHistoryMsgs(options)
-
获取云端包含关键词的历史记录
- 跟
获取历史消息接口类似, 只是去掉了参数lastMsgId, 增加了参数keyword(要搜索的关键词)
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description sceneString toString 聊天对象, 账号或者群id
keywordString 待搜索的关键词
beginTimeNumber <optional>
时间戳, 开始时间, 精确到ms, 默认为0
endTimeNumber <optional>
时间戳, 结束时间, 精确到ms, 默认为服务器的当前时间
limitNumber <optional>
本次查询的消息数量限制, 最多100条, 默认100条
reverseBoolean <optional>
false 默认
false表示从endTime开始往前查找历史消息;
true表示从beginTime开始往后查找历史消息ascBoolean <optional>
false 默认
false表示返回的消息按时间逆序排序;
true表示按时间正序排序donedone 结果回调函数, 成功时会额外附上
消息列表Returns:
- Type
- Void
Example
nim.searchHistoryMsgs({ scene: 'p2p', to: 'account', keyword: 'keyword', done: searchHistoryMsgsDone }); function searchHistoryMsgsDone(error, obj) { console.log('获取云端包含关键词的历史记录' + (!error?'成功':'失败'), error, obj); if (!error) { console.log(obj.msgs); } } - 跟
-
searchLocal(options)
-
搜索本地内容,支持搜索本地会话和本地联系人
- 可细分为大搜索和定向搜索
- 传入参数
keyPath时,SDK会根据键路径做定向搜索。比如keyPath为session时,只搜索会话;keyPath为user时,只搜索好友联系人;keyPath为session.lastMsg.type时,只搜索会话lastMsg的消息类型 - 没有传入参数
keyPath时,SDK会进行大搜索:遍历搜索所有的keyPath user的keyPath列表:['user.account', 'user.nick', 'user.alias'];session的keyPath列表:['session.id', 'session.scene', 'session.lastMsg.type', 'session.lastMsg.text', 'session.localCustom', 'session.target.account', 'session.target.nick', 'session.target.alias', 'session.target.name']- 不使用数据库时,返回空
Parameters:
Name Type Description options查询参数
Properties
Name Type Argument Description keyword待搜索的关键词
keyPath<optional>
定点搜索时使用
done<optional>
结果回调函数,第二个参数是一个对象,它有三个属性
users、sessions和msg, 分别是匹配到的用户、匹配到的会话和没匹配到时的原因 -
sendCustomMsg(options)
-
发送自定义消息
- 自定义消息是
消息类型的一种 - 下面的代码用自定义消息实现了
石头剪刀布游戏
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description sceneString toString | Number 接收方, 对方帐号或者群id
contentString 自定义消息的消息内容, 推荐使用JSON格式构建
textString <optional>
可搜索字段, 没有实际含义。如调用
getLocalMsgsAPI带有keyword时,会尝试匹配该字段resendBoolean <optional>
是否是重发。如果是重发,还需要额外带上消息的
flow和statusidClientString <optional>
如果是重发, 那么需要带上之前生成的idClient来标记这条消息
customString <optional>
扩展字段
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
pushContentString <optional>
自定义推送文案
pushPayloadString <optional>
自定义的推送属性
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
apnsObject <optional>
特殊推送选项, 只在群会话中使用
Properties
Name Type Argument Default Description accountsArray.<String> <optional>
需要特殊推送的账号列表, 不填表示推送给当前会话内的所有用户
contentString <optional>
需要特殊推送的文案, 不填的话默认为 pushContent
forcePushBoolean <optional>
true 是否强制推送, true 表示即使推送列表中的用户屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
isHistoryableBoolean <optional>
true 是否存储云端历史
isRoamingableBoolean <optional>
true 是否支持漫游
isSyncableBoolean <optional>
true 是否支持发送者多端同步
ccBoolean <optional>
是否支持抄送
isPushableBoolean <optional>
true 是否需要推送
isOfflinableBoolean <optional>
true 是否要存离线
isUnreadableBoolean <optional>
true 是否计入消息未读数
needPushNickBoolean <optional>
true 是否需要推送昵称
isLocalBoolean <optional>
false 是否是本地消息
localFromString <optional>
本地消息的发送方,默认是当前用户
- 只有发送本地消息时,才可自定义发送方
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
replyMsgObject <optional>
要回复的消息对象,表示当前消息是对某条消息的回复
yidunAntiCheatingString <optional>
易盾反作弊字段,长度限制1024,JSON字符串格式。如:
"{"email":"test@163.com","phone":"12345678901","token":"1234","extension":"hello"}"yidunAntiSpamExtString <optional>
易盾反作弊扩展字段字段,2021-08-09 追加。限制 JSON 格式字符串,长度上限 1024
subTypeInterger <optional>
消息子类型,格式为大于0的整数,开发者可自定义
envString <optional>
环境变量,用于指向不同的抄送、第三方回调等配置
donedone 结果回调函数
Returns:
- Type
- Message
Example
var value = Math.ceil(Math.random()*3); var content = { type: 1, data: { value: value } }; var msg = nim.sendCustomMsg({ scene: 'p2p', to: 'account', content: JSON.stringify(content), done: sendMsgDone }); console.log('正在发送p2p自定义消息, id=' + msg.idClient); pushMsg(msg); - 自定义消息是
-
sendCustomSysMsg(options)
-
发送自定义系统通知
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description sceneString 场景跟
消息场景的一样, 分为p2p(点对点)和team(群)和superTeam(超大群)。toString | Number 接收方, 帐号或者群id
contentString 自定义系统通知的内容, 推荐使用JSON格式构建
apnsTextString <optional>
apns推送文案, 仅对接收方为iOS设备有效
pushPayloadString <optional>
自定义系统通知的推送属性
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
sendToOnlineUsersOnlyBoolean <optional>
true 是否只发送给在线用户。
true时只发送给在线用户, 如果接收方不在线, 这条通知将被丢弃。
适合发送即时通知, 比如正在输入。
false时假如接收方在线, 那么会立即收到该通知,
假如接收方不在线, 会在其上线后推送过去。ccBoolean <optional>
是否抄送
envString <optional>
环境变量,用于指向不同的抄送、第三方回调等配置
isPushableBoolean <optional>
true 是否需要推送
needPushNickBoolean <optional>
false 是否需要推送昵称
donedone 结果回调函数
- See:
Returns:
SDK生成的ID
- Type
- String
Example
var content = { type: 'type', value: 'value' }; content = JSON.stringify(content); var msgId = nim.sendCustomSysMsg({ scene: 'p2p', to: 'account', content: content, sendToOnlineUsersOnly: false, apnsText: content, done: sendCustomSysMsgDone }); console.log('正在发送p2p自定义系统通知, id=' + msgId); function sendCustomSysMsgDone(error, msg) { console.log(error); console.log(msg); console.log('发送' + msg.scene + '自定义系统通知' + (!error?'成功':'失败') + ', id=' + msg.idClient); } - 推荐使用
-
sendFile(options)
-
发送文件消息
- 文件消息是
消息类型的一种 - 开发者可以直接发送文件消息
- 支持以下几种场景
- 通过参数
fileInput传入文件选择 dom 节点或者节点 ID, SDK 会读取该节点下的文件, 在上传完成前请不要操作该节点下的文件 - 通过参数
blob传入 Blob 对象 - 通过参数
dataURL传入包含 MIME type 和 base64 数据的 data URL, 此用法需要浏览器支持 Blob
- 通过参数
- SDK会先将文件上传到文件服务器, 然后把拿到的文件对象在
uploaddone回调中传给用户, 然后将其拼装成文件消息发送出去。
- 支持以下几种场景
- 开发者也可以先
预览文件来获取文件对象, 然后调用此接口发送文件消息。- 通过参数
file传入文件
- 通过参数
- 直接发送文件消息的话会在
beforesend回调里面传入SDK生成的idClient, 如果先预览文件再发送, 那么此接口会直接返回idClient - 参数
type指定了要发送的文件类型, 包括图片、音频、视频和普通文件, 对应的值分别为'image'、'audio'、'video'和'file', 不传默认为'file'。 - 图片、音频、视频和普通文件的区别在于具体的文件信息不一样, 具体字段请参考
图片对象音频对象视频对象文件对象机器人对象
- 文件大小限制为最大100M
- 高级浏览器会在上传前就检测文件大小
- IE8和IE9会在上传完成后检测文件大小
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description sceneString toString | Number 接收方, 对方帐号或者群id
typeString <optional>
文件过滤器,
'image'会过滤掉非图片的文件,'audio'过滤掉非音频,'video'会过滤掉非视频的文件,
IE8/IE9 不支持文件过滤fileInputString | Node <optional>
文件选择 dom 节点或者节点 ID, SDK 会读取该节点下的文件, 在上传完成前请不要操作该节点下的文件
maxSizeNumber <optional>
限制文件的大小,单位字节
commonUploadBoolean <optional>
使用普通上传(最大100M文件)
blobBlob <optional>
Blob 对象
dataURLString <optional>
MIME type 和 base64 数据的 data URL
fileArray <optional>
文件对象, 开发者可以通过
预览文件拿到文件对象filePathString <optional>
仅供小程序(5.1.0+)、nodejs(5.4.0+)、react-native(5.3.0+)使用, 举例小程序通过 wx.chooseImage 或者 wx.startRecord 拿到临时文件路径 filePath 再传入。
resendBoolean <optional>
false 是否是重发。如果是重发,还需要额外带上消息的
flow和statusbeginuploadfunction <optional>
开始上传图片的回调
- 如果开发者传入 fileInput, 在此回调之前不能修改 fileInput
- 在此回调之后可以取消图片上传, 此回调会接收一个参数
upload, 调用upload.abort();来取消文件上传
uploadprogressuploadprogress <optional>
上传进度, IE9以下不支持上传进度
uploaddoneuploaddone <optional>
上传完成回调
- 此回调接收两个参数, error 和 obj
- 如果出错, error 包含详细的错误信息
- 如果上传成功, obj 包含详细的文件信息
beforesendbeforesend <optional>
发送文件消息之前的回调函数
resendBoolean <optional>
是否是重发。如果是重发,还需要额外带上消息的
flow和statusidClientString <optional>
如果是重发, 那么需要带上之前生成的idClient来标记这条消息
customString <optional>
扩展字段
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
pushContentString <optional>
自定义推送文案
pushPayloadString <optional>
自定义的推送属性
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
apnsObject <optional>
特殊推送选项, 只在群会话中使用
Properties
Name Type Argument Default Description accountsArray.<String> <optional>
需要特殊推送的账号列表, 不填表示推送给当前会话内的所有用户
contentString <optional>
需要特殊推送的文案, 不填的话默认为 pushContent
forcePushBoolean <optional>
true 是否强制推送, true 表示即使推送列表中的用户屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
isHistoryableBoolean <optional>
true 是否存储云端历史
isRoamingableBoolean <optional>
true 是否支持漫游
isSyncableBoolean <optional>
true 是否支持发送者多端同步
ccBoolean <optional>
是否支持抄送
isPushableBoolean <optional>
true 是否需要推送
isOfflinableBoolean <optional>
true 是否要存离线
isUnreadableBoolean <optional>
true 是否计入消息未读数
needPushNickBoolean <optional>
true 是否需要推送昵称
isLocalBoolean <optional>
false 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
localFromString <optional>
本地消息的发送方,默认是当前用户
- 只有发送本地消息时,才可自定义发送方
nosScenesString <optional>
存储场景,不传默认实例化配置
nosSurvivalTimeNumber <optional>
存储有效时间,不传默认实例化配置 不得小于一天,单位秒
replyMsgObject <optional>
要回复的消息对象,表示当前消息是对某条消息的回复
yidunAntiCheatingString <optional>
易盾反作弊字段,长度限制1024,JSON字符串格式。如:
"{"email":"test@163.com","phone":"12345678901","token":"1234","extension":"hello"}"yidunAntiSpamExtString <optional>
易盾反作弊扩展字段字段,2021-08-09 追加。限制 JSON 格式字符串,长度上限 1024
subTypeInterger <optional>
消息子类型,格式为大于0的整数,开发者可自定义
envString <optional>
环境变量,用于指向不同的抄送、第三方回调等配置
donedone 结果回调函数
Returns:
- Type
- Void | Message
Example
nim.sendFile({ scene: 'p2p', to: 'account', 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); }, uploaddone: function(error, file) { console.log('上传' + (!error?'成功':'失败'), error, file); }, beforesend: function(msg) { console.log('正在发送p2p image消息, id=' + msg.idClient); pushMsg(msg); }, done: sendMsgDone }); - 文件消息是
-
sendGeo(options)
-
发送地理位置消息
- 地理位置消息是
消息类型的一种,geo参数请参考地理位置对象
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description sceneString toString | Number 接收方, 对方帐号或者群id
geoObject 地理位置对象
Properties
Name Type Description lngNumber 经度
latNumber 纬度
titleString 地址描述
resendBoolean <optional>
是否是重发。如果是重发,还需要额外带上消息的
flow和statusidClientString <optional>
如果是重发, 那么需要带上之前生成的idClient来标记这条消息
customString <optional>
扩展字段
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
pushContentString <optional>
自定义推送文案
pushPayloadString <optional>
自定义的推送属性
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
apnsObject <optional>
特殊推送选项, 只在群会话中使用
Properties
Name Type Argument Default Description accountsArray.<String> <optional>
需要特殊推送的账号列表, 不填表示推送给当前会话内的所有用户
contentString <optional>
需要特殊推送的文案, 不填的话默认为 pushContent
forcePushBoolean <optional>
true 是否强制推送, true 表示即使推送列表中的用户屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
isHistoryableBoolean <optional>
true 是否存储云端历史
isRoamingableBoolean <optional>
true 是否支持漫游
isSyncableBoolean <optional>
true 是否支持发送者多端同步
ccBoolean <optional>
是否支持抄送
isPushableBoolean <optional>
true 是否需要推送
isOfflinableBoolean <optional>
true 是否要存离线
isUnreadableBoolean <optional>
true 是否计入消息未读数
needPushNickBoolean <optional>
true 是否需要推送昵称
isLocalBoolean <optional>
false 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
localFromString <optional>
本地消息的发送方,默认是当前用户
- 只有发送本地消息时,才可自定义发送方
replyMsgObject <optional>
要回复的消息对象,表示当前消息是对某条消息的回复
yidunAntiCheatingString <optional>
易盾反作弊字段,长度限制1024,JSON字符串格式。如:
"{"email":"test@163.com","phone":"12345678901","token":"1234","extension":"hello"}"yidunAntiSpamExtString <optional>
易盾反作弊扩展字段字段,2021-08-09 追加。限制 JSON 格式字符串,长度上限 1024
subTypeInterger <optional>
消息子类型,格式为大于0的整数,开发者可自定义
envString <optional>
环境变量,用于指向不同的抄送、第三方回调等配置
donedone 结果回调函数
Returns:
- Type
- Message
Example
var msg = nim.sendGeo({ scene: 'p2p', to: 'account', geo: { lng: '116.3833', lat: '39.9167', title: 'Beijing' }, done: sendMsgDone }); console.log('正在发送p2p geo消息, id=' + msg.idClient); pushMsg(msg); - 地理位置消息是
-
sendMsgReceipt(options)
-
发送消息已读回执
- 目前只支持
'p2p'会话 - 如果没有传入消息, 则直接返回成功
- 如果已经发送过比传入的消息的时间戳大的已读回执, 那么直接返回成功
Parameters:
Name Type Description optionsObject 参数
Properties
Name Type Description msgIMMessage 要发送已读回执的会话的最后一条消息, 可以直接通过
来获取此消息session.lastMsgdonefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.sendMsgReceipt({ msg: session.lastMsg, done: sendMsgReceiptDone }); function sendMsgReceiptDone(error, obj) { console.log('发送消息已读回执' + (!error?'成功':'失败'), error, obj); } - 目前只支持
-
sendRobotMsg()
-
-
sendTeamMsgReceipt(options)
-
标记群组消息已读
- 支持数据库且带有
idClient参数时,标记已读完成后,SDK会自动给消息添加hasRead: true字段 - 对于已有
hasRead: true字段的消息,则无需重复标记已读
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description teamMsgReceiptsArray.<Object> 已读消息对象
teamMsgReceipt.teamIdString 群序号,必传
teamMsgReceipt.idServerString 消息的idServer,必传
teamMsgReceipt.idClientString <optional>
消息的idClient
Returns:
- Type
- Void
Example
nim.sendTeamMsgReceipt({ teamMsgReceipts: [{ teamId: '1027484', idServer: '68953284018302', idClient: '917b149176b6570c0d5b797a50c36e8d' }], done: sendTeamMsgReceiptDone }) function sendTeamMsgReceiptDone (error, obj) { console.log('标记群组消息已读' + (!error?'成功':'失败')); } - 支持数据库且带有
-
sendText(options)
-
发送文本消息
- 文本消息是消息的一种, 请参考
消息
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description sceneString toString 接收方, 对方帐号或者群id
textString 文本消息内容
resendBoolean <optional>
是否是重发。如果是重发,还需要额外带上 消息的
flow和statusidClientString <optional>
如果是重发, 那么需要带上之前生成的idClient来标记这条消息
customString <optional>
扩展字段
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
pushContentString <optional>
自定义推送文案
pushPayloadString <optional>
自定义的推送属性
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
needPushNickBoolean <optional>
true 是否需要推送昵称
isHistoryableBoolean <optional>
true 是否存储云端历史
isRoamingableBoolean <optional>
true 是否支持漫游
isSyncableBoolean <optional>
true 是否支持发送者多端同步
ccBoolean <optional>
是否支持抄送
isPushableBoolean <optional>
true 是否需要推送
isOfflinableBoolean <optional>
true 是否要存离线
isUnreadableBoolean <optional>
true 是否计入消息未读数
apnsObject <optional>
特殊推送选项, 只在群会话中使用
Properties
Name Type Argument Default Description accountsArray.<String> <optional>
需要特殊推送的账号列表, 不填表示推送给当前会话内的所有用户
contentString <optional>
需要特殊推送的文案, 不填的话默认为 pushContent
forcePushBoolean <optional>
true 是否强制推送, true 表示即使推送列表中的用户屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
isLocalBoolean <optional>
false 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
localFromString <optional>
本地消息的发送方,默认是当前用户
- 只有发送本地消息时,才可自定义发送方
needMsgReceiptBoolean <optional>
false 是否需要业务已读(包含该字段且为true即表示需要)
clientAntiSpamBoolean <optional>
false 是否需要过客户端反垃圾
yidunEnableBoolean <optional>
false 是否需要使用自定义反垃圾字段,如为true,可通过
antiSpamContent指定自定义字段antiSpamContentString <optional>
在开启yidunEnable后, 开发者自定义的反垃圾字段(json格式),格式如下:{"type": 1, "data": "custom content"} 字段说明:type:1.文本,2.图片,3视频,data内容:文本内容or图片地址or视频地址
antiSpamBusinessIdString <optional>
用户配置的对某条单条消息另外反垃圾的业务ID
antiSpamUsingYidunBoolean <optional>
false 单条消息是否需要易盾反垃圾
needUpdateSessionBoolean <optional>
true 是否需要刷新服务器会话列表,默认是true
replyMsgObject <optional>
要回复的消息对象,表示当前消息是对某条消息的回复
yidunAntiCheatingString <optional>
易盾反作弊字段,长度限制1024,JSON字符串格式。如:
"{"email":"test@163.com","phone":"12345678901","token":"1234","extension":"hello"}"yidunAntiSpamExtString <optional>
易盾反作弊扩展字段字段,2021-08-09 追加。限制 JSON 格式字符串,长度上限 1024
subTypeInterger <optional>
消息子类型,格式为大于0的整数,开发者可自定义
envString <optional>
环境变量,用于指向不同的抄送、第三方回调等配置
donedone 结果回调函数
Returns:
- Type
- Message
Example
var msg = nim.sendText({ scene: 'p2p', to: 'account', text: 'hello', done: sendMsgDone }); console.log('正在发送p2p text消息, id=' + msg.idClient); pushMsg(msg); function sendMsgDone(error, msg) { console.log('发送' + msg.scene + ' ' + msg.type + '消息' + (!error?'成功':'失败') + ', id=' + msg.idClient, error, msg); } - 文本消息是消息的一种, 请参考
-
sendTipMsg(options)
-
发送提醒消息
- 提醒消息是
消息类型的一种 - 提醒消息用于会话内的状态提醒,如进入会话时出现的欢迎消息,或者会话命中敏感词后的提示消息等等.
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description sceneString toString | Number 接收方, 对方帐号或者群id
tipString 提醒内容
resendBoolean <optional>
是否是重发。如果是重发,还需要额外带上消息的
flow和statusidClientString <optional>
如果是重发, 那么需要带上之前生成的idClient来标记这条消息
customString <optional>
扩展字段
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
pushContentString <optional>
自定义推送文案
pushPayloadString <optional>
自定义的推送属性
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
apnsObject <optional>
特殊推送选项, 只在群会话中使用
Properties
Name Type Argument Default Description accountsArray.<String> <optional>
需要特殊推送的账号列表, 不填表示推送给当前会话内的所有用户
contentString <optional>
需要特殊推送的文案, 不填的话默认为 pushContent
forcePushBoolean <optional>
true 是否强制推送, true 表示即使推送列表中的用户屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
isHistoryableBoolean <optional>
true 是否存储云端历史
isRoamingableBoolean <optional>
true 是否支持漫游
isSyncableBoolean <optional>
true 是否支持发送者多端同步
ccBoolean <optional>
是否支持抄送
isPushableBoolean <optional>
true 是否需要推送
isOfflinableBoolean <optional>
true 是否要存离线
isUnreadableBoolean <optional>
true 是否计入消息未读数
needPushNickBoolean <optional>
true 是否需要推送昵称
isLocalBoolean <optional>
false 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
localFromString <optional>
本地消息的发送方,默认是当前用户
- 只有发送本地消息时,才可自定义发送方
replyMsgObject <optional>
要回复的消息对象,表示当前消息是对某条消息的回复
yidunAntiCheatingString <optional>
易盾反作弊字段,长度限制1024,JSON字符串格式。如:
"{"email":"test@163.com","phone":"12345678901","token":"1234","extension":"hello"}"yidunAntiSpamExtString <optional>
易盾反作弊扩展字段字段,2021-08-09 追加。限制 JSON 格式字符串,长度上限 1024
subTypeInterger <optional>
消息子类型,格式为大于0的整数,开发者可自定义
envString <optional>
环境变量,用于指向不同的抄送、第三方回调等配置
donedone 结果回调函数
Returns:
- Type
- Message
Example
var msg = nim.sendTipMsg({ scene: 'p2p', to: 'account', tip: 'tip content', done: sendMsgDone }); console.log('正在发送p2p提醒消息, id=' + msg.idClient); pushMsg(msg); - 提醒消息是
-
setCurrSession(sessionId)
-
设置当前会话
- 设置后, 当前会话未读数会被置为
0, 同时开发者会收到onupdatesession回调 - 之后此会话在收到消息之后不会更新未读数
- 传空字符串的话, 重置当前会话为空
Parameters:
Name Type Description sessionIdString 会话ID
Returns:
- Type
- Void
Example
nim.setCurrSession('sessionId'); - 设置后, 当前会话未读数会被置为
-
setOptions(options)
-
更新配置, 参数格式跟
NIM.getInstance保持一致Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description tokenString 帐号的 token, 用于建立连接
Example
// 更新 token 的例子 nim.setOptions({ token: 'newToken' }); -
stripImageMeta(options)
-
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description urlString 原图 url
donedone 结果回调函数, 成功时附上 interlace 后的图片 url
Returns:
- Type
- Void
Example
var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ0MzE0NTgyNDI0M184YjFkYTMwMS02NjcxLTRiYjktYTUwZC04ZTVlZjZlNzZjMzA='; var interlaceUrl = nim.stripImageMeta({ url: url, strip: true, done: stripImageMetaDone }); function stripImageMetaDone(error, obj) { console.log('去除图片元信息' + (!error?'成功':'失败'), error, obj); } -
thumbnailImage(options)
-
生成缩略图
- 只支持通过
预览文件或发送文件消息拿到的图片 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:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Default Description urlString 原图 url
widthInt <optional>
缩略图的最大宽度, 必须为整数, 此方法内部使用 Math.round 来格式化 width/height
heightInt <optional>
缩略图的最大高度, 必须为整数, 此方法内部使用 Math.round 来格式化 width/height
modeString 缩略模式, 目前支持以下三种模式, 请参考上面的描述
'cover''contain''crop'
axis.xInt <optional>
'crop'模式下控制最后一步裁剪的位置, 请参考上面的描述axis.yInt <optional>
'crop'模式下控制最后一步裁剪的位置, 请参考上面的描述enlargeBoolean <optional>
false 当图片尺寸小于要缩略的尺寸时, 是否放大图片, 默认
false不放大donedone 结果回调函数, 成功时附上缩略后的图片 url
Returns:
- Type
- Void
Example
var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ0MzE0NTgyNDI0M184YjFkYTMwMS02NjcxLTRiYjktYTUwZC04ZTVlZjZlNzZjMzA='; var thumbnailUrl = nim.thumbnailImage({ url: url, mode: 'cover', width: 80, height: 100, done: thumbnailImageDone }); function thumbnailImageDone(error, obj) { console.log('生成缩略图' + (!error?'成功':'失败'), error, obj); } - 只支持通过
-
transferSuperTeam(options)
-
转让群
转让群后, 所有群成员会收到一条类型为的'transferSuperTeam'群通知消息。此类群通知消息的from字段的值为转让群的人的帐号,to字段的值为对应的群ID,attach有一个字段team的值为对应的群对象,attach有一个字段account的值为为新群主的帐号,attach有一个字段members的值为包含新旧群主的群成员列表。- 如果转让群的同时离开群, 那么相当于调用
主动退群来离开群, 所有群成员会再收到一条类型为的'leaveSuperTeam'群通知消息。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountString 新群主的帐号
leaveBoolean 转让群的同时是否离开群
donedone 结果回调函数
- See:
Returns:
- Type
- Void
Example
nim.transferSuperTeam({ teamId: '123', account: 'zyy2', leave: false, done: transferOwnerDone }); function transferOwnerDone(error, obj) { console.log('转让群' + (!error?'成功':'失败'), error, obj); } -
transferTeam(options)
-
转让群
转让群后, 所有群成员会收到一条类型为的'transferTeam'群通知消息。此类群通知消息的from字段的值为转让群的人的帐号,to字段的值为对应的群ID,attach有一个字段team的值为对应的群对象,attach有一个字段account的值为为新群主的帐号,attach有一个字段members的值为包含新旧群主的群成员列表。- 如果转让群的同时离开群, 那么相当于调用
主动退群来离开群, 所有群成员会再收到一条类型为的'leaveTeam'群通知消息。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountString 新群主的帐号
leaveBoolean 转让群的同时是否离开群
donedone 结果回调函数
- See:
Returns:
- Type
- Void
Example
nim.transferTeam({ teamId: '123', account: 'zyy2', leave: false, done: transferOwnerDone }); function transferOwnerDone(error, obj) { console.log('转让群' + (!error?'成功':'失败'), error, obj); } -
updateCollect(options, done)
-
更新收藏
- 只允许更新扩展字段
custom
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description collectObject 新的Collect对象,至少要包含
id、createTime和更新后的custom三个字段;如要删除custom,可不填donefunction 结果回调函数,第一个参数是error,第二个参数有一个属性collect,代表更新后的收藏对象
- 只允许更新扩展字段
-
updateFriend(options)
-
更新好友
- 开发者可以用此接口来更新好友的备注
- 开发者也可以使用JSON格式的扩展字段来进行扩展
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description accountString 要更新的好友的account
aliasString <optional>
备注
customString <optional>
扩展字段, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.updateFriend({ account: 'account', alias: 'alias', custom: 'custom', done: updateFriendDone }); function updateFriendDone(error, obj) { console.log('更新好友' + (!error?'成功':'失败'), error, obj); if (!error) { onUpdateFriend(obj); } } -
updateInfoInSuperTeam(options)
-
修改个人群成员信息 (修改自己的群属性)
目前支持修改的属性有这些
nickInTeam: 自己在群里面的群昵称muteTeam: 是否关闭此群的消息提醒,true表示关闭提醒, 但是SDK仍然会收到这个群的消息, SDK只是记录这个设置, 具体根据这个设置要执行的操作由第三方APP决定custom: 第三方扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串
修改自己的群属性后,所有
群成员会收到SDK初始化时设置的onUpdateSuperTeamMember回调Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description teamIdString 群id
nickInTeamString <optional>
在群里面的昵称
muteTeamBoolean <optional>
是否关闭此群的消息提醒,
true表示关闭提醒, 但是SDK仍然会收到这个群的消息, SDK只是记录这个设置, 具体根据这个设置要执行的操作由第三方APP决定customBoolean <optional>
第三方扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.updateInfoInSuperTeam({ teamId: '123', // 此参数为可选参数 nickInTeam: '群昵称', // 静音群, 此参数为可选参数 muteTeam: true, // 第三方扩展字段 custom: '{}' done: updateInfoInSuperTeamDone }); function updateInfoInSuperTeamDone(error, obj) { console.log('修改自己的群属性' + (!error?'成功':'失败'), error, obj); } -
updateInfoInTeam(options)
-
修改自己的群属性
目前支持修改的属性有这些
nickInTeam: 自己在群里面的群昵称muteTeam: 是否关闭此群的消息提醒,true表示关闭提醒, 但是SDK仍然会收到这个群的消息, SDK只是记录这个设置, 具体根据这个设置要执行的操作由第三方APP决定, 设置之后可以调用接口NIM#notifyForNewTeamMsg来查询自己在各个群中所设置的消息提醒策略custom: 第三方扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description teamIdString 群id
nickInTeamString <optional>
在群里面的昵称
muteTeamBoolean <optional>
是否关闭此群的消息提醒,
true表示关闭提醒, 但是SDK仍然会收到这个群的消息, SDK只是记录这个设置, 具体根据这个设置要执行的操作由第三方APP决定customBoolean <optional>
第三方扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串
donedone 结果回调函数
- See:
Returns:
- Type
- Void
Example
nim.updateInfoInTeam({ teamId: '123', // 此参数为可选参数 // nickInTeam: '群昵称', // 静音群, 此参数为可选参数 // muteTeam: true, // 第三方扩展字段 // custom: '{}' done: updateInfoInTeamDone }); function updateInfoInTeamDone(error, obj) { console.log('修改自己的群属性' + (!error?'成功':'失败'), error, obj); } -
updateLocalMsg(options)
-
更新本地消息
- 更新
idClient对应的本地消息 - 如果不
支持数据库, 算成功 - 如果对应的消息不存在, 算成功, 返回 null
- 这些字段只会被更新到本地数据库, 不会被更新到服务器上
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description idClientString idClient
localCustomString <optional>
自定义字段
donefunction 结果回调函数, 成功时会额外附上
消息Returns:
- Type
- Void
Example
nim.updateLocalMsg({ idClient: 'p2p-account', localCustom: '{"key","value"}', done: updateLocalMsgDone }); function updateLocalMsgDone(error, obj) { console.log('更新本地消息' + (!error?'成功':'失败'), error, obj); } - 更新
-
updateLocalSession(options)
-
更新本地会话
- 更新
id对应的本地会话 - 如果对应的会话不存在, 算成功, 返回data的session字段为undefined
- 这些字段只会被更新到本地数据库, 不会被更新到服务器上
- 目前只允许更新
localCustom
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description idString id
localCustomString <optional>
自定义字段
needNotifyBoolean <optional>
是否触发onupdatesession或onupdatesessions回调,默认是true
donefunction 结果回调函数, 成功时会额外附上
会话Returns:
- Type
- Void
Example
nim.updateLocalSession({ id: 'p2p-account', localCustom: '{"key","value"}', done: updateLocalSessionDone }); function updateLocalSessionDone(error, obj) { console.log('更新本地会话' + (!error?'成功':'失败'), error, obj); } - 更新
-
updateLocalSysMsg(options)
-
更新本地系统通知
- 更新
idServer对应的本地系统通知 - 如果不
支持数据库, 算成功 - 如果对应的系统通知不存在, 算成功, 返回 null
- 这些字段只会被更新到本地数据库, 不会被更新到服务器上
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description idServerString idServer
stateString <optional>
处理状态
localCustomString <optional>
自定义字段
donefunction 结果回调函数, 成功时会额外附上
系统通知Returns:
- Type
- Void
Example
nim.updateLocalSysMsg({ idServer: '1234', status: 'bingo', localCustom: '{"key","value"}', done: updateLocalSysMsgDone }); function updateLocalSysMsgDone(error, obj) { console.log(error); console.log(obj); console.log('更新本地系统通知' + (!error?'成功':'失败')); } - 更新
-
updateMsgPin(options, done)
-
更新PIN消息的扩展字段
- 若成功,会触发相关人员的
onPinMsgChange初始化回调
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description msgObject 被PIN的消息对象
pinCustomString <optional>
要更新的PIN扩展字段
donefunction 结果回调函数,第一个参数是error,代表是否有错
- 若成功,会触发相关人员的
-
updateMuteStateInTeam(options)
-
更新群成员禁言状态
更新群成员禁言状态后, 所有群成员会收到一条类型为的'updateTeamMute'群通知消息。此类群通知消息的from字段的值为操作方,to字段的值为对应的群ID,attach有一个字段team的值为对应的群对象,attach有一个字段account的值为被禁言的帐号,attach有一个字段members的值为被禁言的群成员列表。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountString 要修改昵称的
群成员的帐号muteBoolean 是否要禁言
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.updateMuteStateInTeam({ teamId: '123', account: 'a', mute: true, done: updateMuteStateInTeamDone }) function updateMuteStateInTeamDone(error, obj) { console.log('更新群成员禁言状态' + (!error?'成功':'失败'), error, obj); } -
updateMyInfo(options)
-
更新我的名片
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description nickString 昵称
avatarString 头像
signString 签名
genderString emailString 邮箱
birthString 生日
telString 手机号
customString 扩展字段
antiSpamBusinessIdString 用户配置的对某些资料内容另外的反垃圾的业务ID
Returns:
- Type
- Void
Example
nim.updateMyInfo({ nick: 'newNick', avatar: 'http://newAvatar', sign: 'newSign', gender: 'male', email: 'new@email.com', birth: '1900-01-01', tel: '13523578129', custom: '{type: "newCustom", value: "new"}', antiSpamBusinessId:'{"textbid":"","picbid":""}' done: updateMyInfoDone }); function updateMyInfoDone(error, user) { console.log('更新登录用户的名片' + (!error?'成功':'失败'), error, user); if (!error) { onUpdateMyInfo(user); } } -
updateNickInSuperTeam(options)
-
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountString 要修改昵称的
超大群群成员的帐号nickInTeamString 群昵称
donedone 结果回调函数
- See:
Returns:
- Type
- Void
Example
nim.updateNickInSuperTeam({ teamId: '123', account: 'a2', nickInTeam: '群昵称', done: updateNickInSuperTeamDone }); function updateNickInSuperTeamDone(error, obj) { console.log('修改自己的群属性' + (!error?'成功':'失败'), error, obj); } -
updateNickInTeam(options)
-
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountString 要修改昵称的
群成员的帐号nickInTeamString 群昵称
donedone 结果回调函数
- See:
Returns:
- Type
- Void
Example
nim.updateNickInTeam({ teamId: '123', account: 'a2', nickInTeam: '群昵称', done: updateNickInTeamDone }); function updateNickInTeamDone(error, obj) { console.log('修改自己的群属性' + (!error?'成功':'失败'), error, obj); } -
updatePushNotificationMultiportConfig(options)
-
更新多端推送配置选项
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description shouldPushNotificationWhenPCOnlineBoolean <optional>
桌面端在线时是否需要发送推送给手机端
Returns:
- Type
- Void
-
updateServerSession(options)
-
更新服务器上某个会话的扩展字段
- 指更新服务器上会话列表中的会话,不是漫游会话
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description sceneString 会话
场景toString 对方账号或群ID
extraString 要更新的扩展字段
Example
nim.updateServerSession({ scene: 'p2p', to: 'account', extra: 'xxxx', done: function (obj) { console.log('更新会话' + (!error?'成功':'失败'), error, obj); } }); -
updateSessionsWithMoreRoaming(options)
-
更新漫游消息不全的会话的漫游时间戳
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description msgObject 完整漫游消息列表中最早的一条消息,即在这条消息之后的本地消息列表是完整的,
msg至少应有time、idServer、from、to、scene五个属性donefunction -
updateStickTopSession(options, done)
-
更新置顶会话的扩展字段
- 若成功,会触发
onupdatesession回调 - 多端登录时,会触发多端的
onupdatesession回调
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description idString 会话ID
topCustomString <optional>
扩展字段
donefunction 结果回调函数,第一个参数是error,代表是否有错
- 若成功,会触发
-
updateSuperTeam(options)
-
更新群
更新超大群后, 所有群成员会收到一条类型为的'updateSuperTeam'群通知消息。此类群通知消息的from字段的值为更新群的人的帐号,to字段的值为对应的群ID,attach有一个字段team的值为被更新的群信息。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description teamIdString 群id
nameString <optional>
群名字
avatarString <optional>
群头像
introString <optional>
群简介
announcementString <optional>
群公告
joinModeString <optional>
beInviteModeString <optional>
inviteModeString <optional>
updateCustomModeString <optional>
updateTeamModeString <optional>
antiSpamBusinessIdString <optional>
用户配置的对某些资料内容另外的反垃圾的业务ID
customString <optional>
扩展字段
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.updateSuperTeam({ teamId: '123', name: '群名字', avatar: 'avatar', intro: '群简介', announcement: '群公告', custom: '自定义字段', done: updateSuperTeamDone }); function updateSuperTeamDone(error, team) { console.log('更新群' + (!error?'成功':'失败'), error, team); } -
updateSuperTeamMembersMute(options)
-
更新群成员禁言状态
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 群id
accountsArray 要修改禁言的
超大群成员帐号列表,每次最多修改十个muteBoolean 是否要禁言
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.updateSuperTeamMembersMute({ teamId: '123', accounts: ['ss', 'aa'], mute: true, done: updateSuperTeamMembersMuteDone }) function updateSuperTeamMembersMuteDone(error, obj) { console.log('更新群成员禁言状态' + (!error?'成功':'失败'), error, obj); } -
updateSuperTeamMute(options)
-
超大群禁言
- 更新超大群的禁言状态后,所有
超大群群成员会收到一条类型为的'updateSuperTeam'群通知消息。此类群通知消息的from字段的值为操作方,to字段的值为对应的群ID,attach有一个字段team的值为对应的超大群对象,attach有一个字段users的值为对应的操作人列表 - 更新超大群的禁言状态后, 会收到SDK初始化时设置的
onUpdateSuperTeam回调
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 待禁言群的群id
muteString 是否禁言
Returns:
- Type
- Void
Example
nim.updateSuperTeamMute({ teamId: '1027484', mute: true, done: updateSuperTeamMuteDone }) function updateSuperTeamMuteDone (error, obj) { console.log('禁言群' + (!error?'成功':'失败')); } - 更新超大群的禁言状态后,所有
-
updateTeam(options)
-
更新群
普通群不可以更新群加入方式群被邀请模式群邀请模式群信息修改权限群信息自定义字段修改权限
更新群后, 所有群成员会收到一条类型为的'updateTeam'群通知消息。此类群通知消息的from字段的值为更新群的人的帐号,to字段的值为对应的群ID,attach有一个字段team的值为被更新的群信息。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description teamIdString 群id
nameString <optional>
群名字
avatarString <optional>
群头像
introString <optional>
群简介
announcementString <optional>
群公告
joinModeString <optional>
群加入方式beInviteModeString <optional>
群被邀请模式inviteModeString <optional>
群邀请模式updateTeamModeString <optional>
群信息修改权限updateCustomModeString <optional>
antiSpamBusinessIdString <optional>
用户配置的对某些资料内容另外的反垃圾的业务ID
customString <optional>
扩展字段
donedone 结果回调函数
Returns:
- Type
- Void
Example
nim.updateTeam({ teamId: '123', name: '群名字', avatar: 'avatar', intro: '群简介', announcement: '群公告', custom: '自定义字段', done: updateTeamDone }); function updateTeamDone(error, team) { console.log('更新群' + (!error?'成功':'失败'), error, team); } -
viewImageStripMeta(options)
-
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description urlString 原图 url
donedone 结果回调函数, 成功时附上 interlace 后的图片 url
Returns:
- Type
- Void
Example
var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ0MzE0NTgyNDI0M184YjFkYTMwMS02NjcxLTRiYjktYTUwZC04ZTVlZjZlNzZjMzA='; var stripMetaUrl = nim.viewImageStripMeta({ url: url, strip: true });
Type Definitions
-
publishEvent
-
发布事件
Example
nim.publishEvent({ type: 100000, value: 2, custom: 'hello world', validTime: 60, sync: false, done: publishEventDone }); function publishEventDone(error, obj) { console.log('发布事件' + (!error?'成功':'失败'), error, obj); } -
querySubscribeEventsByAccounts
-
按账号获取指定事件的订阅关系
Example
nim.querySubscribeEventsByAccounts({ type: 100000, accounts: ['cs3'], done: querySubscribeEventDone }); function querySubscribeEventDone(error, obj) { console.log('获取订阅列表' + (!error?'成功':'失败'), error, obj); } -
querySubscribeEventsByType
-
查询指定事件的全部订阅关系
Example
nim.querySubscribeEventsByType({ type: 100000, done: querySubscribeEventDone }); function querySubscribeEventDone(error, obj) { console.log('获取订阅列表' + (!error?'成功':'失败'), error, obj); } -
subscribeEvent
-
订阅事件
Example
nim.subscribeEvent({ type: 100000, accounts: ['cs3'], subscribeTime: 70, sync: true, done: subscribeEventDone }); function subscribeEventDone(error, obj) { console.log('订阅事件' + (!error?'成功':'失败'), error, obj); } -
unSubscribeEventsByAccounts
-
按账号取消指定事件的订阅关系
Example
nim.unSubscribeEventsByAccounts({ type: 100000, accounts: ['cs3'], done: unSubscribeEventDone }); function unSubscribeEventDone(error, obj) { console.log('取消订阅事件' + (!error?'成功':'失败'), error, obj); } -
unSubscribeEventsByType
-
取消指定事件的全部订阅关系
Example
nim.unSubscribeEventsByType({ type: 100000, done: unSubscribeEventDone }); function unSubscribeEventDone(error, obj) { console.log('取消订阅事件' + (!error?'成功':'失败'), error, obj); }