入群申请查询与审批
开启 invitationApproval 后,邀请或扫码产生的入群申请需要按角色处理。审批列表必须传入当前群的 discussionId,服务端只返回该群的申请,不应把不同群的结果合并为同一审批上下文。
查询待处理申请
objc
- (void)fetchDiscussionApplications:(NSString *)discussionId
options:(BIMDiscussionApplicationQueryOptions * _Nullable)options
succ:(BIMDiscussionApplicationPageSucc)succ
fail:(BIMFail)fail;查询参数默认值:skip = 0、limit = 20、beginTime = -1、endTime = LLONG_MAX。还可以按申请人、邀请人、来源和关键字筛选。
swift
let options = BIMDiscussionApplicationQueryOptions()
options.skip = 0
options.limit = 20
options.sources = [BIMDiscussionApplicationSourceInvite]
BIMManager.sharedInstance().fetchDiscussionApplications(
discussion.discussionId,
options: options
) { page in
render(page.applications)
let total = page.totalCount
} fail: { code, desc in }BIMDiscussionApplication 包含群资料、申请成员、邀请人、来源、状态、说明、元数据和时间。分页时保持当前 discussionId 不变,并按返回数量/总数更新下一页的 skip。
申请人确认
某些邀请流程需要申请人本人确认:
objc
[[BIMManager sharedInstance] agreeDiscussionApplication:discussionId
metadata:nil
succ:^(BIMDiscussionApplicationResult *result) {
} fail:^(int code, NSString *desc) {
}];群主或管理员处理
批准、拒绝和忽略都使用 BIMDiscussionApplicationProcessOptions:
swift
let process = BIMDiscussionApplicationProcessOptions(
memberUserIds: selectedApplications.map { $0.member.memberId }
)
process.reason = "资料不完整" // reject/ignore 可按业务填写
process.force = false // 仅 approve 使用
BIMManager.sharedInstance().approveDiscussionApplications(
discussionId,
options: process,
succ: { results in },
fail: { code, desc in }
)对应接口为:
approveDiscussionApplications:options:succ:fail::批准;rejectDiscussionApplications:options:succ:fail::拒绝;ignoreDiscussionApplications:options:succ:fail::忽略。
每个成员都有独立的 BIMDiscussionApplicationResult。批量操作后应按结果更新对应行,而不是假设所有申请都成功。force 只用于批准场景:原邀请人已离群时,由当前审批人继续处理。
UI 建议
- 仅群主/管理员查询并展示审批入口;
- 群聊顶部通知只显示当前群的待处理数量;
- 点击通知进入当前群的审批列表;
- 操作成功后立即更新本地列表,再按需重新请求第一页;
- 切换群聊时取消旧请求或校验返回的
discussionId,避免异步结果串群。
