浏览 SDKs · uni-app / uni-app x
SDKsuni-app

分页获取好友列表

使用 uni-app / uni-app x SDK 分页查询当前用户的好友列表。

复制

先注册好友事件,再调用 getFriendListPage() 建立当前好友快照。

参数说明

参数类型是否必填说明
offsetnumber分页偏移量,首页传 0
countnumber本次请求的好友数量。
filterBlackboolean是否从结果中过滤黑名单用户。
import { getFriendListPage } from '@/uni_modules/unix-openim-sdk'

const result = await getFriendListPage({
  offset: 0,
  count: 50,
  filterBlack: true,
})

Promise 成功后,result?.friends 是当前页 OpenIMFriendUserItem[]。继续加载时按请求条目数增加 offset;好友增删后重置分页。原生 API 直接返回 OpenIMFriendListResult | null,不使用 { data } 包装。

好友资料字段

OpenIMFriendUserItem 表示当前账号与一个好友的关系资料:

字段类型说明
userIDstring好友的用户 ID,也是好友列表的稳定标识。
nicknamestring好友的账号级昵称。
faceURLstring好友的账号级头像地址。
remarkstring当前账号为该好友设置的备注。
isPinnedboolean该好友是否在联系人列表中置顶。
ownerUserIDstring这条好友关系所属的用户 ID,通常是当前账号。
operatorUserIDstring建立或更新这条关系的操作用户 ID。
addSourcenumber好友关系的添加来源值。
createTimenumber好友关系创建时间。
exstring好友关系扩展字符串。
attachedInfostringSDK 附加信息;只按已确认的业务约定解析。

nicknamefaceURL 是账号资料快照,remarkisPinnedexattachedInfo 属于好友关系。不要用 OpenIMFriendUserItem 覆盖陌生人的 OpenIMPublicUserItem,也不要把好友备注写回账号昵称。

同步好友变化

本页是 onFriendAddedonFriendInfoChangedonFriendDeleted 的完整监听归属页。查询负责建立快照,事件负责按 userID 合并增量。

import {
  off,
  onFriendAdded,
  onFriendDeleted,
  onFriendInfoChanged,
  type OpenIMSDKEventSubscription,
} from '@/uni_modules/unix-openim-sdk'

const friendSubscriptions : Array<OpenIMSDKEventSubscription> = [
  onFriendAdded((friend) => mergeFriend(friend.userID, friend)),
  onFriendInfoChanged((friend) => mergeFriend(friend.userID, friend)),
  onFriendDeleted((friend) => removeFriend(friend.userID)),
]

function removeFriendListeners() {
  friendSubscriptions.forEach((subscription) => off(subscription))
}

退出登录、切换账号或销毁联系人状态层时调用 removeFriendListeners()