Web

好友关系托管

更新时间: 2024/03/14 19:21:11

SDK 提供好友关系托管

参见 interface FriendServiceInterface

API 都挂载在 friend 模块里,使用 nim.friend 访问

好友对象定义

参见 type FriendProfile

下面例举几个重点的参数

类型 参数名 说明
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.typeaddFriend,

jsawait nim.friend.addFriend({
  "account": "cs2"
})

申请加为好友

参见 FriendServiceInterface-applyFriend

对方会收到一条类型为 类型为 type 为 friendReuqest 的系统通知,attach.typeapplyFriend

示例代码:

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.typepassFriendApply

示例参见上文的申请加为好友

拒绝好友申请

收到 sysMsg 事件里关于好友的申请后,可以调用 API 来拒绝好友申请,参见 FriendServiceInterface-rejectFriendApply

对方会收到一条类型为 类型为 type 为 friendReuqest 的系统通知,attach.typerejectFriendApply

删除好友

参见 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()
此文档是否对你有帮助?
有帮助
去反馈
  • 好友对象定义
  • 好友相关事件
  • 直接加为好友
  • 申请加为好友
  • 通过好友申请
  • 拒绝好友申请
  • 删除好友
  • 更新好友
  • 获取好友