好友关系托管
更新时间: 2024/03/14 19:21:11
SDK 提供好友关系托管
参见 interface FriendServiceInterface
API 都挂载在 friend 模块里,使用 nim.friend
访问
好友对象定义
下面例举几个重点的参数
类型 | 参数名 | 说明 |
---|---|---|
string | account | 账号 id |
string | alias | 备注 |
boolean | valid | 默认 true。为 true 代表是双方是彼此的朋友 |
好友相关事件
- 同步阶段会收到服务器下发的好友信息,触发 friends
- 其他端操作过好友相关的信息后,会下发多端同步好友通知,会触发 syncFriend 事件
- 系统通知里可能包含了好友相关的通知信息,使用 type 字段做对应的区分
- friendRequest 好友添加相关的,则其 attach.type 字段有这四种可能 'addFriend', 'applyFriend', 'passFriendApply', 'rejectFriendApply'
- deleteFriend
jsnim.on('syncFriend', function (friend) {
console.log('multi client sync receive', friend)
})
nim.on('friends', function (friends) {
console.log('initial sync receive', friends)
})
nim.on('sysMsg', function(evt) {
// about friendRequest
if (evt.type === 'friendRequest') {
// about applyFriend
if (evt.attach.type === 'applyFriend') {
// then, pass friend apply
nim.friend.passFriendApply({
account: evt.from
})
}
}
})
直接加为好友
参见 FriendServiceInterface-addFriend
直接加某个用户为好友后, 对方不需要确认, 直接成为当前登录用户的好友。
对方会收到一条类型为 类型为 type 为 friendReuqest
的系统通知,attach.type
为 addFriend
,
jsawait nim.friend.addFriend({
"account": "cs2"
})
申请加为好友
参见 FriendServiceInterface-applyFriend
对方会收到一条类型为 类型为 type 为 friendReuqest
的系统通知,attach.type
为 applyFriend
示例代码:
account A
jsconst nim = new NIMSDK({
account: 'A',
...
})
// step 4,receive notification for pass apply
nim.on('sysMsg', async function(evt) {
// about friendRequest
if (evt.type === 'friendRequest') {
// about applyFriend
if (evt.attach.type === 'passFriendApply') {
console.log('account B pass my friend apply')
}
}
})
await nim.connect()
// step 1, A apply to be B friend
await nim.friend.applyFriend({
"account": "B"
})
account B 模拟只要接到通知就通过好友申请,
jsconst nim = new NIMSDK({
account: 'B',
...
})
// step 2, B receive friend apply
nim.on('sysMsg', async function(evt) {
// about friendRequest
if (evt.type === 'friendRequest') {
// about applyFriend
if (evt.attach.type === 'applyFriend') {
// then, pass friend apply
// step 3, B pass apply
await nim.friend.passFriendApply({
account: evt.from
})
}
}
})
await nim.connect()
通过好友申请
收到 sysMsg 事件里关于好友的申请后,可以调用 API 来通过好友申请,参见 FriendServiceInterface-passFriendApply
对方会收到一条类型为 类型为 type 为 friendReuqest
的系统通知,attach.type
为 passFriendApply
示例参见上文的申请加为好友
拒绝好友申请
收到 sysMsg 事件里关于好友的申请后,可以调用 API 来拒绝好友申请,参见 FriendServiceInterface-rejectFriendApply
对方会收到一条类型为 类型为 type 为 friendReuqest
的系统通知,attach.type
为 rejectFriendApply
删除好友
参见 FriendServiceInterface-deleteFriend
对方会收到一条类型为 类型为 type 为 deleteFriend
的系统通知
更新好友
参见 FriendServiceInterface-updateFriend,可以修改备注,以及添加扩展字段
示例代码
jsawait nim.friend.updateFriend({
"account": "cs1",
"alias": "My best friend",
"ext": "{\"key\": \"recommand JSON format string\"}"
})
获取好友
参见 FriendServiceInterface-getFriends,结果不分页。
示例代码:
jsconst friends = await nim.friend.getFriends()