指南
行動端 SDK
手工打造的 iOS、Android、Flutter 和 React Native 客戶端。
四個手工打造的第 1 梯隊 SDK,共享完全一致的 API 結構——學會一個,其餘即通。每個都位於 monorepo 的 sdks/<platform>/ 下。
iOS — Swift
// Package.swift
.package(url: "https://github.com/singlink/singlink-ios", from: "0.1.0")import AskAIs 智能客服系統
let client = SingChatClient(baseUrl: URL(string: "https://cs.askais.com")!)
let id = try await client.identify(.init(appId: "ws_abc", email: "ada@example.com"))
try await client.startRealtime { event in
if case .messageNew(let msg) = event { print(msg.content) }
}Android — Kotlin
// build.gradle.kts
implementation("app.singchat:sdk:0.1.0")import app.singchat.sdk.SingChatClient
import app.singchat.sdk.models.IdentifyRequest
val client = SingChatClient("https://cs.askais.com")
client.identify(IdentifyRequest(appId = "ws_abc", email = "ada@example.com"))
client.startRealtime()
client.events.collect { event -> /* ... */ }Flutter — Dart
# pubspec.yaml
dependencies:
singlink_sdk: ^0.1.0import 'package:singlink_sdk/singlink_sdk.dart';
final client = SingChatClient('https://cs.askais.com');
await client.identify(IdentifyRequest(appId: 'ws_abc'));
client.startRealtime();
client.events.listen((e) { /* ... */ });React Native — TypeScript
npm install @singlink/react-nativeimport { useAskAIs 智能客服系統 } from "@singlink/react-native";
const { client, identity, lastEvent } = useAskAIs 智能客服系統({
baseUrl: "https://cs.askais.com",
identify: { appId: "ws_abc", email: user.email },
});共用設計
- 每個 App 一個
SingChatClient(若在同一執行檔中多租戶,則每個工作區一個) identify()回傳 JWT、聯絡人和 WS URL- WebSocket 以指數退避自動重連,25 s 心跳
- 事件以型別化列舉 / 密封類別形式呈現——無需字串比對
- 錯誤皆為型別化(
SingChatError/SingChatException)
路線圖(行動端 UI 元件)
目前的 SDK 僅包含邏輯——自備你的聊天 UI。預先建置的聊天檢視(SwiftUI、Jetpack Compose、Flutter 元件以及 React Native 元件)已列入路線圖。