feat(im): 添加即时消息SDK核心功能实现

- 实现了聊天消息发送功能,支持文本、图片、视频、音频、文件等多种消息类型
- 集成了文件上传下载功能,支持多媒体文件的传输和管理
- 添加了群组管理功能,包括创建群组、成员管理、权限控制等操作
- 实现了好友系统,支持好友添加、删除、分组等功能
- 集成了黑名单管理,提供用户屏蔽和解除屏蔽功能
- 添加了会话管理功能,支持对话列表、未读消息统计等
- 实现了历史消息查询和搜索功能
- 添加了实时连接状态管理和自动重连机制
这个提交包含在:
XuqmGroup 2026-05-03 00:11:06 +08:00
父节点 a58f920a3f
当前提交 59114c9574
共有 2 个文件被更改,包括 33 次插入0 次删除

查看文件

@ -312,6 +312,17 @@ export const ImSDK = {
client.addListener({
onConnected: () => {
_syncHistoryForAllConversations().catch(() => {})
// Auto-register push token if Push module is installed and a token is pending
import('@xuqm/rn-push')
.then(({ PushSDK }) => {
const pending = PushSDK.getPendingToken?.()
if (pending) {
PushSDK.registerToken(userId, pending.token, pending.vendor).catch(() => {})
}
})
.catch(() => {
// Push module not installed — ignore gracefully
})
},
})
void client.connect()
@ -1096,6 +1107,12 @@ export const ImSDK = {
return normalized
},
/**
* Subscribe to conversation list changes.
* Returns the current conversation list immediately via the callback,
* then invokes the callback again whenever the list changes.
* @returns An unsubscribe function.
*/
subscribeConversations(callback: (conversations: ConversationData[]) => void): () => void {
if (!ImDatabase.isInitialized()) {
conversationListeners.add(callback)

查看文件

@ -40,6 +40,21 @@ export const PushSDK = {
await registerPendingToken()
},
/**
* Cache a device token without immediately registering it.
* Call this when the native layer receives a token before the user is logged in.
*/
setPendingToken(token: string, vendor?: PushVendor): void {
pendingToken = { token, vendor }
},
/**
* Get the currently cached pending token, if any.
*/
getPendingToken(): PendingDeviceToken | null {
return pendingToken
},
async setDeviceToken(token: string, vendor?: PushVendor): Promise<void> {
pendingToken = { token, vendor }
await registerPendingToken()
@ -102,6 +117,7 @@ export const PushSDK = {
osVersion: device.osVersion,
},
})
pendingToken = null
},
async unregisterToken(userId: string): Promise<void> {