iOS ่ฐ่ฏๆข้ SDK๏ผ็จไบๅฎๆถๆ่ทๅๅๆ iOS App ็็ฝ็ป่ฏทๆฑใๆฅๅฟใๆฐๆฎๅบ็ญ่ฐ่ฏไฟกๆฏใ
Important
ๆฌ้กน็ฎๅ จ้จไปฃ็ ๅๆๆกฃๅ็ฑ Agent AI ็ๆ
- HTTP/HTTPS ่ฏทๆฑๆ่ท - ่ชๅจๆฆๆชๆๆ็ฝ็ป่ฏทๆฑ๏ผๅ ๆฌ URLSessionใAlamofire ็ญ
- WebSocket ็ๆง - ๆ่ท WebSocket ่ฟๆฅๅๆถๆฏ
- ่ฏทๆฑ/ๅๅบ่ฏฆๆ - ๅฎๆด็ HeadersใBodyใTiming ไฟกๆฏ
- gRPC & Protobuf ๆฏๆ - ่ชๅจ่งฃๆ Protobuf ๆ ผๅผๆฐๆฎ
- ่ฏทๆฑ Mock - ๆฆๆช่ฏทๆฑๅนถ่ฟๅ่ชๅฎไนๅๅบ
- ๅปถ่ฟๆณจๅ ฅ - ๆจกๆ็ฝ็ปๅปถ่ฟ
- ๆกไปถๅน้ - ๆฏๆ URLใMethodใHeader ็ญๅค็งๅน้ ่งๅ
- ่ฏทๆฑๆญ็น - ๆๅ่ฏทๆฑๅนถๅ ่ฎธไฟฎๆน
- ๅๅบๆญ็น - ๆฆๆชๅๅบๅนถๅ ่ฎธไฟฎๆนๅ่ฟๅ
- ๅฎๆถ็ผ่พ - ๅจ Web UI ไธญ็ดๆฅ็ผ่พ่ฏทๆฑ/ๅๅบๅ ๅฎน
- ๅปถ่ฟๆณจๅ ฅ - ๆจกๆ็ฝ็ปๅปถ่ฟ
- ่ถ ๆถๆจกๆ - ๆจกๆ่ฏทๆฑ่ถ ๆถ
- ้่ฏฏ็ ๆณจๅ ฅ - ่ฟๅๆๅฎ็ HTTP ้่ฏฏ็
- ่ฟๆฅ้็ฝฎ - ๆจกๆ็ฝ็ปไธญๆญ
- ๆฐๆฎๆๅ - ๆจกๆๅๅบๆฐๆฎๆๅ
- CocoaLumberjack ้ๆ - ่ชๅจๆ่ท DDLog ๆฅๅฟ
- OSLog ๆฏๆ - ๆ่ท็ณป็ปๆฅๅฟ
- ่ชๅฎไนๆฅๅฟ - ๆฏๆ่ชๅฎไนๆฅๅฟ็บงๅซๅๅ็ฑป
- SQLite ๆต่ง - ๆฅ็ App ๅ ็ SQLite ๆฐๆฎๅบ
- ่กจๆฐๆฎๆฅ่ฏข - ๆฏๆๅ้กตใๆๅบใSQL ๆฅ่ฏข
- Schema ๆฅ็ - ๆฅ็่กจ็ปๆ
ๅจ Package.swift ไธญๆทปๅ ไพ่ต๏ผ
dependencies: [
.package(url: "https://github.com/aspect-build/DebugProbe.git", from: "1.0.0")
]ๆๅจ Xcode ไธญ๏ผ
- File โ Add Package Dependencies
- ่พๅ ฅไปๅบ URL
- ้ๆฉ็ๆฌๅนถๆทปๅ ๅฐ็ฎๆ
import DebugProbe
// ๅจ AppDelegate ๆ App ๅ
ฅๅฃๅคๅๅงๅ
func application(_ application: UIApplication, didFinishLaunchingWithOptions...) -> Bool {
#if DEBUG
let config = DebugProbe.Configuration(
hubURL: URL(string: "ws://127.0.0.1:8081/debug-bridge")!,
token: "your-device-token"
)
DebugProbe.shared.start(configuration: config)
#endif
return true
}var config = DebugProbe.Configuration(
hubURL: URL(string: "ws://localhost:8081/debug-bridge")!,
token: "device-token"
)
// ็ฝ็ปๆ่ทๆจกๅผ๏ผ้ป่ฎค่ชๅจ๏ผ
config.networkCaptureMode = .automatic // ่ชๅจๆฆๆชๆๆ่ฏทๆฑ
// config.networkCaptureMode = .manual // ๆๅจๆณจๅ
ฅ protocolClasses
// ็ฝ็ปๆ่ท่ๅด
config.networkCaptureScope = .all // HTTP + WebSocket
// config.networkCaptureScope = .http // ไป
HTTP
// config.networkCaptureScope = .webSocket // ไป
WebSocket
// ๆฅๅฟๆ่ท
config.enableLogCapture = true
// ๆไน
ๅ๏ผๆญ็บฟ้่ฟๅๆขๅคๅ้๏ผ
config.enablePersistence = true
config.maxPersistenceQueueSize = 100_000
config.persistenceRetentionDays = 3
DebugProbe.shared.start(configuration: config)import DebugProbe
// ๆณจๅ่ฆๆฃๆฅ็ๆฐๆฎๅบ
DatabaseRegistry.shared.register(
path: databasePath,
name: "MyDatabase",
kind: .main,
isSensitive: false
)// ๅ้่ชๅฎไน่ฐ่ฏๆฅๅฟ
DebugProbe.shared.log(
level: .info,
message: "็จๆท็ปๅฝๆๅ",
subsystem: "Auth",
category: "Login"
)DebugProbe ้็จๆไปถๅๆถๆ๏ผๆๆๅ่ฝๆจกๅ๏ผ็ฝ็ปใๆฅๅฟใMock ็ญ๏ผๅไปฅๆไปถๅฝขๅผๅฎ็ฐ๏ผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DebugProbe SDK โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โ
โ โ NetworkPlugin โ โ LogPlugin โ โWebSocketPluginโ โ
โ โ (HTTP ๆ่ท) โ โ (ๆฅๅฟๆ่ท) โ โ (WS ็ๆง) โ โ
โ โโโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโโ โ
โ โ โ โ โ
โ โผ โผ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ EventCallbacks โ โ
โ โ โข onHTTPEvent / onLogEvent / onWebSocketEvent (ๆ่ทๅฑ โ ๆไปถๅฑ) โ โ
โ โ โข onDebugEvent (ๆไปถๅฑ โ BridgeClient) โ โ
โ โ โข mockHTTPRequest / mockWSFrame (Mock ๆฆๆช) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ DebugBridgeClient โ โ
โ โ โข ๅ
็ฝฎไบไปถ็ผๅฒๅบ (ไธขๅผ็ญ็ฅใๆไน
ๅ) โ โ
โ โ โข WebSocket ้ไฟก โ โ
โ โ โข ๆน้ๅ้ใๆญ็บฟ้่ฟ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ WebSocket
โผ
โโโโโโโโโโโโโโโ
โ DebugHub โ
โ (ๆๅก็ซฏ) โ
โโโโโโโโโโโโโโโ
| ๆไปถ ID | ๆไปถๅ็งฐ | ๅ่ฝ |
|---|---|---|
network |
NetworkPlugin | HTTP/HTTPS ่ฏทๆฑๆ่ท |
log |
LogPlugin | ๆฅๅฟๆ่ท๏ผDDLog, OSLog๏ผ |
websocket |
WebSocketPlugin | WebSocket ่ฟๆฅ็ๆง |
mock |
MockPlugin | HTTP/WS Mock ่งๅ็ฎก็ |
database |
DatabasePlugin | SQLite ๆฐๆฎๅบๆฃๆฅ |
breakpoint |
BreakpointPlugin | ่ฏทๆฑ/ๅๅบๆญ็น่ฐ่ฏ |
chaos |
ChaosPlugin | ๆ ้ๆณจๅ ฅ๏ผChaos Engineering๏ผ |
DebugProbe/
โโโ Sources/
โ โโโ Core/
โ โ โโโ DebugProbe.swift # ไธปๅ
ฅๅฃ
โ โ โโโ DebugBridgeClient.swift # WebSocket ้ไฟก + ไบไปถ็ผๅฒ
โ โ โโโ EventPersistenceQueue.swift # ไบไปถๆไน
ๅ
โ โ โโโ Plugin/
โ โ โโโ PluginManager.swift # ๆไปถ็ฎก็ๅจ
โ โ โโโ EventCallbacks.swift # ไบไปถๅ่ฐไธญๅฟ
โ โ โโโ PluginBridgeAdapter.swift # ๅฝไปค่ทฏ็ฑ้้
ๅจ
โ โโโ Plugins/
โ โ โโโ Engines/
โ โ โ โโโ BreakpointEngine.swift # ๆญ็นๅผๆ
โ โ โ โโโ ChaosEngine.swift # ๆ
้ๆณจๅ
ฅๅผๆ
โ โ โ โโโ MockRuleEngine.swift # Mock ่งๅๅผๆ
โ โ โโโ NetworkPlugin.swift # ็ฝ็ปๆไปถ
โ โ โโโ LogPlugin.swift # ๆฅๅฟๆไปถ
โ โ โโโ WebSocketPlugin.swift # WebSocket ๆไปถ
โ โ โโโ MockPlugin.swift # Mock ๆไปถ
โ โ โโโ DatabasePlugin.swift # ๆฐๆฎๅบๆไปถ
โ โ โโโ BreakpointPlugin.swift # ๆญ็นๆไปถ
โ โ โโโ ChaosPlugin.swift # Chaos ๆไปถ
โ โโโ Network/
โ โ โโโ NetworkInstrumentation.swift # HTTP ๆฆๆชๅบ็ก่ฎพๆฝ
โ โ โโโ WebSocketInstrumentation.swift # WebSocket ๆฆๆชๅบ็ก่ฎพๆฝ
โ โโโ Log/
โ โ โโโ DDLogBridge.swift # CocoaLumberjack ๆกฅๆฅ
โ โโโ Database/
โ โ โโโ DatabaseRegistry.swift # ๆฐๆฎๅบๆณจๅ
โ โโโ Models/
โ โโโ ... # ๆฐๆฎๆจกๅ
โโโ Package.swift
DebugProbe ้่ฆ้ ๅ DebugHub ๆๅก็ซฏไฝฟ็จ๏ผ
- ๅฏๅจ DebugHub ๆๅกๅจ
- ๅจ iOS App ไธญ้ ็ฝฎ DebugProbe ่ฟๆฅๅฐ DebugHub
- ๆๅผ Web UI (http://localhost:8081) ๆฅ็่ฐ่ฏไฟกๆฏ
- iOS 14.0+
- macOS 12.0+
- Swift 5.9+
- Xcode 15.0+
- CocoaLumberjack - ็จไบๆฅๅฟๆ่ท้ๆ
MIT License
- DebugPlatform - ๅฎๆด็่ฐ่ฏๅนณๅฐ๏ผๅ ๅซ DebugHub ๆๅก็ซฏๅ Web UI๏ผ