快速开始 · iOS

快速开始 · iOS

5 分钟接入 iOS / macOS Swift SDK。已经熟悉 Java SDK 快速开始 的同学可以直接跳到 SwiftPM 引入 + 完整接入代码。

环境要求

项要求
Swift5.7+
Xcode14.1+
最低平台iOS 13 / macOS 10.15 / tvOS 13 / watchOS 6
依赖Foundation(系统自带),无第三方

SwiftPM 引入

Package.swift(应用 / 库均适用):

swift
// swift-tools-version:5.7
import PackageDescription

let package = Package(
    name: "MyApp",
    dependencies: [
        .package(url: "https://<your-git-host>/linksoul-agentsdk.git",
                 from: "1.5.0"),
    ],
    targets: [
        .target(name: "MyApp", dependencies: [
            .product(name: "LinksoulAgentSDK", package: "linksoul-agentsdk"),
        ])
    ]
)

Xcode GUI:File → Add Package Dependencies…,填仓库地址 / 分支,勾选 LinksoulAgentSDK product 到目标 target。

Info.plist 权限

遥操场景使用麦克风:

xml
<key>NSMicrophoneUsageDescription</key>
<string>遥操会话需要采集操作员语音</string>

如果要访问自定义域名 / 内网 HTTP,另外配 NSAppTransportSecurity。

完整接入代码

swift
import Foundation
import LinksoulAgentSDK

let url = "wss://open.agibot.com/api/V1/open-portal/app/wss/agent-sdk"
let appId = "<灵心开放平台应用 appId>"
let appKey = "<灵心开放平台应用 appKey>"
let appSecret = "<灵心开放平台应用 appSecret>"
let agentId = "<目标机器人 agentId>"

let agentSdk = AgentSdk.create(url: url, appId: appId, appKey: appKey, appSecret: appSecret)

final class AuthCallback: AgentAuthCallback {
    func onAuthState(appId: String, code: Int, msg: String) {
        print("onAuthState => code=\(code), msg=\(msg)")
    }
}
agentSdk.registerAuth(AuthCallback())
agentSdk.initialize()

// 之后按需注册被动 / 主动 / 遥操
Thread.sleep(forTimeInterval: 2.0)

遥操使用完整流程见 超视距遥操指南 与 示例。

单例注意事项

AgentSdk.create(url:appId:appKey:appSecret:) 按 appId 维护单例:同 appId 重复 create 返回同一个实例。多 App / 多机器人场景请确保 appId 不同或复用同一个实例。

常见问题

  • LinksoulAgentSDK 找不到:确认 target 已经 link LinksoulAgentSDK product;Xcode 有时需要 File → Packages → Reset Package Caches。
  • WebSocket 未建立:确认 Info.plist 网络配置允许 wss://(默认允许),并且 onAuthState 报 code == 0;网络代理场景(如企业 VPN)可能需要额外配置。
  • 命令行示例跑不起来:Swift Package Manager 里 .executableTarget 需要 platforms: [.iOS(.v13), .macOS(.v10_15)] 声明;示例 TeleopExample 依赖 RunLoop.main.run() 保活主线程。