SDK · Swift/iOS

ImcoreSDK 是 imcore IM 服务端的纯 Swift 客户端 SDK。基于 URLSessionWebSocketTask 的 WebSocket + JSON(零依赖)。支持 iOS 13+、macOS 10.15+、tvOS 13+、watchOS 6+。

引入(Swift Package Manager)

.package(path: "../path/to/clients/swift") // 或 git URL
// target 依赖:.product(name: "ImcoreSDK", package: "ImcoreSDK")

用法

import ImcoreSDK

let im = ImcoreClient(
    url: "wss://your-host/acc",
    auth: AuthConfig(token: "<jwt>", login: LoginPayload(userId: "1001", userName: "alice"))
)

// 用 AsyncStream 观察推送与状态:
Task { for await msg in im.events("chat_message") { print("msg", msg) } }
Task { for await s in im.statusStream() { print("status", s) } }       // idle/connecting/open/authenticated/closed
Task { for await _ in im.reconnectedStream() { /* 重新拉取会话 + 游标历史 */ } }

// connect() 在服务端确认登录后才返回;若登录被拒(如 token 无效)会 THROW —— 务必包裹。
// (以下所有 `try await` 须在 async throws 上下文中,如此 do/catch 或一个 Task。)
do {
    try await im.connect()

    _ = try await im.dm.send(targetUserId: "1002", text: "hi")
    let history = try await im.dm.history(targetUserId: "1002", limit: 20)

    // 任意尚未封装的命令的逃生通道:
    _ = try await im.request("chat_group_create", ["name": "team"])
    await im.send("chat_dm_typing", ["targetUserID": "1002"])  // 即发即忘,不抛错
} catch {
    print("imcore error: \(error)")
}

能力范围(v1)

传输内核 + seq 关联的请求/响应 + 登录确认门控的 connect + 类型化的 DM/群/聊天室 发送/接收/历史。不含: 本地缓存/离线对账、媒体上传辅助、E2EE、APNs 推送、SwiftUI 封装。

v1 集成测试经环境变量开关启用,尚未对生产服务端做端到端验证;接入前请先对你自己的部署验证。