版本变更记录 (CHANGELOG · iOS)
版本变更记录 (CHANGELOG · iOS)
iOS SDK 与 Java SDK 保持同版本号发布。本 CHANGELOG 只记录 iOS 独有的变更;跨语言共享的核心变化(例如 v1.4.0 的鉴权标准化)请参阅 Java v1.5.0 CHANGELOG。
v1.5.0-SNAPSHOT (当前开发版本)
⚠️ 本版本为开发中(SNAPSHOT)版本,下列 v1.5.0 新增能力(超视距遥操 / 扩展技能)尚未正式上线,接口可能调整。
发布日期: 开发中
🆕 新增能力:超视距遥操(Teleop)
iOS SDK 首个正式对外的 v1.5.0 版本,与 Java v1.5.0 完全对齐;在既有的被动交互 / 主动交互两条路径之外,正式对外开放第三条交互路径 —— 超视距遥操。
- 新增 Swift 类(
Sources/LinksoulAgentSDK/Teleop):TeleopRequest—— 请求实体,方法:enter(param:enterCallback:timeout:)/startAudio(param:)/appendAudioDelta(eventId:audioDelta:)/doneAudio(eventId:)/keepalive(keepaliveCallback:timeout:)/exit(exitCallback:timeout:)open class TeleopEnterCallback——open func onEnterAck(teleopId:eventId:code:msg:)open class TeleopKeepaliveCallback——open func onKeepaliveAck(teleopId:eventId:code:msg:)open class TeleopExitCallback——open func onExitAck(teleopId:eventId:code:msg:)
- 新增
AgentSdk公开方法:registerTeleop(_:)/unregisterTeleop(teleopId:) - 新增
AgentSdkTeleopMgr.shared单例(全局 request 索引) - 新增
Client/TeleopMsgHandler.swift(网关下行消息路由) - 新增
AgentPolicy.teleop(wire 值"teleop") - 新增 9 个
AgentEventType:.teleopEnter/.teleopEnterAck/.teleopAudioStart/.teleopAudioDelta/.teleopAudioDone/.teleopKeepalive/.teleopKeepaliveAck/.teleopExit/.teleopExitAck - 新增
IdGenerator.generateTeleopId()(前缀teleop_) - 新增示例 target:
Examples/TeleopExample/main.swift—— 最小 enter→...→exit 流程Examples/TeleopSimulator/main.swift—— 长压测样例
调用契约(与 Java v1.5.0 一致)
text
register → enter → (startAudio(param:) → appendAudioDelta* → doneAudio)+ → exit → unregister
keepalive 可在 enter 之后任意时刻调用(建议每 10 秒一次)
enter/keepalive/exit由 SDK 侧回调收 ACK;code == 0成功、code == 1000表示 SDK 本地连接已 closed、code == -1服务端拒绝;startAudio/appendAudioDelta/doneAudio是 fire-and-forget(无 ACK);startAudio(param:)支持在每段音频开始时传递role("male"/"female")、threshold(-14 ~ 14)等音色 / VAD 参数;keepalive(keepaliveCallback:timeout:)发送一次在线探活;onKeepaliveAck中code == 0表示机器人在线,code == -1表示离线;业务侧应定时调用(建议每 10 秒),掉线后主动exit+unregisterTeleop;timeout参数当前仅做占位(clamp 到 ≥50ms)。
iOS 侧实现要点
TeleopEnterCallback/TeleopExitCallback采用open class(非 protocol),便于共享timeout/agentId/updateTs等基类字段;TeleopRequest.linkskyClient用weak var,避免与AgentSdk之间的循环强引用;TeleopRequest.updateTs由NSLock保护,兼容多线程发送。
🆕 新增能力:扩展技能(ExtSkill)
iOS SDK v1.5.0 同步开放扩展技能交互路径:应用通过 SDK 查询机器人上注册的扩展技能列表,并按需触发执行,获取三段式回执(ack + state + result)。
- 新增 Swift 类(
Sources/LinksoulAgentSDK/ExtSkill):ExtSkillRequest—— 请求实体,方法:query(queryCallback:timeout:)/invoke(extSkillId:input:invokeCallback:timeout:)open class ExtSkillQueryCallback——open func onQueryResult(agentId:requestId:eventId:code:msg:result:)open class ExtSkillInvokeCallback——open func onInvokeAck(agentId:requestId:eventId:code:msg:)+open func onState(agentId:requestId:eventId:stateName:stateValue:)+open func onInvokeResult(agentId:requestId:eventId:code:msg:param:)
- 新增
AgentSdk公开方法:registerExtSkill(_:)/unregisterExtSkill(requestId:) - 新增
AgentPolicy.extSkill(wire 值"extskill") - 新增 6 个
AgentEventType:.extSkillQuery/.extSkillQueryResult/.extSkillInvoke/.extSkillInvokeAck/.extSkillReportState/.extSkillInvokeResult - 新增
IdGenerator.generateExtSkillRequestId()(前缀extskill_) - 新增文档:
ExtSkill 调用契约
text
register → query → (invoke → ack → state* → result)* → unregister
agentId+requestId标识一个 ExtSkill 会话;query拉取技能清单,onQueryResult回调返回code == 0成功;invoke触发技能执行,三段回执:onInvokeAck(服务端已受理)→onState(执行期间技能侧通过agentsdk.ext_skill.report_state多次上报进度,可选)→onInvokeResult(执行完成,param携带结果);timeout参数当前仅做占位(clamp 到 ≥50ms)。
iOS 侧 ExtSkill 实现要点
ExtSkillQueryCallback/ExtSkillInvokeCallback采用open class(非 protocol),与 Teleop 回调风格一致;ExtSkillRequest.linkskyClient用weak var,避免循环强引用。
兼容性
- iOS SDK 从 v1.5.0 起对外发布;此前无正式版本对外供开发者引用。
依赖版本
| 依赖 | 版本 |
|---|---|
| Swift | 5.7+ |
| 平台 | iOS 13+ / macOS 10.15+ / tvOS 13+ / watchOS 6+ |
| 系统依赖 | Foundation 仅 |
| 第三方依赖 | 无 |