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 是否开启调试, 如果开启调试, 将会在控制台输出一些log。默认
false不输出日志, 可以传true来开启日志。logFuncfunction | Object <optional>
null 是否对日志做额外的处理,诸如日志存储、日志上报等等,该函数会截获console日志的参数,供开发者使用
secureBoolean | Object <optional>
true secure 模式下会通过 https 协议跟服务器建立连接, 非 secure 模式下会通过 http 协议跟服务器建立连接, 默认 true
appKeyString 在云信管理后台查看应用的 appKey
accountString 帐号, 应用内唯一
tokenString 帐号的 token, 用于建立连接
nosScenesString <optional>
'im' nos文件存储全局配置,存储场景,实例有效,默认im
nosSurvivalTimeNumber <optional>
Infinity nos文件存储全局配置,存储有效时间,实例有效,默认Infinity 不得小于一天,单位秒
onconnectfunction <optional>
连接建立后的回调, 会传入一个对象, 包含登录的信息, 有以下字段
lastLoginDeviceId: 上次登录的设备的设备号customTag: 客户端自定义tag,登录时多端同步改字段,最大32个字符connectionId: 本次登录的连接号ip: 客户端IPport: 客户端端口country: 本次登录的国家
onwillreconnectfunction <optional>
即将重连的回调
- 此时说明 SDK 已经断开连接, 请开发者在界面上提示用户连接已断开, 而且正在重新建立连接
- 此回调会收到一个对象, 包含额外的信息, 有以下字段
duration: 距离下次重连的时间retryCount: 重连尝试的次数
ondisconnectfunction <optional>
断开连接后的回调
- 此时说明 SDK 处于断开状态, 开发者此时应该根据错误码提示相应的错误信息, 并且跳转到登录页面
- 此回调会收到一个对象, 包含错误的信息, 有以下字段
code: 出错时的错误码, 可能为空302: 账号或者密码错误, 请跳转到登录页面并提示错误417: 重复登录, 已经在其它端登录了, 请跳转到登录页面并提示错误'kicked': 被踢
- 当
code为'kicked'的时候, 此对象会有以下字段reason: 被踢的原因samePlatformKick: 不允许同一个帐号在多个地方同时登录serverKick: 被服务器踢了otherPlatformKick: 被其它端踢了
message: 文字描述的被踢的原因
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>
群成员信息更新后的回调, 会传入
超大群群成员对象, 不过此时的信息是不完整的, 只会包括被更新的字段。当前登录帐号在其它端修改自己在群里面的昵称时也会收到此回调onAddSuperTeamMembersfunction <optional>
新成员入超大群的回调, 此方法接收一个参数, 包含群信息和群成员信息
onRemoveSuperTeamMembersfunction <optional>
有人出超大群的回调, 此方法接收一个参数, 包含群信息和被移除的群成员账号
onDismissSuperTeamfunction <optional>
超大群解散的回调, 所有群成员均会收到该回调。此方法接收一个参数, 包含被解散的群id
onTransferSuperTeamfunction <optional>
移交超大群的回调, 此方法接收一个参数, 包含群信息和新老群主信息
syncTeamsBoolean <optional>
true 是否同步群列表, 默认
true. 如果传false就收不到群列表, 即不会收到onteams回调, 开发者后续可以调用获取群列表来获取群列表.syncExtraTeamInfoBoolean <optional>
是否同步额外的群信息, 默认
true会同步额外的群信息, 目前包括- 当前登录用户是否开启某个群的消息提醒 (SDK 只是存储了此信息, 具体用此信息来做什么事情完全由开发者控制)
- 调用接口
NIM#updateInfoInTeam来关闭/开启某个群的消息提醒 - 调用接口
NIM#notifyForNewTeamMsg来查询是否需要群消息通知
onteamsfunction <optional>
同步群列表的回调, 会传入
群数组teamsteams的属性invalid包含退出的群
onsynccreateteamfunction <optional>
syncTeamMembersBoolean <optional>
true 是否同步群成员, 默认
true. 只有在syncTeams=true的时候才起作用, 如果传false就不会同步群成员, 即不会收到onteammembers和onsyncteammembersdone回调, 开发者后续可以调用获取群成员来获取群成员.onteammembersfunction <optional>
同步群成员的回调, 一个群对应一个回调, 会传入
群成员数组onsyncteammembersdonefunction <optional>
当
syncTeams和syncTeamMembers同时为true时, 会同步所有群的群成员, 当所有群的群成员同步结束时, 会调用此回调onupdateteammemberfunction <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来同步未读数
onsessionsfunction <optional>
同步最近会话列表回调, 会传入
会话列表, 按时间正序排列, 即最近聊过天的放在列表的最后面。onupdatesessionfunction <optional>
更新会话的回调, 会传入
会话, 以下情况会收到此回调- 收到消息
- 发送消息
- 设置当前会话
- 重置会话未读数
onSyncUpdateServerSessionfunction <optional>
更新服务端会话在线多端同步回调。多端登录时,一端调用
NIM#updateServerSession更新了服务端会话,其他端会收到该同步回调shouldIgnoreNotificationfunction <optional>
是否要忽略某条通知类消息, 该方法会接收一个消息对象, 如果该方法返回 true, 那么 SDK 将忽略此条通知类消息
shouldCountTeamNotifyUnreadfunction <optional>
是否群通知消息记未读
syncRoamingMsgsBoolean <optional>
true 是否同步漫游消息, 默认
true. 如果传false就收不到漫游消息, 即不会收到onroamingmsgs回调.syncSuperTeamRoamingMsgsBoolean <optional>
true 是否额外同步大群漫游消息, 默认
true. 如果传false就不会收到超大群的onroamingmsgs回调.onroamingmsgsfunction <optional>
同步漫游消息(包括超大群漫游消息和其他漫游消息)的回调, 每个会话对应一个回调, 会传入
消息数组onofflinemsgsfunction <optional>
同步离线消息的回调, 每个会话对应一个回调, 会传入
消息数组onmsgfunction <optional>
收到消息的回调, 会传入
消息对象- 当前登录帐号在其它端发送消息之后也会收到此回调, 注意此时消息对象的
from字段就是当前登录的帐号
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: 拒绝入群申请的未读数
onupdatesysmsgunreadfunction <optional>
更新系统通知未读数的回调
onofflinecustomsysmsgsfunction <optional>
同步离线自定义系统通知的回调, 会传入
系统通知数组oncustomsysmsgfunction <optional>
收到自定义系统通知的回调, 会传入
系统通知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来禁用数据库
thumbnailToStaticBoolean <optional>
true 是否将动态图片缩略为静态图片,默认将动态图片缩略为静态图片
- 仅在
cover和contain缩略模式下,才支持将动态图片缩略为动态图片,其他模式下只能缩略为静态图片 - 可以调用SDK的
thumbnailImage,processImage等API生成图片的缩略图
logReportBoolean <optional>
false 是否上报异常错误日志,可以将该项设为
false来禁止上报错误日志- SDK会将部分错误及相关信息上传至云信统计平台,方便开发者统计及排查线上错误
defaultLinkString <optional>
lbs请求出错时,SDK会尝试连接该地址。默认连接云信的备用地址
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('同步完成'); } -
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); } -
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); } } -
addSuperTeamMembers(options)
-
拉人入超大群,无需对方同意
拉人入群, 所有超大群群成员会收到一条类型为的'addSuperTeamMembers'群通知消息。此类群通知消息的from字段的值为邀请者的帐号,to字段的值为对应的群ID;attach有一个字段team的值为对应的超大群对象,有一个字段members是被邀请新入群的成员信息数组。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 配置参数
accountsArray.<String> 配置参数
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); } -
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)
-
删除单人会话服务器聊天记录
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); } -
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>
Team.updateCustomMode|群信息自定义字段修改权限}
customString <optional>
扩展字段
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?'成功':'失败')); } - 如果不
-
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)
-
删除本地消息
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 deleteLocalMsgs(error, obj) { console.log('删除会话本地消息' + (!error?'成功':'失败'), error, obj); } - 如果不
-
deleteLocalMsgsBySession(options)
-
删除某个会话的本地消息
- 如果不
支持数据库, 算成功
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description sceneString toString 聊天对象, 账号或者群id
delLastMsgBoolean 是否同时删除本地会话对象中的的lastMsg
donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.deleteLocalMsgsBySession({ scene: 'p2p', to: 'account', delLastMsg: true, done: deleteLocalMsgsBySessionDone }); function deleteLocalMsgsBySession(error, obj) { console.log('删除会话本地消息' + (!error?'成功':'失败'), error, obj); } - 如果不
-
deleteLocalSession(options)
-
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description idString | Array.<String> 会话 id 或 id 数组
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)
-
撤回消息
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description msgIMMessage 待撤回的消息
donefunction 结果回调函数
Returns:
- Type
- Void
Example
nim.deleteMsg({ msg: someMsg, done: deleteMsgDone }) console.log('正在撤回消息', someMsg) function deleteMsgDone (error) { console.log('撤回消息' + (!error?'成功':'失败'), 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 (obj) { console.log('删除会话' + (!error?'成功':'失败'), error, obj); } }); -
deleteSession(options)
-
删除服务器上的漫游会话
- 删了后, 在不
支持数据库时, 下次同步就同步不到对应的会话以及会话对应的漫游消息; 此外, 在新设备上也同步不到对应的会话以及会话对应的漫游消息
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); } - 删了服务器上的漫游会话之后, 在不
-
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); } -
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('获取群成员' + (!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); } -
getFriends(options)
-
获取好友列表
- 如果开发者在
初始化SDK的时候设置了syncFriends为false, 那么就收不到onfriends回调, 可以调用此接口来获取好友列表。
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description 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专用]如果提供该参数, 那么查询这几种类型的消息
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获取本地会话
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的类型,比如获取每个会话中非通知类型的消息- 如果不
支持数据库, 返回空数组 - 会话列表按时间逆序排列, 即最近聊过天的放在列表的最前面
- 与
getLocalSessions不同的是,该接口可以排除或指定lastMsg的类型,如当excludeType='notification'时,返回的session列表是包含非通知类型消息的会话,该会话的lastMsg为最后一条非通知消息
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); } } - 如果不
-
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); } - 如果不
-
getMutedTeamMembers(options)
-
获取群禁言成员列表
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdArray.<String> 群 ID
Returns:
- Type
- Void
Example
nim.getMutedTeamMembers({ teamId: 'teamId', done: getMutedTeamMembersDone }) function getMutedTeamMembersDone (error, obj) { console.log('获取群禁言成员列表' + (!error?'成功':'失败')); } -
getPushNotificationMultiportConfig()
-
获取当前多端推送配置选项
Returns:
多端推送配置选项
- Type
- PushNotificationMultiportConfig
-
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 (obj) { console.log('获取会话列表' + (!error?'成功':'失败'), error, obj); } }); -
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?'成功':'失败')); } -
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('获取群成员' + (!error?'成功':'失败')); console.log('群成员:', arr) var lastmembers = arr && arr[arr.length - 1] if (lastmembers) { // 继续获取下一页 nim.getSuperTeamMembersByJoinTime({ teamId: '123', joinTime: 0, 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)
-
查询群组已读、未读账号列表
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamMsgReceiptArray.<Object> 已读消息对象
Properties
Name Type Description teamIdString 群序号
idServerString 消息编号
Returns:
- Type
- Void
Example
nim.getTeamMsgReadAccounts({ teamMsgReceipt: { teamId: '1027484', idServer: '68953284018302' }, done: getTeamMsgReadAccountsDone }) function getTeamMsgReadAccountsDone (error, obj) { console.log('查询群组已读、未读账号列表' + (!error?'成功':'失败')); } -
getTeamMsgReads(options)
-
查询群组消息已读、未读数量
- 对应于群组消息发送时配置了
needMsgReceipt字段的群组消息,接收方可以对消息发送已读回执 done回调的第二个参数是发送的参数,用于校验,第三个参数才是实际的结果
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamMsgReceiptsArray.<Object> 已读消息对象
teamMsgReceipt.teamIdString 群序号
teamMsgReceipt.idServerString 消息编号
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?'成功':'失败')); } -
getUser(options)
-
获取用户名片
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description accountString 账号
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> 账号数组
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);
- 目前只支持
-
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()
-
登出SDK
- 在连接正常的情况下,可以调用该方法退出登录,如果您不确定连接是否正常,请使用
connect
- 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>
-
muteTeamAll(options)
-
群组禁言
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamIdString 待禁言群的群id
typeString 禁言类型 none: 不禁言 normal: 普通成员禁言 all: 全部禁言(包括群主)
Returns:
- Type
- Void
Example
nim.muteTeamAll({ teamId: '1027484', type: 'normal' }, 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); } } -
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
- 通过参数
- 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 会读取该节点下的文件, 在上传完成前请不要操作该节点下的文件
maxSizeNumber <optional>
限制文件的大小,单位字节
commonUploadBoolean <optional>
使用普通上传(最大100M文件)
blobBlob <optional>
Blob 对象
dataURLString <optional>
包含 MIME type 和 base64 数据的 data URL
uploadprogressuploadprogress <optional>
上传进度, ie9以下不支持上传进度
nosScenesString <optional>
存储场景,不传默认实例化配置,默认为"im"
nosSurvivalTimeNumber <optional>
存储有效时间,不传默认实例化配置 不得小于一天,单位秒
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); } -
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?'成功':'失败')); } -
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); } } -
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); } -
resetCurrSession()
-
重置当前会话
- 重置当前会话后, 所有会话在收到消息之后会更新未读数
Example
nim.resetCurrSession();
-
resetSessionUnread(sessionId)
-
重置某个会话的未读数
- 如果是已经存在的会话记录, 会将此会话未读数置为 0, 那么会收到
onupdatesession回调 - 之后此会话在收到消息之后依然会更新未读数
Parameters:
Name Type Description sessionIdString 会话ID
Returns:
- Type
- Void
Example
nim.resetSessionUnread('sessionId'); - 如果是已经存在的会话记录, 会将此会话未读数置为 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); } -
sendCustomMsg(options [, apns])
-
发送自定义消息
- 自定义消息是
消息类型的一种 - 下面的代码用自定义消息实现了
石头剪刀布游戏
Parameters:
Name Type Argument Default Description optionsObject 配置参数
Properties
Name Type Argument Description sceneString toString | Number 接收方, 对方帐号或者群id
contentString 自定义消息的消息内容, 推荐使用JSON格式构建
resendBoolean <optional>
是否是重发
idClientString <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
forcePushString <optional>
true 是否强制推送, true 表示即使推送列表中的胡勇屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
options.isHistoryableBoolean <optional>
true 是否存储云端历史
options.isRoamingableBoolean <optional>
true 是否支持漫游
options.isSyncableBoolean <optional>
true 是否支持发送者多端同步
options.ccBoolean <optional>
是否支持抄送
options.isPushableBoolean <optional>
true 是否需要推送
options.isOfflinableBoolean <optional>
true 是否要存离线
options.isUnreadableBoolean <optional>
true 是否计入消息未读数
options.needPushNickBoolean <optional>
true 是否需要推送昵称
options.isLocalBoolean <optional>
false 是否是本地消息
options.localFromString <optional>
本地消息的发送方,默认是当前用户
- 只有发送本地消息时,才可自定义发送方
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
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>
是否抄送
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 [, apns])
-
发送文件消息
- 文件消息是
消息类型的一种 - 开发者可以直接发送文件消息
- 支持以下几种场景
- 通过参数
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 Argument Default 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>
文件对象, 开发者可以通过
预览文件拿到文件对象wxFilePathString <optional>
仅供微信小程序使用, 通过 wx.chooseImage 或者 wx.startRecord 拿到的临时文件路径
resendBoolean <optional>
false 是否是重发
beginuploadfunction <optional>
开始上传图片的回调
- 如果开发者传入 fileInput, 在此回调之前不能修改 fileInput
- 在此回调之后可以取消图片上传, 此回调会接收一个参数
upload, 调用upload.abort();来取消文件上传
uploadprogressuploadprogress <optional>
上传进度, IE9以下不支持上传进度
uploaddoneuploaddone <optional>
上传完成回调
- 此回调接收两个参数, error 和 obj
- 如果出错, error 包含详细的错误信息
- 如果上传成功, obj 包含详细的文件信息
beforesendbeforesend <optional>
发送文件消息之前的回调函数
resendBoolean <optional>
是否是重发
idClientString <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
forcePushString <optional>
true 是否强制推送, true 表示即使推送列表中的胡勇屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
options.isHistoryableBoolean <optional>
true 是否存储云端历史
options.isRoamingableBoolean <optional>
true 是否支持漫游
options.isSyncableBoolean <optional>
true 是否支持发送者多端同步
options.ccBoolean <optional>
是否支持抄送
options.isPushableBoolean <optional>
true 是否需要推送
options.isOfflinableBoolean <optional>
true 是否要存离线
options.isUnreadableBoolean <optional>
true 是否计入消息未读数
options.needPushNickBoolean <optional>
true 是否需要推送昵称
options.isLocalBoolean <optional>
false 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
options.localFromString <optional>
本地消息的发送方,默认是当前用户
- 只有发送本地消息时,才可自定义发送方
options.nosScenesString <optional>
存储场景,不传默认实例化配置
options.nosSurvivalTimeNumber <optional>
存储有效时间,不传默认实例化配置 不得小于一天,单位秒
options.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 [, apns])
-
Parameters:
Name Type Argument Default Description optionsObject 配置参数
Properties
Name Type Argument Description sceneString toString | Number 接收方, 对方帐号或者群id
geoObject 地理位置对象
Properties
Name Type Description lngNumber 经度
latNumber 纬度
titleString 地址描述
resendBoolean <optional>
是否是重发
idClientString <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
forcePushString <optional>
true 是否强制推送, true 表示即使推送列表中的用户屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
options.isHistoryableBoolean <optional>
true 是否存储云端历史
options.isRoamingableBoolean <optional>
true 是否支持漫游
options.isSyncableBoolean <optional>
true 是否支持发送者多端同步
options.ccBoolean <optional>
是否支持抄送
options.isPushableBoolean <optional>
true 是否需要推送
options.isOfflinableBoolean <optional>
true 是否要存离线
options.isUnreadableBoolean <optional>
true 是否计入消息未读数
options.needPushNickBoolean <optional>
true 是否需要推送昵称
options.isLocalBoolean <optional>
false 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
options.localFromString <optional>
本地消息的发送方,默认是当前用户
- 只有发送本地消息时,才可自定义发送方
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(options [, apns])
-
给机器人发送消息
- 机器人消息是
消息类型的一种 - 机器人消息类型分为type为robot
Parameters:
Name Type Argument Default Description optionsObject 配置参数
Properties
Name Type Argument Description sceneString <optional>
toString | Number <optional>
接收方, 对方帐号或者群id,如果id为机器人,则点对点与机器人聊天,如果id为普通用户或者群,则相当于聊天界面@机器人
contentObject <optional>
发送给机器人的消息内容
Properties
Name Type Argument Description typeString <optional>
welcome:欢迎消息,text:文本,link:模块跳转
contentString <optional>
机器人消息内容
targetString <optional>
返回消息类型为BOT时出现的link元素类型block中的target
paramsString <optional>
返回消息类型为BOT时出现的link元素类型block中的params
useridString <optional>
区分谁和机器人说话的ID
channelString <optional>
渠道
resendBoolean <optional>
是否是重发
idClientString <optional>
如果是重发, 那么需要带上之前生成的idClient来标记这条消息
apnsObject <optional>
特殊推送选项, 只在群会话中使用
Properties
Name Type Argument Default Description accountsArray.<String> <optional>
需要特殊推送的账号列表, 不填表示推送给当前会话内的所有用户
contentString <optional>
需要特殊推送的文案, 不填的话默认为 pushContent
forcePushString <optional>
true 是否强制推送, true 表示即使推送列表中的胡勇屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
options.isHistoryableBoolean <optional>
true 是否存储云端历史
options.isRoamingableBoolean <optional>
true 是否支持漫游
options.isSyncableBoolean <optional>
true 是否支持发送者多端同步
options.ccBoolean <optional>
是否支持抄送
options.isPushableBoolean <optional>
true 是否需要推送
options.isOfflinableBoolean <optional>
true 是否要存离线
options.isUnreadableBoolean <optional>
true 是否计入消息未读数
options.needPushNickBoolean <optional>
true 是否需要推送昵称
options.isLocalBoolean <optional>
false 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
options.localFromString <optional>
本地消息的发送方,默认是当前用户
- 只有发送本地消息时,才可自定义发送方
Returns:
- Type
- Message
Example
var msg = nim.sendRobotMsg({ scene: 'p2p', to: 'nim-assistant', content: { type: 'text', content: 'hello' }, body: '欢迎', robotAccid: 'nim-assistant', done: function sendMsgDone (err) { console.log(11111111, err) } }) console.log('正在发送p2p自定义消息, id=' + msg.idClient); pushMsg(msg); - 机器人消息是
-
sendTeamMsgReceipt(options)
-
标记群组消息已读
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Description teamMsgReceiptsArray.<Object> 已读消息对象
teamMsgReceipt.teamIdString 群序号
teamMsgReceipt.idServerString 消息编号
Returns:
- Type
- Void
Example
nim.sendTeamMsgReceipt({ teamMsgReceipts: [{ teamId: '1027484', idServer: '68953284018302' }], done: sendTeamMsgReceiptDone }) function sendTeamMsgReceiptDone (error, obj) { console.log('标记群组消息已读' + (!error?'成功':'失败')); } -
sendText(options [, apns])
-
发送文本消息
- 文本消息是消息的一种, 请参考
消息
Parameters:
Name Type Argument Default Description optionsObject 配置参数
Properties
Name Type Argument Default Description sceneString toString 接收方, 对方帐号或者群id
textString 文本消息内容
resendBoolean <optional>
是否是重发
idClientString <optional>
如果是重发, 那么需要带上之前生成的idClient来标记这条消息
customString <optional>
扩展字段
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
pushContentString <optional>
自定义推送文案
pushPayloadString <optional>
自定义的推送属性
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
needPushNickBoolean <optional>
true 是否需要推送昵称
apnsObject <optional>
特殊推送选项, 只在群会话中使用
Properties
Name Type Argument Default Description accountsArray.<String> <optional>
需要特殊推送的账号列表, 不填表示推送给当前会话内的所有用户
contentString <optional>
需要特殊推送的文案, 不填的话默认为 pushContent
forcePushString <optional>
true 是否强制推送, true 表示即使推送列表中的胡勇屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
options.isHistoryableBoolean <optional>
true 是否存储云端历史
options.isRoamingableBoolean <optional>
true 是否支持漫游
options.isSyncableBoolean <optional>
true 是否支持发送者多端同步
options.ccBoolean <optional>
是否支持抄送
options.isInBlackListBoolean <optional>
true 发送此条消息时,发送方
'from'是否在接收方'to'的黑名单列表中options.isPushableBoolean <optional>
true 是否需要推送
options.isOfflinableBoolean <optional>
true 是否要存离线
options.isUnreadableBoolean <optional>
true 是否计入消息未读数
options.isLocalBoolean <optional>
false 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
options.localFromString <optional>
本地消息的发送方,默认是当前用户
- 只有发送本地消息时,才可自定义发送方
options.needMsgReceiptBoolean <optional>
false 是否需要业务已读(包含该字段且为true即表示需要)
options.clientAntiSpamBoolean <optional>
false 是否需要过客户端反垃圾
options.yidunEnableBoolean <optional>
false 是否需要过易盾反垃圾
options.antiSpamContentString <optional>
在开启yidunEnable后, 开发者自定义的反垃圾字段(json格式),格式如下:{"type": 1, "data": "custom content"} 字段说明:type:1.文本,2.图片,3视频,data内容:文本内容or图片地址or视频地址
options.antiSpamBusinessIdString <optional>
用户配置的对某条单条消息另外反垃圾的业务ID
options.antiSpamUsingYidunBoolean <optional>
false 单条消息是否需要易盾反垃圾
options.needUpdateSessionBoolean <optional>
true 是否需要刷新服务器会话列表,默认是(请注意区分两种会话)
options.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 [, apns])
-
发送提醒消息
- 提醒消息是
消息类型的一种 - 提醒消息用于会话内的状态提醒,如进入会话时出现的欢迎消息,或者会话命中敏感词后的提示消息等等.
Parameters:
Name Type Argument Default Description optionsObject 配置参数
Properties
Name Type Argument Description sceneString toString | Number 接收方, 对方帐号或者群id
tipString 提醒内容
resendBoolean <optional>
是否是重发
idClientString <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
forcePushString <optional>
true 是否强制推送, true 表示即使推送列表中的胡勇屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
options.isHistoryableBoolean <optional>
true 是否存储云端历史
options.isRoamingableBoolean <optional>
true 是否支持漫游
options.isSyncableBoolean <optional>
true 是否支持发送者多端同步
options.ccBoolean <optional>
是否支持抄送
options.isPushableBoolean <optional>
true 是否需要推送
options.isOfflinableBoolean <optional>
true 是否要存离线
options.isUnreadableBoolean <optional>
true 是否计入消息未读数
options.needPushNickBoolean <optional>
true 是否需要推送昵称
options.isLocalBoolean <optional>
false 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
options.localFromString <optional>
本地消息的发送方,默认是当前用户
- 只有发送本地消息时,才可自定义发送方
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); } - 只支持通过
-
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); } -
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对应的本地会话 - 如果不
支持数据库, 算成功 - 如果对应的会话不存在, 算成功, 返回 null
- 这些字段只会被更新到本地数据库, 不会被更新到服务器上
- 目前只允许更新
localCustom
Parameters:
Name Type Description optionsObject 配置参数
Properties
Name Type Argument Description idString id
localCustomString <optional>
自定义字段
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
statusString <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?'成功':'失败')); } - 更新
-
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 扩展字段
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"}', done: updateMyInfoDone }); function updateMyInfoDone(error, user) { console.log('更新登录用户的名片' + (!error?'成功':'失败'), error, user); if (!error) { onUpdateMyInfo(user); } } -
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); } -
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); } }); -
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>
群公告
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); } -
updateTeam(options)
-
更新群
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>
Team.updateCustomMode|群信息自定义字段修改权限}
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', vaildTime: 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); }