new NIM()
请使用 NIM.getInstance 来初始化 SDK.
此接口为单例模式, 对于同一个账号, 永远返回同一份实例, 即只有第一次调用会初始化一个实例, 后续调用此接口会直接返回初始化过的实例.
Members
-
staticNIM.ioObject
-
SDK 使用 socket.io-client 0.9 来建立 Socket 连接, 通过
NIM.io来获取此库的引用 -
staticNIM.naturalSortfunction
-
SDK 使用 natural sort 来对数组进行排序, 通过
NIM.naturalSort来获取此库的引用 -
staticNIM.platformObject
-
SDK 使用 platform.js 来检测浏览器平台, 通过
NIM.platform来获取此库的引用 -
staticNIM.xhrfunction
-
SDK 使用 xhr 来发送 Ajax 请求, 通过
NIM.xhr来获取此库的引用
Methods
-
staticNIM.getInstance(options)
-
- 此接口为单例模式, 对于同一个账号, 永远返回同一份实例, 即只有第一次调用会初始化一个实例
- 后续调用此接口会直接返回初始化过的实例, 同时也会调用接口
setOptions更新传入的配置 - 后续调用此接口时, 如果连接已断开, 会自动建立连接
- 当发生掉线时,SDK会自动进行重连
Params:
Name Type Description optionsObject 配置参数
Name Type Default Description debugBoolean | Object false optional 是否开启调试, 如果开启调试, 将会在控制台输出一些log。默认
false不输出日志, 可以传true来开启日志。secureBoolean | Object true optional secure 模式下会通过 https 协议跟服务器建立连接, 非 secure 模式下会通过 http 协议跟服务器建立连接, 默认 true
appKeyString 在云信管理后台查看应用的 appKey
accountString 帐号, 应用内唯一
tokenString 帐号的 token, 用于建立连接
onconnectfunction optional 连接建立后的回调, 会传入一个对象, 包含登录的信息, 有以下字段
lastLoginDeviceId: 上次登录的设备的设备号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 true optional 是否同步黑名单和静音列表, 默认
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 用户名片更新后的回调, 会传入
用户名片syncTeamsBoolean true optional 是否同步群列表, 默认
true. 如果传false就收不到群列表, 即不会收到onteams回调, 开发者后续可以调用获取群列表来获取群列表.syncExtraTeamInfoBoolean optional 是否同步额外的群信息, 默认
true会同步额外的群信息, 目前包括- 当前登录用户是否开启某个群的消息提醒 (SDK 只是存储了此信息, 具体用此信息来做什么事情完全由开发者控制)
- 调用接口
NIM#updateInfoInTeam来关闭/开启某个群的消息提醒 - 调用接口
NIM#notifyForNewTeamMsg来查询是否需要群消息通知
onteamsfunction optional 同步群列表的回调, 会传入
群数组teamsteams的属性invalid包含退出的群
onsynccreateteamfunction optional syncTeamMembersBoolean true optional 是否同步群成员, 默认
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 false optional 是否同步会话的未读数, 默认不同步
- 如果选择同步
- 那么在一个端读过的会话在其它端也会被标记为已读
- 在调用
NIM#setCurrSession的时候 SDK 会自动同步一次未读数, 此后如果收到当前会话的消息, 需要手动调用NIM#resetSessionUnread来同步未读数
onsessionsfunction optional 同步最近会话列表回调, 会传入
会话列表, 按时间正序排列, 即最近聊过天的放在列表的最后面。onupdatesessionfunction optional 更新会话的回调, 会传入
会话, 以下情况会收到此回调- 收到消息
- 发送消息
- 设置当前会话
- 重置会话未读数
shouldIgnoreNotificationfunction optional 是否要忽略某条通知类消息, 该方法会接收一个消息对象, 如果该方法返回 true, 那么 SDK 将忽略此条通知类消息
syncRoamingMsgsBoolean true optional 是否同步漫游消息, 默认
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 true optional 是否自动标记消息为已收到
- 默认情况下SDK在收到服务器推送过来的消息后, 会在将消息推给开发者时将消息标记为已读状态, 下次登录后就不会收到标记为已读的消息。
- SDK通过
onofflinemsgs、onofflinesysmsgs、onofflinecustomsysmsgs等回调将离线消息推送给开发者 - SDK通过
onmsg、onsysmsg、oncustomsysmsg等回调将在线消息推送给开发者
- SDK通过
- 如果开发者想控制标记消息为已收到的时机, 那么可以传
false, 这样SDK就不会自动标记消息已读, 此时需要开发者在适当的时机调用相关的方法来标记消息为已读, 否则下次登录后还会收到未标记为已读的消息。
dbBoolean true optional 是否使用数据库
- 在支持数据库的浏览器上 SDK 会将数据缓存到数据库中, 后续同步都是增量更新, 加快初始化速度
- 如果开发者不想使用数据库, 那么可以设置
db为false来禁用数据库
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,
// 群组
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 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){Void}
-
接受入群邀请
Params:
Name Type Description optionsObject 配置参数
Name Type Description idServerString 对应的系统通知的
idServerteamIdString 群id
fromString 邀请方的帐号
donedone 结果回调函数, 成功时会收到
群资料Returns:
Type Description Void Example:
// 假设 sysMsg 是通过回调
onsysmsg收到的系统通知
nim.acceptTeamInvite({
idServer: sysMsg.idServer,
teamId: '123',
from: 'zyy1',
done: acceptTeamInviteDone
});
function acceptTeamInviteDone(error, obj) {
// console.log('接受入群邀请' + (!error?'成功':'失败'), error, obj);
} - See:
-
addFriend(options){Void}
-
直接加为好友
直接加某个用户为好友后, 对方不需要确认, 直接成为当前登录用户的好友。- 对方会收到一条类型为
'addFriend'的系统通知, 此类系统通知的from字段的值为申请方的帐号,to字段的值为接收方的账号。
Params:
Name Type Description optionsObject 配置参数
Name Type Description accountString 要直接加为好友的账号
psString optional 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.addFriend({
account: 'account',
ps: 'ps',
done: addFriendDone
});
function addFriendDone(error, obj) {
// console.log('直接加为好友' + (!error?'成功':'失败'), error, obj);
if (!error) {
onAddFriend(obj.friend);
}
} - See:
-
addTeamManagers(options){Void}
-
添加群管理员
添加群管理员后, 所有群成员会收到一条类型为的'addTeamManagers'群通知消息。此类群通知消息的from字段的值为添加群管理员的人的帐号,to字段的值为对应的群ID,attach有一个字段accounts的值为被加为管理员的帐号列表,attach有一个字段members的值为被加为管理员的群成员列表。
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString 群id
accountsArray.<String> 要添加的管理员帐号列表
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.addTeamManagers({
teamId: '123',
accounts: ['a2', 'a3'],
done: addTeamManagersDone
});
function addTeamManagersDone(error, obj) {
// console.log('添加群管理员' + (!error?'成功':'失败'), error, obj);
} - See:
-
addTeamMembers(options){Void}
-
拉人入群
- 普通群,
拉人入群后, 所有群成员会收到一条类型为的`'addTeamMembers'群通知消息。此类群通知消息的from字段的值为拉人的人的帐号,to字段的值为对应的群ID,attach有一个字段team的值为对应的群对象,attach有一个字段accounts的值为被拉的人的帐号列表,attach有一个字段members的值为被拉的群成员列表。- 被邀请的群成员在有人说话后才能看到该
群, 而且会先收到一条类型为的'addTeamMembers'群通知消息, 然后会收到其它群消息。
- 被邀请的群成员在有人说话后才能看到该
- 高级群的群主和管理员在邀请成员加入群(通过操作
创建群或拉人入群)之后, 被邀请的人会收到一条类型为'teamInvite'的系统通知, 此类系统通知的from字段的值为邀请方的帐号,to字段的值为对应的群ID, 此类系统通知的attach有一个字段team的值为被邀请进入的群, 被邀请的人可以选择接受邀请或者拒绝邀请。
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString 群id
accountsArray.<String> 要拉进群的成员的帐号列表
psString optional 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.addTeamMembers({
teamId: '123',
accounts: ['a3', 'a4'],
ps: '加入我们的群吧',
done: addTeamMembersDone
});
function addTeamMembersDone(error, obj) {
// console.log('入群邀请发送' + (!error?'成功':'失败'), error, obj);
} - 普通群,
- See:
-
addToBlacklist(options){Void}
-
加入黑名单
- 如果一个用户被加入了黑名单, 那么就不再会收到此用户发送的消息
- SDK内部调用
nim.markInBlacklist来完成实际工作
Params:
Name Type Description optionsObject 配置参数
Name Type Description accountString 要加入黑名单的账号
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.addToBlacklist({
account: 'account',
done: addToBlacklistDone
});
function addToBlacklistDone(error, obj) {
// console.log('加入黑名单' + (!error?'成功':'失败'), error, obj);
if (!error) {
addToBlacklist(obj);
}
} - See:
-
addToMutelist(options){Void}
-
加入静音列表
- SDK只负责维护静音列表, 具体要根据静音列表进行的操作由开发者决定
- SDK内部调用
nim.markInMutelist来完成实际工作
Params:
Name Type Description optionsObject 配置参数
Name Type Description accountString 要加入静音列表的账号
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.addToMutelist({
account: 'account',
done: addToMutelistDone
});
function addToMutelistDone(error, obj) {
// console.log('加入静音列表' + (!error?'成功':'失败'), error, obj);
if (!error) {
addToMutelist(obj);
}
} - See:
-
applyFriend(options){Void}
-
申请加为好友
Params:
Name Type Description optionsObject 配置参数
Name Type Description accountString 要申请加为好友的账号
psString optional 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.applyFriend({
account: 'account',
ps: 'ps',
done: applyFriendDone
});
function applyFriendDone(error, obj) {
// console.log('申请加为好友' + (!error?'成功':'失败'), error, obj);
} - See:
-
applyTeam(options){Void}
-
申请入群
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString 群id
psString optional 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数, 成功时会收到
群资料Returns:
Type Description Void Example:
nim.applyTeam({
teamId: '123',
ps: '请加',
done: applyTeamDone
});
function applyTeamDone(error, obj) {
// console.log('申请入群' + (!error?'成功':'失败'), error, obj);
} - See:
-
audioToMp3(options){String}
-
将音频 url 转为 mp3
- 此方法会返回一个新的 url
Params:
Name Type Description optionsObject 配置参数
Name Type Description urlString url
Returns:
Type Description String 转为 mp3 后的 url Example:
var url = 'http://b12026.nos.netease.com/MTAxMTAxMA==/bmltYV8xMTQwMzFfMTQ1MTg4ODk5MjMxMV9mNmI1Y2QyZC03N2UzLTQxNmUtYWY5NC1iODlhZGY4ZTYzYWQ=';
var mp3Url = nim.audioToMp3({
url: url
});
// console.log(mp3Url); -
audioToText(options){Void}
-
音频转文字
- 仅支持通过
previewFile或者sendFile拿到的音频 url, 或者收到的音频消息的 url
Params:
Name Type Description optionsObject 配置参数
Name Type Description urlString 音频 url
donefunction 结果回调函数, 成功时会额外附上文本 text
Returns:
Type Description 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){Void}
-
Params:
Name Type Description optionsObject 配置参数
Name Type Description urlString 原图 url
radiusNumber 高斯模糊半径, 不包含中心点的像素, 取值范围 [1,50]
sigmaNumber 高斯模糊标准差, 不能小于 0
options.donedone 结果回调函数, 成功时附上高斯模糊后的图片 url
Returns:
Type Description 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);
} -
connect(){Void}
-
登录 SDK
Returns:
Type Description Void Example:
nim.connect();
- See:
-
createTeam(options){Void}
-
创建群
普通群不可以设置群加入方式高级群的群加入方式默认为'needVerify'高级群的群被邀请模式默认为'needVerify'高级群的群邀请模式默认为'manager'高级群的群信息修改权限默认为'manager'高级群的群信息自定义字段修改权限默认为'manager'普通群被邀请的群成员在有人说话之后才会看到该群, 而且会先收到一条类型为'addTeamMembers'的群通知消息, 然后会收到其它群消息。高级群被邀请的群成员会收到一条类型为'teamInvite'的系统通知。- 接受邀请后, 所有
群成员会收到一条类型为'acceptTeamInvite'的群通知消息。 - 拒绝邀请后,
群主会收到一条类型为'rejectTeamInvite'的系统通知。
- 接受邀请后, 所有
Params:
Name Type Description optionsObject 配置参数
Name Type 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 Description 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);
}
} - See:
-
cropImage(options){Void}
-
裁剪图片
Params:
Name Type Description optionsObject 配置参数
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 Description 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){Array.<Friend>}
-
去除好友
- 此方法不会改变参数的值,而是会返回新的数组,包含去除后的好友列表
- 去除时按照
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来去除好友
Params:
Name Type Description oldsArray.<Friend> 原始好友数组
invalidsFriend | Array.<Friend> 待去除的好友或好友数组
Returns:
Type Description Array.<Friend> 去除后的好友数组 -
cutFriendsByAccounts(olds, invalids){Array.<Friend>}
-
去除
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来去除好友
Params:
Name Type Description oldsArray.<Friend> 原始好友数组
invalidsFriend | Array.<Friend> 待去除的好友或好友数组
Returns:
Type Description Array.<Friend> 去除后的好友数组 -
cutLoginPorts(olds, invalids){Array.<LoginPort>}
-
去除登录端
- 此方法不会改变参数的值,而是会返回新的数组,包含去除后的登录端列表
- 去除时按照
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来去除登录端
Params:
Name Type Description oldsArray.<LoginPort> 原始登录端数组
invalidsLoginPort | Array.<LoginPort> 待去除的登录端或登录端数组
Returns:
Type Description Array.<LoginPort> 去除后的登录端数组 -
cutRelations(olds, invalids){Array.<Relation>}
-
去除关系
- 此方法不会改变参数的值,而是会返回新的数组,包含去除后的关系列表
- 去除时按照
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来去除关系
Params:
Name Type Description oldsArray.<Relation> 原始关系数组
invalidsRelation | Array.<Relation> 待去除的关系或关系数组
Returns:
Type Description Array.<Relation> 去除后的关系数组 -
cutTeamMembers(olds, invalids){Array.<TeamMember>}
-
去除群成员
- 此方法不会改变参数的值,而是会返回新的数组,包含去除后的群成员列表
- 去除时按照
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来去除群成员
Params:
Name Type Description oldsArray.<TeamMember> 原始群成员数组
invalidsTeamMember | Array.<TeamMember> 待去除的群成员或群成员数组
Returns:
Type Description Array.<TeamMember> 去除后的群成员数组 -
cutTeamMembersByAccounts(olds, invalids){Array.<TeamMember>}
-
去除
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来去除群成员
Params:
Name Type Description oldsArray.<TeamMember> 原始群成员数组
invalidsTeamMember | Array.<TeamMember> 待去除的群成员或群成员数组
Returns:
Type Description Array.<TeamMember> 去除后的群成员数组 -
cutTeams(olds, invalids){Array.<Team>}
-
去除群
- 此方法不会改变参数的值,而是会返回新的数组,包含去除后的群列表
- 去除时按照
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来去除群
Params:
Name Type Description oldsArray.<Team> 原始群数组
invalidsTeam | Array.<Team> 待去除的群或群数组
Returns:
Type Description Array.<Team> 去除后的群数组 -
deleteAllLocalMsgs(options){Void}
-
删除所有本地消息
- 如果不
支持数据库, 算成功 - 此方法同时会清空所有的会话, 请开发者自己清空内存里面的会话列表
Params:
Name Type Description optionsObject 配置参数
Returns:
Type Description Void Example:
nim.deleteAllLocalMsgs({
done: deleteAllLocalMsgsDone
});
function deleteAllLocalMsgsDone(error, obj) {
// console.log('删除所有本地消息' + (!error?'成功':'失败'), error, obj);
} - 如果不
-
deleteAllLocalSysMsgs(options){Void}
-
删除所有本地系统通知
- 如果不
支持数据库, 算成功
Params:
Name Type Description optionsObject 配置参数
Name Type Description donefunction 结果回调函数
Returns:
Type Description Void Example:
nim.deleteAllLocalSysMsgs({
done: deleteAllLocalSysMsgsDone
});
function deleteAllLocalSysMsgsDone(error, obj) {
// console.log(error);
// console.log(obj);
// console.log('删除所有本地系统通知' + (!error?'成功':'失败'));
} - 如果不
-
deleteFriend(options){Void}
-
Params:
Name Type Description optionsObject 配置参数
Name Type Description accountString 要删除好友的账号
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.deleteFriend({
account: 'account',
done: deleteFriendDone
});
function deleteFriendDone(error, obj) {
// console.log('删除好友' + (!error?'成功':'失败'), error, obj);
if (!error) {
onDeleteFriend(obj.account);
}
} - See:
-
deleteLocalMsg(options){Void}
-
删除本地消息
Params:
Name Type Description optionsObject 配置参数
Name Type Description msgIMMessage 待删除的消息
donefunction 结果回调函数
Returns:
Type Description Void Example:
nim.deleteLocalMsg({
msg: msg,
done: deleteLocalMsgDone
});
function deleteLocalMsgDone(error, obj) {
// console.log('删除本地消息' + (!error?'成功':'失败'), error, obj);
} -
deleteLocalMsgsBySession(options){Void}
-
删除某个会话的本地消息
- 如果不
支持数据库, 算成功
Params:
Name Type Description optionsObject 配置参数
Name Type Description sceneString toString 聊天对象, 账号或者群id
donefunction 结果回调函数
Returns:
Type Description Void Example:
nim.deleteLocalMsgsBySession({
scene: 'p2p',
to: 'account',
done: deleteLocalMsgsBySessionDone
});
function deleteLocalMsgsBySession(error, obj) {
// console.log('删除会话本地消息' + (!error?'成功':'失败'), error, obj);
} - 如果不
-
deleteLocalSession(options){Void}
-
Params:
Name Type Description optionsObject 配置参数
Name Type Description idString | Array.<String> 会话 id 或 id 数组
donefunction 结果回调函数
Returns:
Type Description Void Example:
nim.deleteLocalSession({
id: 'p2p-account',
done: deleteLocalSessionDone
});
function deleteLocalSessionDone(error, obj) {
// console.log('删除本地会话' + (!error?'成功':'失败'), error, obj);
} -
deleteLocalSysMsg(options){Void}
-
删除本地系统通知
- 删除
idServer对应的本地系统通知 - 如果不
支持数据库, 算成功 - 如果对应的系统通知不存在, 算成功
Params:
Name Type Description optionsObject 配置参数
Name Type Description idServerString | Array.<String> idServer 或 idServer 数组
donefunction 结果回调函数
Returns:
Type Description Void Example:
nim.deleteLocalSysMsg({
idServer: '1234',
done: deleteLocalSysMsgDone
});
function deleteLocalSysMsgDone(error, obj) {
// console.log(error);
// console.log(obj);
// console.log('删除本地系统通知' + (!error?'成功':'失败'));
} - 删除
-
deleteLocalTeam(options){Void}
-
删除
teamId对应的本地群- 如果不
支持数据库, 算成功 - 如果当前用户还在群里面, 那么会失败
- 如果对应的群不存在, 算成功
- 如果传了多个 teamId, 但是当前用户还在某个群里面, 那么会失败, 但是所有用户不在的群都会被删掉
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString | Array.<String> teamId 或者 teamId 数组
donefunction 结果回调函数
Returns:
Type Description Void Example:
nim.deleteLocalTeam({
teamId: '1234',
done: deleteLocalTeamDone
});
function deleteLocalTeamDone(error, obj) {
// console.log('删除本地群' + (!error?'成功':'失败'));
// console.log(error);
// console.log(obj);
} - 如果不
-
deleteMsg(options){Void}
-
撤回消息
Params:
Name Type Description optionsObject 配置参数
Name Type Description msgIMMessage 待撤回的消息
donefunction 结果回调函数
Returns:
Type Description Void Example:
nim.deleteMsg({
msg: someMsg,
done: deleteMsgDone
})
// console.log('正在撤回消息', someMsg)
function deleteMsgDone (error) {
// console.log('撤回消息' + (!error?'成功':'失败'), error);
} -
deleteSession(options){Void}
-
删除服务器上的会话
- 删了服务器上的会话之后, 在不
支持数据库时, 下次同步就同步不到对应的会话以及会话对应的漫游消息; 此外, 在新设备上也同步不到对应的会话以及会话对应的漫游消息
Params:
Name Type Description optionsObject 配置参数
Name Type Description sceneString toString 对方账号或群ID
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.deleteSession({
scene: 'p2p',
to: 'account',
done: deleteSessionDone
});
function deleteSessionDone(error, obj) {
// console.log('删除会话' + (!error?'成功':'失败'), error, obj);
} - 删了服务器上的会话之后, 在不
- See:
-
deleteSessions(options){Void}
-
批量删除服务器上的会话
- 删了服务器上的会话之后, 在不
支持数据库时, 下次同步就同步不到对应的会话以及会话对应的漫游消息; 此外, 在新设备上也同步不到对应的会话以及会话对应的漫游消息
Params:
Name Type Description optionsObject 配置参数
Name Type Description sessionsArray.<Session> 会话列表
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.deleteSessions({
sessions: {[
scene: 'p2p',
to: 'account'
], [
scene: 'p2p',
to: 'account1'
]},
done: deleteSessionsDone
});
function deleteSessionsDone(error, obj) {
// console.log('批量删除会话' + (!error?'成功':'失败'), error, obj);
} - 删了服务器上的会话之后, 在不
- See:
-
disconnect(){Void}
-
登出 SDK
Returns:
Type Description Void Example:
nim.disconnect();
- See:
-
dismissTeam(options){Void}
-
解散群
解散群后, 所有群成员会收到一条类型为的'dismissTeam'群通知消息。此类群通知消息的from字段为解散群的人的帐号,to字段的值为被对应的群ID。
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString 群id
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.dismissTeam({
teamId: '123',
done: dismissTeamDone
});
function dismissTeamDone(error, obj) {
// console.log('解散群' + (!error?'成功':'失败'), error, obj);
} -
findFriend(friends, account){Friend|null}
-
在好友数组里面根据
account找到对应的好友- 此方法内部调用
NIM.util.findObjInArray来完成实际工作NIM.util.findObjInArray(friends, { keyPath: 'account', value: account }); - 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个好友
Params:
Name Type Description friendsArray.<Friend> 好友数组
accountString 待查找的好友的
accountReturns:
Type Description Friend | null 对应的好友或者 null - 此方法内部调用
-
findMsg(msgs, idClient){Message|null}
-
在消息数组里面根据
idClient找到对应的消息- 此方法内部调用
NIM.util.findObjInArray来完成实际工作NIM.util.findObjInArray(msgs, { keyPath: 'idClient', value: idClient }); - 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个消息
Params:
Name Type Description msgsArray.<Message> 消息数组
idClientString 待查找的消息的
idClientReturns:
Type Description Message | null 对应的消息或者 null - 此方法内部调用
-
findRelation(relations, account){Relation|null}
-
在关系数组里面根据
account找到对应的关系- 此方法内部调用
NIM.util.findObjInArray来完成实际工作NIM.util.findObjInArray(relations, { keyPath: 'account', value: account }); - 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个关系
Params:
Name Type Description relationsArray.<Relation> 关系数组
accountString 待查找的关系的
accountReturns:
Type Description Relation | null 对应的关系或者 null - 此方法内部调用
-
findSession(sessions, sessionId){Session|null}
-
在会话数组里面根据
id找到对应的会话- 此方法内部调用
NIM.util.findObjInArray来完成实际工作NIM.util.findObjInArray(sessions, { keyPath: 'id', value: sessionId }); - 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个会话
Params:
Name Type Description sessionsArray.<Session> 会话数组
sessionIdString 待查找的会话的
idReturns:
Type Description Session | null 对应的会话或者 null - 此方法内部调用
-
findSysMsg(sysMsgs, idServer){SystemMessage|null}
-
在系统通知数组里面根据
idServer找到对应的系统通知- 此方法内部调用
NIM.util.findObjInArray来完成实际工作NIM.util.findObjInArray(sysMsgs, { keyPath: 'idServer', value: idServer }); - 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个系统通知
Params:
Name Type Description sysMsgsArray.<SystemMessage> 系统通知数组
idServerString 待查找的系统通知的
idServerReturns:
Type Description SystemMessage | null 对应的系统通知或者 null - 此方法内部调用
-
findTeam(teams, teamId){Team|null}
-
在群数组里面根据
teamId找到对应的群- 此方法内部调用
NIM.util.findObjInArray来完成实际工作NIM.util.findObjInArray(teams, { keyPath: 'teamId', value: teamId }); - 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个群
Params:
Name Type Description teamsArray.<Team> 群数组
teamIdString 待查找的群的
teamIdReturns:
Type Description Team | null 对应的群或者 null - 此方法内部调用
-
findTeamMember(members, id){TeamMember|null}
-
在群成员数组里面根据
id找到对应的群成员- 此方法内部调用
NIM.util.findObjInArray来完成实际工作NIM.util.findObjInArray(members, { keyPath: 'id', value: id }); - 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个群成员
Params:
Name Type Description membersArray.<TeamMember> 群成员数组
idString 待查找的群成员的
idReturns:
Type Description TeamMember | null 对应的群成员或者 null - 此方法内部调用
-
findUser(users, account){User|null}
-
在名片数组里面根据
account找到对应的名片- 此方法内部调用
NIM.util.findObjInArray来完成实际工作NIM.util.findObjInArray(users, { keyPath: 'account', value: account }); - 如果此方法不满足开发者的业务需求,那么开发者可以根据自己的业务需求调用
NIM.util.findObjInArray来查找某个名片
Params:
Name Type Description usersArray.<User> 名片数组
accountString 待查找的名片的
accountReturns:
Type Description User | null 对应的名片或者 null - 此方法内部调用
-
forwardMsg(options){Void}
-
转发消息
Params:
Name Type Description optionsObject 配置参数
Name Type Description msgIMMessage 待转发的消息
sceneString 新的
场景toString 新的接收方, 对方帐号或者群id
donefunction 结果回调函数
Returns:
Type Description Void Example:
nim.forwardMsg({
msg: someMsg,
scene: 'p2p',
to: 'account',
done: sendMsgDone
})
// console.log('正在转发消息', someMsg) -
getChatroomAddress(options){Void}
-
获取聊天室服务器地址
- 可以在 IM 连接上获取聊天室服务器地址
Params:
Name Type Description optionsObject 配置参数
Name Type Description chatroomIdString optional 聊天室 id
Returns:
Type Description Void Example:
nim.getChatroomAddress({
chatroomId: 'chatroomId',
done: getChatroomAddressDone
});
function getChatroomAddressDone(error, obj) {
// console.log('获取聊天室地址' + (!error?'成功':'失败'), error, obj);
} -
getFriends(options){Void}
-
获取好友列表
- 如果开发者在
初始化SDK的时候设置了syncFriends为false, 那么就收不到onfriends回调, 可以调用此接口来获取好友列表。
Params:
Name Type Description optionsObject 配置参数
Name Type Description donedone 结果回调函数, 成功的时候会收到
好友列表Returns:
Type Description Void Example:
nim.getFriends({
done: getFriendsDone
});
function getFriendsDone(error, friends) {
// console.log('获取好友列表' + (!error?'成功':'失败'), error, friends);
if (!error) {
onFriends(friends);
}
} - 如果开发者在
- See:
-
getHistoryMsgs(options){Void}
-
获取云端历史记录
- 该接口用于获取一段时间内的历史消息, 由参数
beginTime和endTime来控制时间范围。- 当
reverse为false时, 后续查询的endTime对应上次查询的最后一条消息的time字段 - 当
reverse为true时, 后续查询的beginTime对应上次查询的最后一条消息的time字段
- 当
- 如果要搜索历史消息, 请参考
获取包含关键词的历史消息
Params:
Name Type Description optionsObject 配置参数
Name Type Default Description sceneString 请参考
消息场景toString 聊天对象, 账号或者群id
beginTimeNumber optional 时间戳, 开始时间, 精确到ms, 默认为0
endTimeNumber optional 时间戳, 结束时间, 精确到ms, 默认为服务器的当前时间
lastMsgIdString optional 上次查询的最后一条消息的
idServer, 第一次不填limitNumber optional 本次查询的消息数量限制, 最多100条, 默认100条
reverseBoolean false optional 默认
false表示从endTime开始往前查找历史消息;
true表示从beginTime开始往后查找历史消息ascBoolean false optional 默认
false表示返回的消息按时间逆序排序;
true表示按时间正序排序donedone 结果回调函数, 成功时会额外附上
消息列表Returns:
Type Description 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){Void}
-
获取 idClient 对应的本地消息
- 如果不
支持数据库, 算成功, 返回 null
Params:
Name Type Description optionsObject 配置参数
Name Type Description idClientString idClient
donefunction 结果回调函数, 成功时会额外附上
消息Returns:
Type Description 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){Void}
-
获取本地历史记录
- 如果不
支持数据库, 算成功, 返回空数组
Params:
Name Type Description optionsObject 配置参数
Name Type Default Description sessionIdString optional 如果提供该参数, 那么查询该会话的消息
sessionIdsArray.<String> optional 如果提供该参数, 那么查询这几个会话的消息
startNumber 0 optional 开始时间
endNumber Infinity optional 结束时间
descBoolean true optional true 表示从 end 开始查, false 表示从 begin 开始查
limitNumber 100 optional limit 数量限制
typeString optional 消息类型, 如果提供该参数, 那么查询该类型的消息typesArray.<String> optional 如果提供该参数, 那么查询这几种类型的消息
keywordString optional 如果提供参数, 那么查询匹配该关键词的消息
filterFuncfunction optional 可选参数, 过滤函数, 接收消息对象, 返回 true 表示结果保留该消息
donedone 结果回调函数, 成功时会附上
消息列表Returns:
Type Description Void Example:
nim.getLocalMsgs({
sessionId: 'p2p-account'
limit: 100,
done: getLocalMsgsDone
})
function getLocalMsgsDone(error, obj) {
// console.log('获取本地消息' + (!error?'成功':'失败'), error, obj)
} - 如果不
-
getLocalMsgsByIdClients(options){Void}
-
获取 idClients 对应的本地消息
- 如果不
支持数据库, 算成功, 返回空数组
Params:
Name Type Description optionsObject 配置参数
Name Type Description idClientsArray.<String> idClients
donefunction 结果回调函数, 成功时会额外附上
消息列表Returns:
Type Description Void Example:
nim.getLocalMsgsByIdClients({
idClients: [
'd7a1b2c63066e1038e9aa01321652370',
'22e604c7811c23586355f63f24658525'
],
done: getLocalMsgsByIdClientsDone
});
function getLocalMsgsByIdClientsDone(error, obj) {
// console.log('获取本地消息' + (!error?'成功':'失败'), error, obj);
if (!error) {
// console.log(obj.msgs);
}
} - 如果不
-
getLocalSessions(options){Void}
-
获取本地会话列表
- 如果不
支持数据库, 返回空数组 - 会话列表按时间逆序排列, 即最近聊过天的放在列表的最前面
Params:
Name Type Description optionsObject 配置参数
Name Type Default Description lastSessionIdNumber optional 上次查询的最后一条会话的
id, 第一次不填limitNumber optional 本次查询的会话数量限制, 最多 100 条, 默认 100 条
reverseBoolean false optional 默认
false表示从最近的会话开始往前查找本地会话;
true表示从第一条会话开始往后查找本地会话donedone 结果回调函数
Returns:
Type Description Void Example:
nim.getLocalSessions({
lastSessionId: lastSessionId,
limit: 100,
done: getLocalSessionsDone
});
function getLocalSessionsDone(error, obj) {
// console.log('获取本地会话列表' + (!error?'成功':'失败'), error, obj);
if (!error) {
onSessions(obj.sessions);
}
} - 如果不
-
getLocalSysMsgs(options){Void}
-
获取本地系统通知
- 如果不
支持数据库, 算成功, 返回空数组
Params:
Name Type Description optionsObject 配置参数
Name Type Default Description categoryString optional typeString optional readBoolean optional 可选
- 如果不传, 默认获取所有已读和未读的系统通知
- 如果传
true, 那么只获取已读的系统通知 - 如果传
false, 那么只获取未读的系统通知
lastIdServerString optional 上次查询的最后一条系统通知的
idServer, 第一次不填limitNumber optional 本次查询的消息数量限制, 最多 100 条, 默认 100 条
reverseBoolean false optional 默认
false表示从最近的系统通知开始往前查找本地系统通知;
true表示从第一条系统通知开始往后查找本地系统通知donedone 结果回调函数, 成功时会额外附上
系统通知列表Returns:
Type Description 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){Void}
-
获取
teamIds对应的本地群- 如果不
支持数据库, 算成功
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdsArray.<String> teamId 数组
donefunction 结果回调函数, 成功时会额外附上群列表
Returns:
Type Description Void Example:
nim.getLocalTeams({
teamIds: teamIds
done: getLocalTeamsDone
});
function getLocalTeamsDone(error, obj) {
// console.log('获取本地群' + (!error?'成功':'失败'));
// console.log(error);
// console.log(obj);
} - 如果不
-
getMutedTeamMembers(options){Void}
-
获取群禁言成员列表
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdArray.<String> 群 ID
Returns:
Type Description Void Example:
nim.getMutedTeamMembers({
teamId: 'teamId',
done: getMutedTeamMembersDone
})
function getMutedTeamMembersDone (error, obj) {
// console.log('获取群禁言成员列表' + (!error?'成功':'失败'));
} -
getPushNotificationMultiportConfig(){PushNotificationMultiportConfig}
-
获取当前多端推送配置选项
Returns:
Type Description PushNotificationMultiportConfig 多端推送配置选项 -
getRelations(options){Void}
-
获取黑名单和静音列表
- 如果开发者在
初始化SDK的时候设置了syncRelations为false, 那么就收不到onblacklist和onmutelist回调, 可以调用此接口来获取黑名单和静音列表。
Params:
Name Type Description optionsObject 配置参数
Name Type Description donedone 结果回调函数, 成功时会返回黑名单和静音列表
Returns:
Type Description Void Example:
nim.getRelations({
done: getRelationsDone
});
function getRelationsDone(error, obj) {
// console.log('获取静音列表' + (!error?'成功':'失败'), error, obj);
if (!error) {
onBlacklist(obj.blacklist);
onMutelist(obj.mutelist);
}
} - 如果开发者在
- See:
-
getTeam(options){Void}
-
获取群
- 开发者可以调用此接口获取群资料
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString 群id
donedone 结果回调函数, 成功时会收到
群资料Returns:
Type Description Void Example:
nim.getTeam({
teamId: '123',
done: getTeamDone
});
function getTeamDone(error, obj) {
// console.log(error);
// console.log(obj);
// console.log('获取群' + (!error?'成功':'失败'));
} - See:
-
getTeamMembers(options){Void}
-
获取群成员
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString 群id
donedone 结果回调函数, 成功时会额外附上
群成员列表Returns:
Type Description 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);
}
} - See:
-
getTeams(options){Void}
-
Params:
Name Type Description optionsObject 配置参数
Name Type Description donedone 结果回调函数, 成功时会收到
群列表Returns:
Type Description Void Example:
nim.getTeams({
done: getTeamsDone
});
function getTeamsDone(error, teams) {
// console.log(error);
// console.log(teams);
// console.log('获取群列表' + (!error?'成功':'失败'));
} - See:
-
getUser(options){Void}
-
获取用户名片
Params:
Name Type Description optionsObject 配置参数
Name Type Description accountString 账号
donefunction 结果回调函数, 成功时会返回用户名片
Returns:
Type Description Void Example:
nim.getUser({
account: 'account',
done: getUserDone
});
function getUserDone(error, user) {
// console.log('获取用户名片' + (!error?'成功':'失败'), error, obj);
if (!error && user) {
onUsers(user);
}
} - See:
-
getUsers(options){Void}
-
获取用户名片数组
- 每次最多 150 个
Params:
Name Type Description optionsObject 配置参数
Name Type Description accountsArray.<String> 账号数组
donefunction 结果回调函数, 成功时会返回用户名片列表
Returns:
Type Description Void Example:
nim.getUsers({
accounts: ['account1', 'account2'],
done: getUsersDone
});
function getUsersDone(error, users) {
// console.log('获取用户名片数组' + (!error?'成功':'失败'), error, users);
if (!error && users.length) {
onUsers(users);
}
} - See:
-
insertLocalSession(options){Void}
-
插入一条本地会话记录
- 如果会话已存在, 那么会返回错误
- 如果不
支持数据库, 那么算成功 - 如果有对应会话的本地历史消息, 那么会更新会话的
lastMsg为最后一条消息 - 插入成功后, 会触发
onupdatesession回调
Params:
Name Type Description optionsObject 配置参数
Name Type Description sceneString option.toString 会话对象, 账号或群IDoptions.updateTimeNumber optional 可选, 会话更新的时间, 如果不填, SDK 会设置一个比当前所有会话更新时间大的一个时间
options.donefunction 结果回调函数, 如果成功会额外附上生成的会话对象
Returns:
Type Description 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){Void}
-
interlace 图片
Params:
Name Type Description optionsObject 配置参数
Name Type Description urlString 原图 url
donedone 结果回调函数, 成功时附上 interlace 后的图片 url
Returns:
Type Description 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){Boolean}
-
查询消息是否被对方读过了
- 目前只支持
'p2p'会话
Params:
Name Type Description msgIMMessage 消息
Returns:
Type Description Boolean 是否被对方读过 Example:
var isRemoteRead = nim.isMsgRemoteRead(msg);
- 目前只支持
-
kick(options){Void}
-
踢当前用户登录的其它端
Params:
Name Type Description optionsObject 配置参数
Name Type Description deviceIdsArray.<String> 要踢掉的端的设备号数组
donedone 结果回调函数, 成功时会收到被踢掉的设备号数组
Returns:
Type Description Void Example:
nim.kick({
deviceIds: ['device1'],
done: onKick
});
function onKick(error, obj) {
// console.log('踢其它端' + (!error?'成功':'失败'));
// console.log(error);
// console.log(obj);
} -
leaveTeam(options){Void}
-
主动退群
主动退群后, 所有群成员会收到一条类型为的'leaveTeam'群通知消息。此类群通知消息的from字段的值为退群的人的帐号,to字段的值为对应的群ID,attach有一个字段team的值为对应的群对象。
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString 群id
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.leaveTeam({
teamId: '123',
done: leaveTeamDone
});
function leaveTeamDone(error, obj) {
// console.log('主动退群' + (!error?'成功':'失败'), error, obj);
} -
markInBlacklist(options){Void}
-
加入黑名单/从黑名单移除
Params:
Name Type Description optionsObject 配置参数
Name Type Description accountString 要加入黑名单/从黑名单移除的账号
isAddBoolean true表示加入黑名单,false表示从黑名单移除donedone 结果回调函数
Returns:
Type Description 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);
}
} - See:
-
markInMutelist(options){Void}
-
加入静音列表/从静音列表移除
Params:
Name Type Description optionsObject 配置参数
Name Type Description accountString 要加入静音列表/从静音列表移除的账号
isAddBoolean true表示加入静音列表,false表示从静音列表移除donedone 结果回调函数
Returns:
Type Description 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);
}
} - See:
-
markMsgRead(msgs){Void}
-
标记消息为已收到
- 如果没有消息、或者支持数据库、或者设置了自动标记, 那么直接返回
Params:
Name Type Description msgsArray.<IMMessage> 待标记的消息或者消息数组
Returns:
Type Description Void Example:
nim.markMsgRead(someMsg);
// or
nim.markMsgRead([someMsg]); -
markSysMsgRead(options){Void}
-
标记系统通知为已收到
- SDK 在收到系统通知后会更新系统通知未读数, 开发者需要调用此接口来通知 SDK 将某条系统通知标记为已读状态, 标记后会触发
onupdatesysmsgunread回调
Params:
Name Type Description optionsObject 配置参数
Name Type Description sysMsgsSystemMessage | Array.<SystemMessage> 通过
onofflinesysmsgs或者onsysmsg接收到的系统通知或者系统通知数组donedone 结果回调函数
Returns:
Type Description 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){Array.<Friend>}
-
合并好友
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的好友列表
- 合并时按照
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来合并好友
Params:
Name Type Description oldsArray.<Friend> 原始好友数组
newsFriend | Array.<Friend> 待合并的好友或好友数组
Returns:
Type Description Array.<Friend> 合并后的好友数组 -
mergeLoginPorts(olds, news){Array.<LoginPort>}
-
合并登录端
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的登录端列表
- 合并时按照
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来合并登录端
Params:
Name Type Description oldsArray.<LoginPort> 原始登录端数组
newsLoginPort | Array.<LoginPort> 待合并的登录端或登录端数组
Returns:
Type Description Array.<LoginPort> 合并后的登录端数组 -
mergeMsgs(olds, news){Array.<Message>}
-
合并消息
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的消息列表
- 合并时按照
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来合并消息
Params:
Name Type Description oldsArray.<Message> 原始消息数组
newsMessage | Array.<Message> 待合并的消息或消息数组
Returns:
Type Description Array.<Message> 合并后的消息数组 -
mergeRelations(olds, news){Array.<Relation>}
-
合并关系
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的关系列表
- 合并时按照
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来合并关系
Params:
Name Type Description oldsArray.<Relation> 原始关系数组
newsRelation | Array.<Relation> 待合并的关系或关系数组
Returns:
Type Description Array.<Relation> 合并后的关系数组 -
mergeSessions(olds, news){Array.<Session>}
-
合并会话
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的会话列表
- 合并时按照
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来合并会话
Params:
Name Type Description oldsArray.<Session> 原始会话数组
newsSession | Array.<Session> 待合并的会话或会话数组
Returns:
Type Description Array.<Session> 合并后的会话数组 -
mergeSysMsgs(olds, news){Array.<SystemMessage>}
-
合并系统通知
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的系统通知列表
- 合并时按照
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来合并系统通知
Params:
Name Type Description oldsArray.<SystemMessage> 原始系统通知数组
newsSystemMessage | Array.<SystemMessage> 待合并的系统通知或系统通知数组
Returns:
Type Description Array.<SystemMessage> 合并后的系统通知数组 -
mergeTeamMembers(olds, news){Array.<TeamMember>}
-
合并群成员
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的群成员列表
- 合并时按照
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来合并群成员
Params:
Name Type Description oldsArray.<TeamMember> 原始群成员数组
newsTeamMember | Array.<TeamMember> 待合并的群成员或群成员数组
Returns:
Type Description Array.<TeamMember> 合并后的群成员数组 -
mergeTeams(olds, news){Array.<Team>}
-
合并群
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的群列表
- 合并时按照
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来合并群
Params:
Name Type Description oldsArray.<Team> 原始群数组
newsTeam | Array.<Team> 待合并的群或群数组
Returns:
Type Description Array.<Team> 合并后的群数组 -
mergeUsers(olds, news){Array.<User>}
-
合并名片
- 此方法不会改变参数的值,而是会返回新的数组,包含合并后的名片列表
- 合并时按照
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来合并名片
Params:
Name Type Description oldsArray.<User> 原始名片数组
newsUser | Array.<User> 待合并的名片或名片数组
Returns:
Type Description Array.<User> 合并后的名片数组 -
notifyForNewTeamMsg(options){Void}
-
是否需要群消息通知
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdsArray.<String> 群列表
donedone 结果回调函数, 成功时会附上一个 map, key 是群 ID, value 是一个布尔值, 表示该群是否需要群消息通知
Returns:
Type Description Void Example:
nim.notifyForNewTeamMsg({
teamIds: ['123'],
done: notifyForNewTeamMsgDone
})
function notifyForNewTeamMsgDone(error, map) {
// console.log(error);
// console.log(map);
// console.log('查询是否需要群消息通知' + (!error?'成功':'失败'));
} -
packFileDownloadName(options){String}
-
修改图片下载的名字
Params:
Name Type Description optionsObject 配置参数
Name Type Description urlString 原图 url
nameString 下载的名字
Returns:
Type Description String 修改图片下载名字后的图片 url Example:
var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ0MzE0NTgyNDI0M184YjFkYTMwMS02NjcxLTRiYjktYTUwZC04ZTVlZjZlNzZjMzA=';
var nameUrl = nim.packFileDownloadName({
url: url,
name: '测试.jpg'
});
// console.log(nameUrl); -
passFriendApply(options){Void}
-
通过好友申请
Params:
Name Type Description optionsObject 配置参数
Name Type Description idServerString 对应的系统通知的
idServeraccountString 要通过好友申请的账号
psString optional 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
Type Description 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);
}
} - See:
-
passTeamApply(options){Void}
-
通过入群申请
Params:
Name Type Description optionsObject 配置参数
Name Type Description idServerString 对应的系统通知的
idServerteamIdString 群ID
fromString 申请方的帐号
donedone 结果回调函数
Returns:
Type Description Void Example:
// 假设 sysMsg 是通过回调
onsysmsg收到的系统通知
nim.passTeamApply({
idServer: sysMsg.idServer,
teamId: '123',
from: 'a2',
done: passTeamApplyDone
});
function passTeamApplyDone(error, obj) {
// console.log('通过入群申请' + (!error?'成功':'失败'), error, obj);
} - See:
-
previewFile(options){Void}
-
预览文件
- 开发者可以预览文件, 支持以下几种场景
- 通过参数
fileInput传入文件选择 dom 节点或者节点 ID, SDK 会读取该节点下的文件, 在上传完成前请不要操作该节点下的文件 - 通过参数
blob传入 Blob 对象 - 通过参数
dataURL传入包含 MIME type 和 base64 数据的 data URL, 此用法需要浏览器支持 Blob
- 通过参数
- SDK会将文件上传到文件服务器, 然后将拿到的文件对象在
done回调中传给开发者, 文件对象有以下几种 - 开发者在拿到文件对象之后, 可以调用
发送文件消息来发送文件消息。 - 文件大小限制为最大 100M
- 高级浏览器会在上传前就检测文件大小
- IE8/IE9 会在上传完成后检测文件大小
Params:
Name Type Description optionsObject 配置参数
Name Type Description typeString optional 文件过滤器
- image会过滤掉非图片的文件, audio过滤掉非音频, video会过滤掉非视频的文件
- IE8/IE9 不支持文件过滤
fileInputString | Node optional 文件选择 dom 节点或者节点 ID, SDK 会读取该节点下的文件, 在上传完成前请不要操作该节点下的文件
blobBlob optional Blob 对象
dataURLString optional 包含 MIME type 和 base64 数据的 data URL
uploadprogressuploadprogress optional 上传进度, ie9以下不支持上传进度
donedone 结果回调函数, 成功时会收到文件对象, 请参考
Returns:
Type Description 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){Void}
-
处理图片
此方法接收一组图片操作, 按操作顺序依次处理图片, 可选的操作包括:
每个操作所需的参数请参考上面的各个方法, 除了上面方法列出来的参数之外, 每个操作需要提供操作类型, 分别是
'quality''interlace''rotate''blur''crop''thumbnail'
请参考下面的示例代码
Params:
Name Type Description optionsObject 配置参数
Name Type Description urlString 原图 url
opsArray 操作序列
donedone 结果回调函数, 成功时附上处理后的图片 url
Returns:
Type Description 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){Void}
-
Params:
Name Type Description optionsObject 配置参数
Name Type Description urlString 原图 url
qualityInt 图片质量, 必须为整数, 取值范围为 0-100, 此方法内部使用 Math.round 来格式化 quality
donedone 结果回调函数, 成功时附上修改质量后的图片 url
Returns:
Type Description 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){Void}
-
拒绝好友申请
Params:
Name Type Description optionsObject 配置参数
Name Type Description idServerString 对应的系统通知的
idServeraccountString 要拒绝好友申请的账号
psString optional 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
Type Description 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?'成功':'失败'));
} - See:
-
rejectTeamApply(options){Void}
-
拒绝入群申请
Params:
Name Type Description optionsObject 配置参数
Name Type Description idServerString 对应的系统通知的
idServerteamIdString 群ID
fromString 申请方的帐号
psString optional 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
Type Description 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);
} - See:
-
rejectTeamInvite(options){Void}
-
拒绝入群邀请
Params:
Name Type Description optionsObject 配置参数
Name Type Description idServerString 对应的系统通知的
idServerteamIdString 群id
fromString 邀请方的帐号
psString optional 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
Type Description 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);
} - See:
-
removeFromBlacklist(options){Void}
-
从黑名单移除
- 如果一个用户被从黑名单移除, 那么会重新收到此用户发送的消息
- SDK内部调用
nim.markInBlacklist来完成实际工作
Params:
Name Type Description optionsObject 配置参数
Name Type Description accountString 要从黑名单移除的账号
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.removeFromBlacklist({
account: 'account',
done: removeFromBlacklistDone
});
function removeFromBlacklistDone(error, obj) {
// console.log('从黑名单移除' + (!error?'成功':'失败'), error, obj);
if (!error) {
removeFromBlacklist(obj);
}
} - See:
-
removeFromMutelist(options){Void}
-
从静音列表移除
- SDK只负责维护静音列表, 具体要根据静音列表进行的操作由开发者决定
- SDK内部调用
nim.markInMutelist来完成实际工作
Params:
Name Type Description optionsObject 配置参数
Name Type Description accountString 要从静音列表移除的账号
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.removeFromMutelist({
account: 'account',
done: removeFromMutelistDone
});
function removeFromMutelistDone(error, obj) {
// console.log('从静音列表移除' + (!error?'成功':'失败'), error, obj);
if (!error) {
removeFromMutelist(obj);
}
} - See:
-
removeTeamManagers(options){Void}
-
移除群管理员
移除群管理员后, 所有群成员会收到一条类型为的'removeTeamManagers'群通知消息。此类群通知消息的from字段的值为移除群管理员的人的帐号,to字段的值为对应的群ID,attach有一个字段accounts的值为被移除的管理员的帐号列表,attach有一个字段members的值为被移除管理员的群成员列表。
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString 群id
accountsArray.<String> 要移除的管理员帐号列表
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.removeTeamManagers({
teamId: '123',
accounts: ['a2', 'a3'],
done: removeTeamManagersDone
});
function removeTeamManagersDone(error, obj) {
// console.log('移除群管理员' + (!error?'成功':'失败'), error, obj);
} - See:
-
removeTeamMembers(options){Void}
-
踢人出群
踢人出群后, 所有群成员会收到一条类型为的'removeTeamMembers'群通知消息。此类群通知消息的from字段的值为踢人的人的帐号,to字段的值为对应的群ID,attach有一个字段team的值为对应的群对象,attach有一个字段accounts的值为被踢的人的帐号列表。
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString 群id
accountsArray.<String> 要移除的成员帐号列表
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.removeTeamMembers({
teamId: '123',
accounts: ['a3', 'a4'],
done: removeTeamMembersDone
});
function removeTeamMembersDone(error, obj) {
// console.log('踢人出群' + (!error?'成功':'失败'), error, obj);
} - See:
-
resendMsg(options){Void}
-
重发消息
- 如果消息发送失败, 那么可以重发消息
Params:
Name Type Description optionsObject 配置参数
Name Type Description msgIMMessage 待重发的消息
donefunction 结果回调函数
Returns:
Type Description Void Example:
nim.resendMsg({
msg: someMsg,
done: sendMsgDone
})
// console.log('正在重发消息', someMsg) -
resetCurrSession()
-
重置当前会话
- 重置当前会话后, 所有会话在收到消息之后会更新未读数
Example:
nim.resetCurrSession();
-
resetSessionUnread(sessionId){Void}
-
重置某个会话的未读数
- 如果是已经存在的会话记录, 会将此会话未读数置为 0, 那么会收到
onupdatesession回调 - 之后此会话在收到消息之后依然会更新未读数
Params:
Name Type Description sessionIdString 会话ID
Returns:
Type Description Void Example:
nim.resetSessionUnread('sessionId');
- 如果是已经存在的会话记录, 会将此会话未读数置为 0, 那么会收到
-
rotateImage(options){Void}
-
Params:
Name Type Description optionsObject 配置参数
Name Type Description urlString 原图 url
angleInt 旋转的角度, 正整数表示顺时针, 负整数表示逆时针, 必须为整数, 此方法内部会先将 angle 格式化为 [0, 360] 范围内的数字, 然后使用 Math.round 来格式化 angle
donedone 结果回调函数, 成功时附上旋转后的图片的 url
Returns:
Type Description 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){Message}
-
发送自定义消息
- 自定义消息是
消息类型的一种 - 下面的代码用自定义消息实现了
石头剪刀布游戏
Params:
Name Type Default Description optionsObject 配置参数
Name Type 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 特殊推送选项, 只在群会话中使用
Name Type Default Description accountsArray.<String> optional 需要特殊推送的账号列表, 不填表示推送给当前会话内的所有用户
contentString optional 需要特殊推送的文案, 不填的话默认为 pushContent
forcePushString true optional 是否强制推送, true 表示即使推送列表中的胡勇屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
options.isHistoryableBoolean true optional 是否存储云端历史
options.isRoamingableBoolean true optional 是否支持漫游
options.isSyncableBoolean true optional 是否支持发送者多端同步
options.ccBoolean optional 是否支持抄送
options.isPushableBoolean true optional 是否需要推送
options.isOfflinableBoolean true optional 是否要存离线
options.isUnreadableBoolean true optional 是否计入消息未读数
options.needPushNickBoolean true optional 是否需要推送昵称
options.isLocalBoolean false optional 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
Returns:
Type Description 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){String}
-
发送自定义系统通知
Params:
Name Type Description optionsObject 配置参数
Name Type Default Description sceneString 场景跟
消息场景的一样, 分为p2p(点对点)和team(群)。toString | Number 接收方, 帐号或者群id
contentString 自定义系统通知的内容, 推荐使用JSON格式构建
apnsTextString optional apns推送文案, 仅对接收方为iOS设备有效
pushPayloadString optional 自定义系统通知的推送属性
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
sendToOnlineUsersOnlyBoolean true optional 是否只发送给在线用户。
true时只发送给在线用户, 如果接收方不在线, 这条通知将被丢弃。
适合发送即时通知, 比如正在输入。
false时假如接收方在线, 那么会立即收到该通知,
假如接收方不在线, 会在其上线后推送过去。ccBoolean optional 是否抄送
isPushableBoolean true optional 是否需要推送
needPushNickBoolean false optional 是否需要推送昵称
donedone 结果回调函数
Returns:
Type Description String SDK生成的ID 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);
} - 推荐使用
- See:
-
sendFile(options, apns){Void|Message}
-
发送文件消息
- 文件消息是
消息类型的一种 - 开发者可以直接发送文件消息
- 支持以下几种场景
- 通过参数
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会在上传完成后检测文件大小
Params:
Name Type Default Description optionsObject 配置参数
Name Type Default Description sceneString toString | Number 接收方, 对方帐号或者群id
typeString optional 文件过滤器,
'image'会过滤掉非图片的文件,'audio'过滤掉非音频,'video'会过滤掉非视频的文件,
IE8/IE9 不支持文件过滤fileInputString | Node optional 文件选择 dom 节点或者节点 ID, SDK 会读取该节点下的文件, 在上传完成前请不要操作该节点下的文件
blobBlob optional Blob 对象
dataURLString optional MIME type 和 base64 数据的 data URL
fileArray optional 文件对象, 开发者可以通过
预览文件拿到文件对象wxFilePathString optional 仅供微信小程序使用, 通过 wx.chooseImage 或者 wx.startRecord 拿到的临时文件路径
resendBoolean false optional 是否是重发
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 特殊推送选项, 只在群会话中使用
Name Type Default Description accountsArray.<String> optional 需要特殊推送的账号列表, 不填表示推送给当前会话内的所有用户
contentString optional 需要特殊推送的文案, 不填的话默认为 pushContent
forcePushString true optional 是否强制推送, true 表示即使推送列表中的胡勇屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
options.isHistoryableBoolean true optional 是否存储云端历史
options.isRoamingableBoolean true optional 是否支持漫游
options.isSyncableBoolean true optional 是否支持发送者多端同步
options.ccBoolean optional 是否支持抄送
options.isPushableBoolean true optional 是否需要推送
options.isOfflinableBoolean true optional 是否要存离线
options.isUnreadableBoolean true optional 是否计入消息未读数
options.needPushNickBoolean true optional 是否需要推送昵称
options.isLocalBoolean false optional 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
options.donedone 结果回调函数
Returns:
Type Description 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){Message}
-
Params:
Name Type Default Description optionsObject 配置参数
Name Type Description sceneString toString | Number 接收方, 对方帐号或者群id
geoObject 地理位置对象
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 特殊推送选项, 只在群会话中使用
Name Type Default Description accountsArray.<String> optional 需要特殊推送的账号列表, 不填表示推送给当前会话内的所有用户
contentString optional 需要特殊推送的文案, 不填的话默认为 pushContent
forcePushString true optional 是否强制推送, true 表示即使推送列表中的用户屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
options.isHistoryableBoolean true optional 是否存储云端历史
options.isRoamingableBoolean true optional 是否支持漫游
options.isSyncableBoolean true optional 是否支持发送者多端同步
options.ccBoolean optional 是否支持抄送
options.isPushableBoolean true optional 是否需要推送
options.isOfflinableBoolean true optional 是否要存离线
options.isUnreadableBoolean true optional 是否计入消息未读数
options.needPushNickBoolean true optional 是否需要推送昵称
options.isLocalBoolean false optional 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
Returns:
Type Description 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){Void}
-
发送消息已读回执
- 目前只支持
'p2p'会话 - 如果没有传入消息, 则直接返回成功
- 如果已经发送过比传入的消息的时间戳大的已读回执, 那么直接返回成功
Params:
Name Type Description optionsObject 参数
Name Type Description msgIMMessage 要发送已读回执的会话的最后一条消息, 可以直接通过
来获取此消息session.lastMsgdonefunction 结果回调函数
Returns:
Type Description Void Example:
nim.sendMsgReceipt({
msg: session.lastMsg,
done: sendMsgReceiptDone
});
function sendMsgReceiptDone(error, obj) {
// console.log('发送消息已读回执' + (!error?'成功':'失败'), error, obj);
} - 目前只支持
-
sendText(options, apns){Message}
-
发送文本消息
- 文本消息是消息的一种, 请参考
消息
Params:
Name Type Default Description optionsObject 配置参数
Name Type Default Description sceneString toString 接收方, 对方帐号或者群id
textString 文本消息内容
resendBoolean optional 是否是重发
idClientString optional 如果是重发, 那么需要带上之前生成的idClient来标记这条消息
customString optional 扩展字段
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
pushContentString optional 自定义推送文案
pushPayloadString optional 自定义的推送属性
- 推荐使用
JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
needPushNickBoolean true optional 是否需要推送昵称
apnsObject optional 特殊推送选项, 只在群会话中使用
Name Type Default Description accountsArray.<String> optional 需要特殊推送的账号列表, 不填表示推送给当前会话内的所有用户
contentString optional 需要特殊推送的文案, 不填的话默认为 pushContent
forcePushString true optional 是否强制推送, true 表示即使推送列表中的胡勇屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
options.isHistoryableBoolean true optional 是否存储云端历史
options.isRoamingableBoolean true optional 是否支持漫游
options.isSyncableBoolean true optional 是否支持发送者多端同步
options.ccBoolean optional 是否支持抄送
options.isPushableBoolean true optional 是否需要推送
options.isOfflinableBoolean true optional 是否要存离线
options.isUnreadableBoolean true optional 是否计入消息未读数
options.isLocalBoolean false optional 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
options.yidunEnableBoolean false optional 是否需要过易盾反垃圾
options.antiSpamContentString optional 在开启yidunEnable后, 开发者自定义的反垃圾字段(json格式),格式如下:{"type": 1, "data": "custom content"} 字段说明:type:1.文本,2.图片,3视频,data内容:文本内容or图片地址or视频地址
options.donedone 结果回调函数
Returns:
Type Description 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){Message}
-
发送提醒消息
- 提醒消息是
消息类型的一种 - 提醒消息用于会话内的状态提醒,如进入会话时出现的欢迎消息,或者会话命中敏感词后的提示消息等等.
Params:
Name Type Default Description optionsObject 配置参数
Name Type 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 特殊推送选项, 只在群会话中使用
Name Type Default Description accountsArray.<String> optional 需要特殊推送的账号列表, 不填表示推送给当前会话内的所有用户
contentString optional 需要特殊推送的文案, 不填的话默认为 pushContent
forcePushString true optional 是否强制推送, true 表示即使推送列表中的胡勇屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
options.isHistoryableBoolean true optional 是否存储云端历史
options.isRoamingableBoolean true optional 是否支持漫游
options.isSyncableBoolean true optional 是否支持发送者多端同步
options.ccBoolean optional 是否支持抄送
options.isPushableBoolean true optional 是否需要推送
options.isOfflinableBoolean true optional 是否要存离线
options.isUnreadableBoolean true optional 是否计入消息未读数
options.needPushNickBoolean true optional 是否需要推送昵称
options.isLocalBoolean false optional 是否是本地消息
true表示本地消息, 那么SDK并不会发送此条消息, 而是直接调用回调表示发送成功, 并更新对应的会话
Returns:
Type Description 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){Void}
-
设置当前会话
- 设置后, 当前会话未读数会被置为
0, 同时开发者会收到onupdatesession回调 - 之后此会话在收到消息之后不会更新未读数
- 传空字符串的话, 重置当前会话为空
Params:
Name Type Description sessionIdString 会话ID
Returns:
Type Description Void Example:
nim.setCurrSession('sessionId');
- 设置后, 当前会话未读数会被置为
-
setOptions(options)
-
更新配置, 参数格式跟
NIM.getInstance保持一致Params:
Name Type Description optionsObject 配置参数
Name Type Description tokenString 帐号的 token, 用于建立连接
Example:
// 更新 token 的例子
nim.setOptions({
token: 'newToken'
}); -
stripImageMeta(options){Void}
-
Params:
Name Type Description optionsObject 配置参数
Name Type Description urlString 原图 url
donedone 结果回调函数, 成功时附上 interlace 后的图片 url
Returns:
Type Description 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){Void}
-
生成缩略图
- 只支持通过
预览文件或发送文件消息拿到的图片 url, 或者经过其他图片操作后拿到的图片 url - width/height 限制了缩略图的尺寸
- width/height 必须大于等于 0, 不能同时为 0, 必须小于 4096
- 不同模式下生成的缩略图是不一样的, 目前支持以下三种模式
'cover': 原图片等比缩略, 缩略图一边等于请求的尺寸, 另一边大于请求的尺寸, 即缩略图刚好能覆盖住尺寸为 width*height 的矩形'contain': 原图片等比缩略, 缩略图一边等于请求的尺寸, 另一边小于请求的尺寸, 即尺寸为 width*height 的矩形刚好能覆盖住缩略图'crop': 先等比缩略原图片, 使得一边等于请求的尺寸, 另一边大于请求的尺寸, 然后对大于请求尺寸的那条边进行裁剪, 使得最终的图片大小刚好等于请求的尺寸
- 如果缩略图尺寸大于图片尺寸, 默认情况下图片不会被放大, 可以传入参数
enlarge=true来放大图片 'crop'模式下可以传入参数 axis.x 或 axis.y 来控制最后一步裁剪的位置- x/y 必须为整数, 取值范围为 0-10, 此方法内部使用 Math.round 来格式化 x/y
- x 为 0 时表示裁取最左端, x 为 10 时表示裁取最右端
- y 为 0 时表示裁取最上端, y 为 10 时表示裁取最下端
- x/y 默认值均为 5, 即裁取正中间
Params:
Name Type Description optionsObject 配置参数
Name Type 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 false optional 当图片尺寸小于要缩略的尺寸时, 是否放大图片, 默认
false不放大donedone 结果回调函数, 成功时附上缩略后的图片 url
Returns:
Type Description 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){Void}
-
转让群
转让群后, 所有群成员会收到一条类型为的'transferTeam'群通知消息。此类群通知消息的from字段的值为转让群的人的帐号,to字段的值为对应的群ID,attach有一个字段team的值为对应的群对象,attach有一个字段account的值为为新群主的帐号,attach有一个字段members的值为包含新旧群主的群成员列表。- 如果转让群的同时离开群, 那么相当于调用
主动退群来离开群, 所有群成员会再收到一条类型为的'leaveTeam'群通知消息。
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString 群id
accountString 新群主的帐号
leaveBoolean 转让群的同时是否离开群
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.transferTeam({
teamId: '123',
account: 'zyy2',
leave: false,
done: transferOwnerDone
});
function transferOwnerDone(error, obj) {
// console.log('转让群' + (!error?'成功':'失败'), error, obj);
} - See:
-
updateFriend(options){Void}
-
更新好友
- 开发者可以用此接口来更新好友的备注
- 开发者也可以使用JSON格式的扩展字段来进行扩展
Params:
Name Type Description optionsObject 配置参数
Name Type Description accountString 要更新的好友的account
aliasString optional 备注
customString optional 扩展字段, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
donedone 结果回调函数
Returns:
Type Description 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);
}
} - See:
-
updateInfoInTeam(options){Void}
-
修改自己的群属性
目前支持修改的属性有这些
nickInTeam: 自己在群里面的群昵称muteTeam: 是否关闭此群的消息提醒,true表示关闭提醒, 但是SDK仍然会收到这个群的消息, SDK只是记录这个设置, 具体根据这个设置要执行的操作由第三方APP决定, 设置之后可以调用接口NIM#notifyForNewTeamMsg来查询是否需要群消息通知custom: 第三方扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString 群id
nickInTeamString optional 在群里面的昵称
muteTeamBoolean optional 是否关闭此群的消息提醒,
true表示关闭提醒, 但是SDK仍然会收到这个群的消息, SDK只是记录这个设置, 具体根据这个设置要执行的操作由第三方APP决定customBoolean optional 第三方扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.updateInfoInTeam({
teamId: '123',
// 此参数为可选参数
// nickInTeam: '群昵称',
// 静音群, 此参数为可选参数
// muteTeam: true,
// 第三方扩展字段
// custom: '{}'
done: updateInfoInTeamDone
});
function updateInfoInTeamDone(error, obj) {
// console.log('修改自己的群属性' + (!error?'成功':'失败'), error, obj);
} - See:
-
updateLocalMsg(options){Void}
-
更新本地消息
- 更新
idClient对应的本地消息 - 如果不
支持数据库, 算成功 - 如果对应的消息不存在, 算成功, 返回 null
- 这些字段只会被更新到本地数据库, 不会被更新到服务器上
Params:
Name Type Description optionsObject 配置参数
Name Type Description idClientString idClient
localCustomString optional 自定义字段
donefunction 结果回调函数, 成功时会额外附上
消息Returns:
Type Description Void Example:
nim.updateLocalMsg({
id: 'p2p-account',
localCustom: '{"key","value"}',
done: updateLocalMsgDone
});
function updateLocalMsgDone(error, obj) {
// console.log('更新本地消息' + (!error?'成功':'失败'), error, obj);
} - 更新
-
updateLocalSession(options){Void}
-
更新本地会话
- 更新
id对应的本地会话 - 如果不
支持数据库, 算成功 - 如果对应的会话不存在, 算成功, 返回 null
- 这些字段只会被更新到本地数据库, 不会被更新到服务器上
- 目前只允许更新
localCustom
Params:
Name Type Description optionsObject 配置参数
Name Type Description idString id
localCustomString optional 自定义字段
donefunction 结果回调函数, 成功时会额外附上
会话Returns:
Type Description Void Example:
nim.updateLocalSession({
id: 'p2p-account',
localCustom: '{"key","value"}',
done: updateLocalSessionDone
});
function updateLocalSessionDone(error, obj) {
// console.log('更新本地会话' + (!error?'成功':'失败'), error, obj);
} - 更新
-
updateLocalSysMsg(options){Void}
-
更新本地系统通知
- 更新
idServer对应的本地系统通知 - 如果不
支持数据库, 算成功 - 如果对应的系统通知不存在, 算成功, 返回 null
- 这些字段只会被更新到本地数据库, 不会被更新到服务器上
Params:
Name Type Description optionsObject 配置参数
Name Type Description idServerString idServer
statusString optional 状态
localCustomString optional 自定义字段
donefunction 结果回调函数, 成功时会额外附上
系统通知Returns:
Type Description 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){Void}
-
更新群成员禁言状态
更新群成员禁言状态后, 所有群成员会收到一条类型为的'updateTeamMute'群通知消息。此类群通知消息的from字段的值为操作方,to字段的值为对应的群ID,attach有一个字段team的值为对应的群对象,attach有一个字段account的值为被禁言的帐号,attach有一个字段members的值为被禁言的群成员列表。
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString 群id
accountString 要修改昵称的
群成员的帐号muteBoolean 是否要禁言
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.updateMuteStateInTeam({
teamId: '123',
account: 'a',
mute: true,
done: updateMuteStateInTeamDone
})
function updateMuteStateInTeamDone(error, obj) {
// console.log('更新群成员禁言状态' + (!error?'成功':'失败'), error, obj);
} -
updateMyInfo(options){Void}
-
更新我的名片
Params:
Name Type Description optionsObject 配置参数
Name Type Description nickString 昵称
avatarString 头像
signString 签名
genderString emailString 邮箱
birthString 生日
telString 手机号
customString 扩展字段
Returns:
Type Description 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);
}
} - See:
-
updateNickInTeam(options){Void}
-
Params:
Name Type Description optionsObject 配置参数
Name Type Description teamIdString 群id
accountString 要修改昵称的
群成员的帐号nickInTeamString 群昵称
donedone 结果回调函数
Returns:
Type Description Void Example:
nim.updateNickInTeam({
teamId: '123',
account: 'a2',
nickInTeam: '群昵称',
done: updateNickInTeamDone
});
function updateNickInTeamDone(error, obj) {
// console.log('修改自己的群属性' + (!error?'成功':'失败'), error, obj);
} - See:
-
updateTeam(options){Void}
-
更新群
Params:
Name Type Description optionsObject 配置参数
Name Type 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 Description 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){Void}
-
Params:
Name Type Description optionsObject 配置参数
Name Type Description urlString 原图 url
donedone 结果回调函数, 成功时附上 interlace 后的图片 url
Returns:
Type Description 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);
}