好友关系托管
更新时间: 2024/11/25 10:05:43
初始化参数
示例代码
javascriptvar nim = NIM.getInstance({
onfriends: onFriends,
onsyncfriendaction: onSyncFriendAction
});
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.account + ', 附言' + obj.ps);
onAddFriend(obj.friend);
break;
case 'applyFriend':
console.log('你在其它端申请加了一个好友' + obj.account + ', 附言' + obj.ps);
break;
case 'passFriendApply':
console.log('你在其它端通过了一个好友申请' + obj.account + ', 附言' + obj.ps);
onAddFriend(obj.friend);
break;
case 'rejectFriendApply':
console.log('你在其它端拒绝了一个好友申请' + obj.account + ', 附言' + obj.ps);
break;
case 'deleteFriend':
console.log('你在其它端删了一个好友' + obj.account);
onDeleteFriend(obj.account);
break;
case 'updateFriend':
console.log('你在其它端更新了一个好友', obj.friend);
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() {
// 刷新界面
}
参数解释
onfriends
, 同步好友列表的回调, 会传入好友列表friends
friends
的属性invalid包含被删除的好友列表- 此回调是增量回调, 可以调用nim.mergeFriends和nim.cutFriends来合并数据
onsyncfriendaction
, 当前登录用户在其它端进行好友相关的操作后的回调- 操作包括
- 此回调会收到一个参数
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
的值为被更新的好友对象
- 可以调用nim.mergeFriends和nim.cutFriendsByAccounts 来合并数据。
好友对象
好友对象有以下字段:
account
: 账号alias
: 备注custom
: 扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串createTime
: 成为好友的时间updateTime
: 更新时间
直接加为好友
- 直接加某个用户为好友后, 对方不需要确认, 直接成为当前登录用户的好友
ps
: 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容- 对方会收到一条类型为
'addFriend'
的系统通知, 此类系统通知的from
字段的值为申请方的帐号,to
字段的值为接收方的账号。
javascriptnim.addFriend({
account: 'account',
ps: 'ps',
done: addFriendDone
});
function addFriendDone(error, obj) {
console.log(error);
console.log(obj);
console.log('直接加为好友' + (!error?'成功':'失败'));
if (!error) {
onAddFriend(obj.friend);
}
}
申请加为好友
- 申请加某个用户为好友后, 对方会收到一条类型为
'applyFriend'
的系统通知, 此类系统通知的from
字段的值为申请方的帐号,to
字段的值为接收方的账号, 用户在收到好友申请后, 可以选择通过或者拒绝好友申请。 ps
: 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
javascriptnim.applyFriend({
account: 'account',
ps: 'ps',
done: applyFriendDone
});
function applyFriendDone(error, obj) {
console.log(error);
console.log(obj);
console.log('申请加为好友' + (!error?'成功':'失败'));
}
通过好友申请
- 申请加某个用户为好友后, 对方会收到一条类型为
'applyFriend'
的系统通知, 此类系统通知的from
字段的值为申请方的帐号,to
字段的值为接收方的账号, 用户在收到好友申请后, 可以选择通过或者拒绝好友申请。 ps
: 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
javascript// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知
nim.passFriendApply({
idServer: sysMsg.idServer,
account: 'account',
ps: 'ps',
done: passFriendApplyDone
});
function passFriendApplyDone(error, obj) {
console.log(error);
console.log(obj);
console.log('通过好友申请' + (!error?'成功':'失败'));
if (!error) {
onAddFriend(obj.friend);
}
}
拒绝好友申请
- 申请加某个用户为好友后, 对方会收到一条类型为
'applyFriend'
的系统通知, 此类系统通知的from
字段的值为申请方的帐号,to
字段的值为接收方的账号, 用户在收到好友申请后, 可以选择通过或者拒绝好友申请。 ps
: 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
javascript// 假设 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?'成功':'失败'));
}
删除好友
- 删除好友后, 被删除的人会收到一条类型为
'deleteFriend'
的系统通知, 此类系统通知的from
字段的值为删除方的帐号,to
字段的值为被删除方的账号。 - 参数解释
account
为要删除好友的账号。delAlias
参数,表示用户删除好友时,是否要删除好友的备注信息,默认false
不删除。
javascriptnim.deleteFriend({
account: 'account',
delAlias: true,
done: deleteFriendDone
});
function deleteFriendDone(error, obj) {
console.log(error);
console.log(obj);
console.log('删除好友' + (!error?'成功':'失败'));
if (!error) {
onDeleteFriend(obj.account);
}
}
更新好友
- 开发者可以用此接口来更新好友的备注
- 开发者也可以使用JSON格式的扩展字段来进行扩展
javascriptnim.updateFriend({
account: 'account',
alias: 'alias',
custom: 'custom',
done: updateFriendDone
});
function updateFriendDone(error, obj) {
console.log(error);
console.log(obj);
console.log('更新好友' + (!error?'成功':'失败'));
if (!error) {
onUpdateFriend(obj);
}
}
获取好友列表
- 如果开发者在初始化SDK的时候设置了
syncFriends
为false
, 那么就收不到onfriends
回调, 可以调用此接口来获取好友列表。
javascriptnim.getFriends({
done: getFriendsDone
});
function getFriendsDone(error, friends) {
console.log('获取好友列表' + (!error?'成功':'失败'), error, friends);
if (!error) {
onFriends(friends);
}
}
此文档是否对你有帮助?