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