Skip to content

用户、关系链与群组 API

1. 用户资料

api-id用途主要输入返回
user.current_profile获取当前用户资料XHIMUserProfile
user.batch_profiles批量获取用户资料userIDsXHIMUserProfileBatch
user.update_profile更新当前用户资料XHIMUserProfileUpdateXHIMUserProfile

XHIMUserProfileBatch 同时返回找到的资料和缺失 ID;批量查询方必须按 userID 关联结果,不能依赖返回顺序。显示名称和头像采用服务端返回值,客户端不再叠加 一套独立缓存优先级。

XHIMUserProfileUpdate 的可选字段表示“是否修改”,空字符串是一个明确值。 修改成功后以返回的完整 Profile 替换本地 UI,不要拼接旧值。

2. 好友申请和好友关系

api-id用途主要输入返回
relationship.send_friend_request发起好友申请toUserID, introduction, mutationIDXHIMFriendRequest
relationship.resolve_friend_request接受或拒绝requestID, decision, mutationIDXHIMFriendRequestResolution
relationship.delete_friendship删除好友关系peerUserID, mutationIDXHIMFriendshipDeletion
relationship.set_friend_remark设置好友备注peerUserID, remark, expectedRevision, mutationIDXHIMFriendRemarkChange
relationship.list_friend_requests分页查询好友申请可选 cursor, limitXHIMSocialPage<XHIMFriendRequest>
relationship.list_friendships分页查询好友可选 cursor, limitXHIMSocialPage<XHIMFriendship>

decision 只有 acceptreject。同一 mutationID 重放返回相同业务结果; 使用不同 mutation ID 重复处理已经完成的申请,会得到稳定冲突或状态错误。

备注是好友关系的服务端字段。UI 展示时直接使用返回的 remark / display 字段,不在另一个本地 Store 中覆盖服务端结果。

3. 黑名单

api-id用途主要输入返回
relationship.set_block添加或解除拉黑blockedUserID, isActive, mutationIDXHIMBlock
relationship.list_blocks分页查询黑名单可选 cursor, limitXHIMSocialPage<XHIMBlock>

解除拉黑使用同一个 setBlock,并把 isActive 设为 false。拉黑是否同时阻止 历史消息、好友申请或群内互动由部署方服务端策略决定;客户端只根据返回和稳定 错误展示结果。

4. 群组生命周期

api-id用途主要输入返回
group.create创建群组title, memberUserIDs, mutationIDXHIMGroupChange
group.change_members增删成员conversationID, addUserIDs, removeUserIDs, expectedRevision, mutationIDXHIMGroupChange
group.leave当前用户退群conversationID, expectedRevision, mutationIDXHIMGroupLifecycleResult
group.dismiss群主解散群conversationID, expectedRevision, mutationIDXHIMGroupLifecycleResult

changeGroupMembers 是一个原子变更。同一用户不能同时出现在 add/remove; 接入层应在调用前去重。成员权限、群容量和是否允许直接邀请由服务端校验,客户端 不要把按钮可见性当成权限证明。

5. 入群申请

api-id用途主要输入返回
group.request_join申请加入群组conversationID, introduction, mutationIDXHIMGroupJoinMutation
group.resolve_join管理员接受或拒绝requestID, decision, mutationIDXHIMGroupJoinMutation
group.list_join_requests分页查询入群申请可选 cursor, limitXHIMSocialPage<XHIMGroupJoinRequest>

群设置为无需审批时,服务端可以直接完成加入;客户端仍以返回的 XHIMGroupJoinMutation 和后续群成员投影为准。

6. 群治理

group.change_governance

统一输入:

  • conversationID
  • expectedRevision
  • mutationID
  • change: XHIMGroupGovernanceChange

支持的强类型变更:

change参数说明
setAdministratoruserID, isAdministrator设置或取消管理员
setMuteuserID, 可选 mutedUntilMillisecondsnil / 空值解除禁言
transferOwnershiptoUserID转让群主
setJoinApprovalRequiredBool开关入群审批
setProfiletitle, avatarURL, announcement, description原子更新群资料

返回 XHIMGroupChange。群角色和 revision 可能同时改变,成功后应重新查询群资料 与成员列表。

7. 群查询

api-id用途主要输入返回
group.list分页查询当前用户群组可选 cursor, limitXHIMSocialPage<XHIMGroup>
group.list_members分页查询成员conversationID, 可选 cursor, limitXHIMSocialPage<XHIMGroupMember>

成员页包含群 revision fence。跨多页渲染时,如果后续页 revision 与第一页不 一致,应丢弃这一轮结果并从第一页重新读取,避免把成员变更前后的数据拼在一起。

8. Presence 和正在输入

api-id用途主要输入返回
user.publish_presence发布在线状态XHIMPresenceStatus, ttlMillisecondsXHIMPresencePublication
user.publish_typing发布输入状态conversationID, isTyping, ttlMillisecondsXHIMTypingPublication

Presence 和 Typing 是短暂状态,不进入可靠消息历史。接收方必须按 expiresAtMilliseconds 本地过期;“停止输入/离线”帧可能因断网丢失。

9. Push 设备

api-id用途主要输入返回
push.register注册或轮换 Push TokenXHIMPushDeviceXHIMPushDeviceRegistration
push.disable禁用当前设备 PushdeviceIDXHIMPushDeviceDisableResult

XHIMPushDevice 包含 platform、deviceID、token、environment 和 locale。Token 只作为输入,错误、日志、description 和诊断不会回显。APNs/FCM/Huawei 厂商 凭证配置在服务端,不放进 SDK 客户端。

10. 多端登录设备

api-id用途主要输入返回
session.list列出当前账号设备会话XHIMDeviceSessionPage
session.revoke撤销一个设备会话sessionID, mutationIDXHIMDeviceSessionRevocation

XHIMDeviceSessionPolicy 描述部署方的多端登录策略和设备上限。撤销当前会话可能 立即触发凭证失效或登出;接入方应在账号容器统一处理状态事件。

11. 社交列表刷新

收到 socialChanged 时按 socialScope 重新查询对应列表:

scope重查方法
friendRequestsfriendRequests
friendshipsfriendships
groupsgroups
groupMembers当前 scope ID 的 groupMembers
blocksblocks
groupJoinRequestsgroupJoinRequests

unknown scope 或 requiresFullRequery == true 时,刷新当前页面依赖的全部社交 投影,不尝试解析未知数字值。

XHIM 客户端 SDK 与服务端文档