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

获取收到的好友申请

分页查询当前用户收到的好友申请,并同步申请状态变化。

复制

getFriendApplicationListAsRecipient() 查询其他用户发给当前账号的好友申请。uni-app / uni-app x 的 OpenIMApplicationListParams 只提供分页字段,不包含 Wasm 版本的 handleResults 筛选;需要只展示待处理申请时,在返回后根据 handleResult 过滤。

参数说明

参数对象可以省略;显式分页时使用:

参数类型是否必填说明
offsetnumbernull分页偏移量,首页传 0
countnumbernull本次请求的申请数量。
import { getFriendApplicationListAsRecipient } from '@/uni_modules/unix-openim-sdk'

const result = await getFriendApplicationListAsRecipient({
  offset: 0,
  count: 20,
})

const applications = result?.applications ?? []
replaceReceivedApplications(applications)

Promise 成功后直接返回 OpenIMFriendApplicationListResult | null,其中 applications 是当前页 OpenIMFriendApplicationItem[]。查询本身不会触发申请事件。

好友申请字段

字段类型说明
fromUserIDstring申请发起人的用户 ID。
fromNicknamestring申请发起人的昵称快照。
fromFaceURLstring申请发起人的头像快照。
toUserIDstring申请接收人的用户 ID。
toNicknamestring申请接收人的昵称快照。
toFaceURLstring申请接收人的头像快照。
reqMsgstring申请附言。
handleResultnumber当前处理结果:0 待处理、1 已同意、-1 已拒绝。
handlerUserIDstring执行处理的用户 ID;未处理时可能为空。
handleMsgstring处理时填写的说明。
handleTimenumber处理时间;未处理时不应当作有效时间展示。
createTimenumber申请记录创建时间。
exstring申请记录扩展字符串。
attachedInfostringSDK 附加信息,只按已确认的业务约定解析。

申请记录使用 fromUserID:toUserID 作为合并标识。昵称和头像是申请创建或同步时的快照;需要最新账号资料时,再按相应 userID 调用 getUsersInfo()

同步好友申请变化

本页是 onFriendApplicationAddedonFriendApplicationAcceptedonFriendApplicationRejectedonFriendApplicationDeleted 的完整监听归属页。推荐先注册事件,再查询快照:

import {
  off,
  onFriendApplicationAccepted,
  onFriendApplicationAdded,
  onFriendApplicationDeleted,
  onFriendApplicationRejected,
  type OpenIMSDKEventSubscription,
} from '@/uni_modules/unix-openim-sdk'

const applicationSubscriptions : Array<OpenIMSDKEventSubscription> = [
  onFriendApplicationAdded((item) => {
    mergeFriendApplication(item.fromUserID, item.toUserID, item)
  }),
  onFriendApplicationAccepted((item) => {
    mergeFriendApplication(item.fromUserID, item.toUserID, item)
  }),
  onFriendApplicationRejected((item) => {
    mergeFriendApplication(item.fromUserID, item.toUserID, item)
  }),
  onFriendApplicationDeleted((item) => {
    removeFriendApplication(item.fromUserID, item.toUserID)
  }),
]

function releaseFriendApplicationSubscriptions() {
  applicationSubscriptions.forEach((subscription) => off(subscription))
  applicationSubscriptions.length = 0
}

按当前用户是否为 toUserID,把事件分流到收到或发出的列表。分页期间收到变化时可以重置分页;申请被同意后,新好友关系由分页获取好友列表归属的 onFriendAdded 合并。

收到申请后应调用接受或拒绝 API,不要只修改本地 handleResult 冒充服务端成功。退出登录、切换账号或销毁好友申请状态层时,调用 releaseFriendApplicationSubscriptions()