浏览 SDKs · uni-app / uni-app x
平台
SDKsuni-app / uni-app x含商业版能力

事件概览

按应用和账号生命周期注册、使用并清理 UniApp SDK 事件。

复制

UniApp SDK 为连接、同步、用户、关系链、会话、群组、消息、上传和通话分别提供 onXxx() 事件注册函数。每次注册都会返回 OpenIMSDKEventSubscription,清理时把该订阅对象传给 off()

事件处理函数必须保持稳定引用,不要在每次组件更新时重复注册。全局连接、消息和通话事件适合放在账号状态层;只影响单个页面的事件应在页面卸载时取消。

建议的注册位置

事件范围建议生命周期对应页面
连接、Token 和账号下线登录前注册,切换账号时清理认证与管理登录会话
用户、好友和黑名单联系人状态层初始化时注册用户
会话列表与未读数会话状态层初始化时注册获取会话列表获取消息总未读数
群组与群成员群组状态层初始化时注册群组概览
入群申请群申请状态层初始化时注册获取收到的入群申请
消息消息状态层初始化时注册接收消息
文件上传上传任务开始前注册上传文件
通话通话功能初始化时注册处理通话事件

监听数据同步

登录后 SDK 会同步 OpenIMServer 数据。以下四个事件用于维护全局同步状态:

事件回调参数说明
onSyncServerStartboolean开始本轮数据同步。
onSyncServerProgressnumber当前同步进度。
onSyncServerFinishboolean本轮同步完成。
onSyncServerFailedboolean本轮同步失败。

同步开始、完成和失败事件的回调参数均为 boolean,SDK 没有为该值定义具体业务字段。应用应使用事件名判断阶段,不要自行给布尔值扩展未经确认的含义。

import {
  off,
  onSyncServerFailed,
  onSyncServerFinish,
  onSyncServerProgress,
  onSyncServerStart,
} from '@/uni_modules/unix-openim-sdk'

const handleSyncStart = (_value: boolean) => {
  setSyncState('syncing', 0)
}

const handleSyncProgress = (progress: number) => {
  setSyncState('syncing', progress)
}

const handleSyncFinish = (_value: boolean) => {
  setSyncState('ready', 100)
  void reloadVisibleData()
}

const handleSyncFailed = (_value: boolean) => {
  setSyncState('failed', 0)
}

const syncStartSubscription = onSyncServerStart(handleSyncStart)
const syncProgressSubscription = onSyncServerProgress(handleSyncProgress)
const syncFinishSubscription = onSyncServerFinish(handleSyncFinish)
const syncFailedSubscription = onSyncServerFailed(handleSyncFailed)

function removeSyncListeners() {
  off(syncStartSubscription)
  off(syncProgressSubscription)
  off(syncFinishSubscription)
  off(syncFailedSubscription)
}

同步事件描述 SDK 的整体过程,不对应某一个查询 API。同步完成后应重新获取当前界面需要的数据,之后继续通过各功能页面归属的事件更新。事件可能重复或交错到达,列表状态仍应使用用户 ID、conversationIDgroupIDgroupID:userIDclientMsgID 等稳定标识合并。