OpenClaw iOS App Review 全流程实测指南:从 Gateway 接入、审批、语音到推送与权限验收
2026/9/12 17:18:02 网站建设 项目流程

OpenClaw iOS App Review 全流程实测指南:从 Gateway 接入、审批、语音到推送与权限验收

【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 🦞项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw

OpenClaw 的 iOS 客户端是连接移动端与 OpenClaw Gateway 的入口,而面向 Apple App Review 的验收流程则覆盖了这款应用最核心的端到端能力:设置码接入 Gateway、执行审批、实时语音对讲、后台语音续播、锁屏 Live Activity、远程推送唤醒、设备权限,以及 Share Sheet 分享。本文以仓库内 apps/ios/APP-REVIEW-NOTES.md 为骨架,结合 iOS 端源码(apps/ios/Sources)逐项拆解每一步操作、预期结果与底层实现,帮助你在真机上完整复现一次 App Review 演练。

1. 验收前的准备:Demo 账号与设置码

整个验收流程围绕“live OpenClaw iOS App Review Gateway”展开。按照原文档,评审者只需在 OpenClaw App 的Notes字段中使用官方提供的单一设置码字符串即可完成接入。这个设置码是预先生成的一串代码,内部已包含:

  • 公开的 Gateway 主机地址(public Gateway host);
  • 用于首次连接的设置凭据(setup credential)。

它省去了手工填写主机、端口、证书等多项参数的繁琐过程,对应 iOS 端“设置码”这一整套引导体系(见 apps/ios/Sources/Onboarding/OnboardingWizardView.swift,其中包含Paste setup codeApply Setup Code等界面文案,以及 apps/ios/Sources/Gateway/GatewayTrustPromptAlert.swift 中的Trust and connect信任提示)。

2. 设置接入走查(Setup Walkthrough)

按以下步骤在真机上完成首次接入(对应原文档Setup Walkthrough小节):

  1. 打开 OpenClaw App,点击Continue
  2. Connect Gateway界面点击Set Up Manually
  3. Setup Code区块点击Paste setup code输入框。
  4. 将 App Review 提交Notes字段中的设置码粘贴进去。
  5. 点击Apply Setup Code
  6. 若出现Trust and connect,点击Trust and connect(信任并连接)。
  7. 等待进入Connected界面。
  8. Connected界面点击Open OpenClaw
  9. 确认Control界面显示Gateway Online
  10. 依次进入SettingsApprovalsOpen NotificationsEnable Notifications
  11. Enable OpenClaw Hosted Push Relay?弹窗中点击Continue
  12. 若 iOS 询问是否允许 OpenClaw 发送通知,点击Allow
  13. 确认Notifications显示为Enabled

实现细节:设置码与手动连接两条路径共同由 apps/ios/Sources/Onboarding/OnboardingWizardConnectionSections.swift 等向导模块驱动;设置码粘贴框与Apply Setup Code动作对应 apps/ios/Sources/Design/SettingsProTabSections.swift 中Paste setup code的输入实现。此环节同时完成了 Gateway 在线状态确认与通知(推送)权限的首次申请,为后续审批、推送唤醒等演示打基础。

3. 聊天与审批演示(Chat / Approval Demo)

3.1 Chat 基础验证

  1. 点击Chat标签页。
  2. 点击标注为Message main...的输入框。
  3. 发送这条精确消息:
Start Apple review checklist.

预期结果:助手回复可用的 App Review 演示列表。

3.2 执行审批(Approval Demo)

  1. 点击Chat标签页,在Message main...输入框发送:
Run the approval demo.
  1. 预期结果:iPhone 弹出Exec approval required(执行审批请求),展示的是一条无害命令:
printf 'OpenClaw App Review approval demo complete\n'
  1. 点击Allow Once,随后 Chat 回复:
The approval demo completed.

实现细节:审批能力属于 OpenClaw 的“执行审批”(Exec Approval)体系。iOS 端通过 apps/ios/Sources/Push/ExecApprovalNotificationBridge.swift 将待审批执行转发到通知层,配合推送/本地通知呈现审批请求;审批通过后 Gateway 侧继续执行该命令并把结果回传聊天。Allow Once属于一次性授权,不改变后续命令的默认审批策略。

4. 语音对讲(Talk)与后台音频

4.1 基础语音对讲

  1. 点击Talk标签页,点击Start Talk
  2. 若 iOS 请求麦克风权限,点击Allow;若请求语音识别(Speech Recognition)权限,同样点击Allow
  3. 确认界面切换为Ready to talk并显示Stop Talk
  4. 说出:
Summarize this review setup in one sentence.
  1. 预期结果:助手通过语音回复。说完后点击Stop Talk

4.2 Talk + 后台音频(Background Audio)

  1. 点击Talk标签页。
  2. 确认扬声器按钮为高亮状态。
  3. 确认后台聆听(background-listening)按钮为高亮状态。
  4. 点击Start Talk,按提示允许麦克风与语音识别权限。
  5. 确认Stop Talk可见后说:
Tell me when you can hear me.
  1. 关键步骤:在 Talk 进行中,返回主屏幕或锁屏让 OpenClaw 进入后台(不要强制退出 App)。
  2. 继续说话并等待助手的音频回复。

预期结果:实时 Talk 音频在 App 进入后台后依然持续。重新打开 OpenClaw,确认 Talk 仍处于活动状态,再点击Stop Talk

实现细节:后台持续语音依赖 iOS 的持续后台音频会话与语音识别能力。iOS 端语音模块位于 apps/ios/Sources/Voice,并通过 apps/ios/Sources/LiveActivity/VoiceLiveActivityCoordinator.swift 将语音状态同步到 Live Activity;apps/ios/Sources/StartLiveVoiceIntent.swift 还提供了通过 Siri 快捷指令/App Intent 直接发起语音会话的入口。锁屏后语音会话能够继续,说明应用正确配置了相应的后台模式。

5. Gateway 状态与实例确认(Gateway Status)

  1. 点击Control标签页,再点击Instances
  2. 确认界面显示Gateway online
  3. 确认至少有一个agent实例处于连接状态。
  4. 确认当前这台 iPhone 评审设备出现在已连接实例列表中。

实现细节:实例列表来自 Gateway 的实时状态通道。iOS 端 apps/ios/Sources/Status 与 apps/ios/Sources/Node 负责订阅并展示 Gateway/Agent 的在线状态,每台设备(含本机)都会作为一个可识别的节点/实例出现。这一步同时验证了“设置码接入 → 建立长连接 → 状态上报”整条链路是通的。

6. 锁屏 Live Activity / 灵动岛(Dynamic Island)

  1. 点击Settings,点击Reconnect
  2. 立即返回主屏幕或锁屏,让 OpenClaw 进入后台。
  3. 在 Gateway 重连期间观察锁屏或灵动岛。

预期结果:重连期间,iOS 可展示一个名为OpenClaw的 Live Activity,内容为连接状态(如Connecting...Reconnecting...)。在快速网络下该状态可能一闪而过——因为 Gateway 重连成功后,OpenClaw 会结束这条 Live Activity。

实现细节:Live Activity 由 apps/ios/Sources/LiveActivity/LiveActivityManager.swift 统一管理,它是连接、注意力、工具执行与语音状态的单一 ActivityKit 呈现入口

  • 各状态生产者独立上报,由LiveActivityPresentationArbiter仲裁谁可见,避免低优先级更新盖掉紧急状态;
  • 连接状态对应showConnecting,会把Connecting.../Reconnecting...归一化为语义化的.connecting/.reconnecting(见connectingPresentation),未知文案才原样透传;
  • 更新采用“最多一个在途更新 + 一个可替换待更新”的合并策略(enqueueLatestUpdate),防止 ActivityKit 慢写入堆积过期队列;
  • 语音与工具类 Live Activity 通过心跳任务持续刷新staleDate(语音约 240 秒、工具约 240 秒),让锁屏呈现不会过期;
  • 启动时会hydrateCurrentAndPruneDuplicates,从系统恢复正在活动的 Activity 并清理重复项。

属性与状态模型定义在 apps/ios/Sources/LiveActivity/OpenClawActivityAttributes.swift,重连触发清理连接状态后由reconcile决定呈现或结束。

7. 推送通知与推送唤醒(Push Notification / Push Wake)

7.1 推送通知演示

  1. 点击Chat标签页,在Message main...输入框发送:
Start push notification demo.
  1. 立即将 OpenClaw 切到后台并锁屏(不要强制退出 App)。
  2. 预期结果:锁屏收到可见的OpenClaw通知,正文为:
OpenClaw App Review push notification demo
  1. 点击通知(如提示则解锁 iPhone)。若 OpenClaw 打开在Control页,切到Chat,预期 Chat 回复:
The push notification demo completed.

7.2 推送唤醒与节点状态演示(Push Wake / Status)

  1. Chat标签页发送:
Start push wake demo.
  1. 立即切到后台并锁屏(不要强制退出 App)。
  2. 等待锁屏出现OpenClaw通知——通常在消息发出后约 10 秒出现。
  3. 点击通知(如提示则解锁)。若打开在Control页,切到Chat
  4. 预期结果:App 重连到 live Gateway,Chat 回复:
The push wake and node status demo completed.

实现细节:推送体系位于 apps/ios/Sources/Push,支持两种传输模式(由 apps/ios/Sources/Push/PushBuildConfig.swift 的transport决定):

  • direct(直连):App 直接把 APNs token 与 topic 注册给 Gateway(见DirectGatewayPushRegistrationPayload);
  • relay(托管中继):通过 OpenClaw Hosted Push Relay 转发,注册负载包含relayHandlesendGrantgatewayDeviceIdinstallationId等字段(见RelayGatewayPushRegistrationPayload与 apps/ios/Sources/Push/PushRelayClient.swift),这正是接入时Enable OpenClaw Hosted Push Relay?弹窗背后的能力。

apps/ios/Sources/Push/PushRegistrationManager.swift 负责根据构建配置生成 Gateway 注册负载并维护注册状态;APNs 令牌等敏感信息由 apps/ios/Sources/Push/PushRelayKeychainStore.swift 存入钥匙串。锁屏通知在 App 被系统挂起时送达,点击通知后 App 重新唤起并重连 Gateway,实现“推送唤醒”——这就是 Push Wake 演示验证的核心链路;通知打开时还会把BackgroundAliveBeacon等后台存活信标状态一并带回(见 apps/ios/Sources/Push/BackgroundAliveBeacon.swift)。

8. 设备权限与隐私(Device Permissions)

OpenClaw不在引导期展示聚合权限页。可选权限按“用到才申请”的时机触发:评审者调用相关功能,或在 Settings 中对某项权限点击Continue时,立即弹出对应的原生 iOS 授权弹窗,中间没有额外的 OpenClaw 对话框或延迟动作。

8.1 权限检查清单

  1. 点击SettingsPermissions
  2. 确认以下常驻控制项可用:
    • Camera(相机)
    • Location(定位),含OffWhile UsingAlways三档
    • Keep Awake(保持唤醒)
  3. 确认始终可见的Apple Health区块将集成标识为Apple Health Summaries
  4. 展开Privacy & Access,确认以下控制项在未被申请过时显示Continue
    • Contacts(通讯录)
    • Photos(照片)
    • Calendar (Add Events)(日历-添加事件)
    • Calendar (View Events)(日历-查看事件)
    • Reminders(提醒事项)
  5. 对任意未申请过的权限点击Continue,确认对应的原生 iOS 授权弹窗立即出现,然后在系统弹窗中做出选择。

若评审设备此前已对该权限做过决定,则对应行显示当前状态或管理操作,而不再显示Continue

实现细节:iOS 端将各系统框架(Contacts / Photos / EventKit / HealthKit)的原生授权状态统一归一为granted / limited / notRequested / denied四种语义(见 apps/ios/Sources/Permissions/DevicePermissions.swift)。例如 EventKit 的writeOnly(仅添加)会映射为limited,用于区分“只能添加事件”与“完整读写”;Calendar (Add Events)Calendar (View Events)分别对应写入与读取两种授权语义。请求动作由 apps/ios/Sources/Permissions/PermissionRequestBridge.swift 与 apps/ios/Sources/Permissions/EventKitPermissionRequester.swift 承接,做到“点击 Continue → 立即弹出系统弹窗”。

8.2 可选的 Apple Health 摘要

Apple Health Summaries默认关闭。在SettingsPermissions中,始终可见的Apple Health区块会标明该功能及其使用的数据类型。点击Enable Apple Health Summaries会打开 Apple 的 Health 授权面板。

OpenClaw 仅向 Apple Health 申请只读访问以下数据:步数(steps)、睡眠(sleep)、静息心率(resting heart rate)、体能训练(workouts)。聚合在设备端完成,只有用户主动请求的today摘要会经用户自己的 Gateway 与所配置的 AI 提供方发出;不支持单个样本、来源、元数据、临床记录、后台摄取或写入。Gateway 侧还额外要求health.summary出现在gateway.nodes.allowCommands中,才会放行该命令。

两点重要声明:

  • 应用不会因为查询结果为空就推断读取授权状态——HealthKit 刻意让“被拒绝”与“无数据”在读取侧无法区分,因此 OpenClaw 只记录用户显式的共享选择(见 apps/ios/Sources/Health/HealthSummaryService.swift 中health.summary.enabled开关与HealthAuthorization.enable()的注释逻辑);
  • 该功能仅用于个人健康与健身摘要,不用于诊断或医疗建议

实现细节:健康模块在 apps/ios/Sources/Health/HealthSummaryService.swift。HealthAuthorization.readTypes恰好对应上述四类只读类型;聚合逻辑值得注意:

  • 步数使用HKStatisticsQueryDescriptor.cumulativeSum
  • 静息心率使用.discreteAverage(单位count/min);
  • 睡眠通过HKSampleQueryDescriptor读取sleepAnalysis分类样本,只保留HKCategoryValueSleepAnalysis的入睡区间,并调用mergedDuration合并重叠区间,确保同一分钟在离机聚合结果中不会被重复计数;
  • 体能训练统计条数与总时长,且只统计“今天零点到当前时刻”(dateRange返回DateInterval(start: 今天零点, end: now))。

9. 分享扩展(Share Sheet)

  1. 打开 Safari,访问https://example.com
  2. 点击 Safari 工具栏的More按钮,再点击Share
  3. 在分享面板中点击OpenClaw
  4. 确认 OpenClaw 分享扩展出现,并显示Edit text, then tap Send.Send to OpenClaw
  5. 点击Send to OpenClaw

预期结果:OpenClaw 分享扩展将分享的 Safari 页面发送到 live review Gateway,并显示Sent to OpenClaw.。返回 OpenClaw Chat 即可看到分享的Example Domain页面。

实现细节:分享扩展是 iOS App Extension 能力,把网页内容(URL/标题等)封装后经 Gateway 会话送入助手,属于“任意来源内容收口到 OpenClaw 处理”的典型入口。此环节同时验证了 App Extension 与主 App 之间的数据/会话衔接。

10. 附录:验收清单速查

模块核心验证点预期结果
设置接入设置码粘贴 → Apply → TrustConnectedControl显示Gateway Online
通知启用Settings → Approvals → Notifications显示Enabled
ChatStart Apple review checklist.助手回复演示列表
审批Run the approval demo.+Allow Once弹出Exec approval required,Chat 回复The approval demo completed.
TalkStart Talk+ 语音指令语音回复,Stop Talk可结束
Talk 后台后台/锁屏继续对话语音持续,重开 App 仍可Stop Talk
Gateway 状态Control → InstancesGateway online,agent 与 iPhone 均在列
Live ActivitySettings → Reconnect 后立即锁屏锁屏/灵动岛显示Connecting.../Reconnecting...
推送通知Start push notification demo.后锁屏锁屏收到OpenClaw App Review push notification demo
推送唤醒Start push wake demo.后锁屏约 10 秒收到通知,点开后重连并回复The push wake and node status demo completed.
权限Settings → Permissions 逐项Continue立即弹出对应原生 iOS 授权弹窗
Apple Health开启 Summaries 并授权只读设备端聚合today摘要,经 Gateway 发出
Share SheetSafari 分享到 OpenClaw扩展显示Sent to OpenClaw.,Chat 出现Example Domain

验收纪律:整个流程中,凡要求“切到后台/锁屏”的环节(Talk 后台、推送通知、推送唤醒、Live Activity),都必须返回主屏幕或锁屏而不是强制退出 App——后台挂起(suspended)状态正是这些演示所要验证的 iOS 能力边界。

参考源码位置

  • 验收文档:apps/ios/APP-REVIEW-NOTES.md
  • 引导接入:apps/ios/Sources/Onboarding/OnboardingWizardView.swift、apps/ios/Sources/Onboarding/OnboardingWizardConnectionSections.swift
  • 网关信任:apps/ios/Sources/Gateway/GatewayTrustPromptAlert.swift
  • Live Activity:apps/ios/Sources/LiveActivity/LiveActivityManager.swift、apps/ios/Sources/LiveActivity/OpenClawActivityAttributes.swift、apps/ios/Sources/LiveActivity/VoiceLiveActivityCoordinator.swift
  • 推送:apps/ios/Sources/Push/PushRegistrationManager.swift、apps/ios/Sources/Push/PushBuildConfig.swift、apps/ios/Sources/Push/PushRelayClient.swift、apps/ios/Sources/Push/ExecApprovalNotificationBridge.swift
  • 权限:apps/ios/Sources/Permissions/DevicePermissions.swift、apps/ios/Sources/Permissions/PermissionRequestBridge.swift
  • 健康:apps/ios/Sources/Health/HealthSummaryService.swift
  • 语音:apps/ios/Sources/Voice

【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 🦞项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询