关于 axiom-integration
axiom-integration 是面向 Claude Code 的 iOS 系统集成技能,为 App Intents、小组件、购买、通知和后台任务等功能提供分类指南。
主要功能
- 01App Intents 与 Siri 参考资料
- 02小组件和 Live Activities 指引
- 03StoreKit 与应用内购买内容
- 04EventKit 与 Contacts 参考资料
- 05通知和后台任务指南
适用场景
- 01添加 Siri 或 App Shortcuts 支持
- 02实现小组件或 Live Activities
- 03构建应用内购买流程
- 04排查推送或后台任务行为
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ charleswiltgen/ axiom --skill axiom-integration安装后在 Claude Code 中输入/axiom-integration确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
skills/accessorysetupkit-ref.mdaccessorysetupkit.mdalarmkit-ref.mdapp-discoverability.mdapp-intents-ref.mdapp-schemas-ref.mdapp-shortcuts-ref.mdbackground-assets-ref.mdbackground-assets.mdbackground-processing-diag.mdbackground-processing-ref.mdbackground-processing.mdcallkit-livecommunicationkit-ref.mdcallkit-livecommunicationkit.mdcontacts-ref.mdcontacts.mdcore-spotlight-ref.mdeventkit-ref.mdeventkit.mdextensions-widgets-ref.mdextensions-widgets.mdiap-auditor.mdin-app-purchases.mdlive-activities-ref.mdlive-activities.mdlocal-push-connectivity.mdlocalization-research-ref.mdlocalization.mdprivacy-ux.mdpush-notifications-diag.md详细介绍
iOS 系统集成
任何涉及 iOS 系统集成的工作都必须使用此技能,包括 Siri、快捷指令、小组件、应用内购买、后台任务、推送通知等。
无法启动 Axiom Agent? 如果此路由器将你指向某个 Agent,请直接按照其流程操作。通过 MCP,
axiom_get_agent会返回该流程;其他情况下,请阅读下方的文件,只需使用文件搜索和读取功能即可。此处提供:
skills/iap-auditor.md。 位于另一个套件中:axiom-security/skills/security-privacy-scanner.md。对于其他 Agent,通过 MCP 调用
axiom_get_agent也会返回相应流程;请使用axiom_xclog_*、axiom_xcsym_*和axiom_xcprof_*工具执行其 xclog、xcsym 和 xcprof 步骤。其他情况下,请在 Axiom 的技能中搜索skills/<agent>.md;如果找不到,请使用此套件的技能自行完成,并使用PATH中的任意 Axiom 工具。
快速参考
| 症状 / 任务 | 参考 |
|---|---|
Siri、App Intents、实体查询(音频应用 → skills/siri-audio.md) | 参见 skills/app-intents-ref.md |
音频应用中的 Siri 播放(“在 MyApp 中播放 X”)、.audio.* 架构、AudioSearch、INPlayMediaIntent | 参见 skills/siri-audio.md |
| 音频架构成员、参数、枚举项、构建错误;SiriKit 媒体设置和授权 | 参见 skills/siri-audio-ref.md |
任意架构域的必需参数、属性、枚举项、返回类型、已弃用架构;Missing required parameter/property 及其他架构构建错误 | 参见 skills/app-schemas-ref.md |
备忘录、待办事项或清单应用与 Siri — SiriKit Lists/Notes(INAddTasksIntent、INCreateNoteIntent)在 27 中弃用,.notes.*/.reminders.* 架构、watchOS | 参见 skills/siri-notes-reminders.md |
| Siri 音频播放失败 — “我无法播放该内容”、“尚未添加对通过 Siri 执行此操作的支持”、仅在应用打开时有效、结果重复 | 参见 skills/siri-audio-diag.md |
| App Shortcuts、短语、Spotlight | 参见 skills/app-shortcuts-ref.md |
| 应用可发现性策略 | 参见 skills/app-discoverability.md |
| Core Spotlight 索引 | 参见 skills/core-spotlight-ref.md |
| 对应用内容进行大模型搜索、SpotlightSearchTool | 参见 skills/core-spotlight-ref.md |
| 小组件、控制中心控件 | 参见 skills/extensions-widgets.md |
| 小组件 API 参考 | 参见 skills/extensions-widgets-ref.md |
| 实时活动、灵动岛、推送启动、广播 | 参见 skills/live-activities.md |
| 实时活动 / ActivityKit API 参考 | 参见 skills/live-activities-ref.md |
| Apple Pay(实物商品、服务、捐赠) | 改用 axiom-payments |
| App 内购买、订阅 | 参见 skills/in-app-purchases.md |
| StoreKit 2 API 参考 | 参见 skills/storekit-ref.md |
| 承诺式计费计划、订阅捆绑包/套装、群组/批量订阅、留存优惠、优惠码 | 参见 skills/storekit-ref.md |
| 游戏内内容(Unity 插件、资源包 + IAP) | 参见 skills/in-app-purchases.md、skills/background-assets.md |
| 系统日历和提醒事项存储(EventKit) | 参见 skills/eventkit.md |
| EventKit API 参考 | 参见 skills/eventkit-ref.md |
| 通讯录、联系人选择器 | 参见 skills/contacts.md |
| 通讯录 API 参考 | 参见 skills/contacts-ref.md |
| 本地化、String Catalogs | 参见 skills/localization.md |
| Apple 术语匹配、术语表、伪本地化、TMS | 参见 skills/localization-research-ref.md |
| 隐私清单、权限 UX | 参见 skills/privacy-ux.md |
| 蓝牙/Wi-Fi 配件配对(AccessorySetupKit,iOS 18+) | 参见 skills/accessorysetupkit.md |
| AccessorySetupKit API(描述符字段、事件、授权设置流程) | 参见 skills/accessorysetupkit-ref.md |
| 测量与已配对配件之间的距离/方向(蓝牙信道探测,iOS 27) | 参见 skills/accessorysetupkit-ref.md(第 7 部分) |
| 天气数据、预报、署名(WeatherKit) | 参见 skills/weatherkit.md |
| VoIP 通话、CallKit、VoIP 推送、来电显示/拦截 | 参见 skills/callkit-livecommunicationkit.md |
| CallKit / LiveCommunicationKit / IdentityLookup API 参考 | 参见 skills/callkit-livecommunicationkit-ref.md |
| SharePlay、GroupActivities、共享会话、空间 Persona | 参见 skills/shareplay.md |
| GroupActivities API 参考(GroupSession、信使、日志) | 参见 skills/shareplay-ref.md |
| SharePlay 协同音频/视频播放 | 改用 axiom-media(skills/shareplay-playback.md) |
消息对话的建议操作(SuggestedActionsView、com.apple.developer.suggested-actions 权限、OS27) | 改用 axiom-ai(skills/suggested-actions.md)——由 Apple Intelligence 提供支持;权限/功能是集成的一部分 |
| AlarmKit(iOS 26+) | 参见 skills/alarmkit-ref.md |
| 计时器模式、计划安排 | 参见 skills/timer-patterns.md |
| 计时器 API 参考 | 参见 skills/timer-patterns-ref.md |
| 后台任务、BGTaskScheduler | 参见 skills/background-processing.md |
| 后台任务调试 | 参见 skills/background-processing-diag.md |
| 后台任务 API 参考 | 参见 skills/background-processing-ref.md |
| 后台资源(大型内容交付、FM 适配器分发、Apple 托管与服务器托管) | 参见 skills/background-assets.md |
| 后台资源 API 参考(包括本地化资源包、Steam 转换) | 参见 skills/background-assets-ref.md |
| 按需资源迁移(在 27 中弃用) | 参见 skills/background-assets.md |
| 推送通知、APNs | 参见 skills/push-notifications.md |
| 推送通知调试 | 参见 skills/push-notifications-diag.md |
| 推送通知 API 参考 | 参见 skills/push-notifications-ref.md |
在受限/本地网络上不使用 APNs 进行推送(本地推送连接、NEAppPushProvider、MCX iOS27) | 参见 skills/local-push-connectivity.md |
决策树
digraph integration {
start [label="Integration task" shape=ellipse];
what [label="Which system feature?" shape=diamond];
start -> what;
what -> "skills/app-intents-ref.md" [label="Siri / App Intents"];
what -> "skills/siri-audio.md" [label="Siri playback in\nan audio app"];
what -> "skills/app-schemas-ref.md" [label="schema domain\nshape / build error"];
what -> "skills/siri-notes-reminders.md" [label="Siri in a notes /\nlist / to-do app"];
what -> "skills/app-shortcuts-ref.md" [label="Shortcuts / phrases"];
what -> "skills/app-discoverability.md" [label="discoverability\nstrategy"];
what -> "skills/extensions-widgets.md" [label="widgets /\nControl Center"];
what -> "skills/live-activities.md" [label="Live Activities /\nDynamic Island"];
what -> "skills/in-app-purchases.md" [label="IAP / subscriptions"];
what -> "skills/eventkit.md" [label="system Calendar /\nReminders store"];
what -> "skills/contacts.md" [label="contacts"];
what -> "skills/localization.md" [label="localization"];
what -> "skills/privacy-ux.md" [label="privacy / permissions"];
what -> "skills/accessorysetupkit.md" [label="accessory pairing\n(Bluetooth/Wi-Fi)"];
what -> "skills/weatherkit.md" [label="weather / forecasts"];
what -> "skills/callkit-livecommunicationkit.md" [label="VoIP calls /\ncaller ID"];
what -> "skills/alarmkit-ref.md" [label="alarms (iOS 26+)"];
what -> "skills/timer-patterns.md" [label="timers"];
what -> "skills/background-processing.md" [label="background tasks"];
what -> "skills/background-assets.md" [label="large asset delivery /\nFM adapter shipping"];
what -> "skills/push-notifications.md" [label="push notifications"];
what -> "skills/local-push-connectivity.md" [label="push without APNs\n(local network / MCX)"];
}
- Siri / App Intents / 实体查询?→
skills/app-intents-ref.md1a. 音频应用和 Siri——“在 MyApp 中播放 X”、Audio schema domain、AudioSearch、SiriKitINPlayMediaIntent?→skills/siri-audio.md;具体结构见skills/siri-audio-ref.md;Siri 无法播放时见skills/siri-audio-diag.md1b. 采用任何@AppIntent(schema:)/@AppEntity(schema:)/@AppEnum(schema:),或遇到 schema 构建错误?→skills/app-schemas-ref.md(每个领域的必需结构;将 SiriKit Lists/Notes 迁移至 1c) 1c. 备忘录/列表/待办事项应用和 Siri,或 SiriKit Lists/Notes 弃用警告?→skills/siri-notes-reminders.md - App Shortcuts / 短语?→
skills/app-shortcuts-ref.md - 应用可发现性 / Spotlight 策略?→
skills/app-discoverability.md、skills/core-spotlight-ref.md3a. 使用大模型搜索应用索引(SpotlightSearchTool、LanguageModelSession 工具调用)?→skills/core-spotlight-ref.md - 小组件 / 控制中心控件?→
skills/extensions-widgets.md、skills/extensions-widgets-ref.md4a. 实时活动 / 灵动岛 / 推送启动 / 广播?→skills/live-activities.md、skills/live-activities-ref.md - 应用内购买 / StoreKit?→
skills/in-app-purchases.md、skills/storekit-ref.md5a. 订阅计费方案(12 个月承诺)、捆绑包/套件、群组/批量购买、留存优惠、优惠码兑换?→skills/storekit-ref.md - 系统日历或提醒事项存储区(EventKit)?→
skills/eventkit.md、skills/eventkit-ref.md。为你自己的应用提供 Siri 提醒事项或备忘录功能 → 1c - 联系人 / 联系人选取器?→
skills/contacts.md、skills/contacts-ref.md - 本地化机制(String Catalogs、复数形式、RTL)?→
skills/localization.md8a. 本地化调研(Apple 术语、术语表、伪本地化、TMS)?→skills/localization-research-ref.md - 隐私 / 权限?→
skills/privacy-ux.md - 闹钟(iOS 26+)?→
skills/alarmkit-ref.md10a. 蓝牙/Wi-Fi 配件配对(iOS 18+)?→skills/accessorysetupkit.md10b. 天气数据 / 预报 / 署名信息(WeatherKit)?→skills/weatherkit.md10c. VoIP 通话 / CallKit / VoIP 推送 / 来电显示 / 呼叫拦截?→skills/callkit-livecommunicationkit.md - 计时器?→
skills/timer-patterns.md、skills/timer-patterns-ref.md - 后台任务 / BGTaskScheduler?→
skills/background-processing.md、skills/background-processing-diag.md、skills/background-processing-ref.md12a. 大型资源交付(游戏资源包、本地化资源包、ML 模型、Foundation Models 适配器、ODR 迁移)?→skills/background-assets.md、skills/background-assets-ref.md - 推送通知?→
skills/push-notifications.md、skills/push-notifications-diag.md、skills/push-notifications-ref.md13a. 在没有互联网的网络上推送/通话,或通过 MCX 蜂窝网络切片进行 PTT?→skills/local-push-connectivity.md - 想要进行 IAP 审计?→ 启动
iap-auditorAgent - 想要完整实现 IAP?→ 启动
iap-implementationAgent - 相机 / 照片 / 音频 / 触觉反馈 / ShazamKit?→ 改用
axiom-media
跨域路由
Widget + 数据同步(Widget 未显示更新后的数据):
- Widget 时间线未刷新 → 留在此处(extensions-widgets)
- SwiftData/Core Data 未与扩展共享 → 同时调用 axiom-data(App Groups)
Siri + 音频播放(“在 MyApp 中播放 X”、“暂停”、“这是什么歌?”):
- 音频架构、
AudioSearch解析、SiriKitINPlayMediaIntent→ 留在此处(siri-audio) - 播放器、“正在播放”会话、远程命令、正在播放内容上的
appEntityIdentifiers→ 同时调用 axiom-media(skills/now-playing.md)
App Intents + 安全(锁屏意图风险、通过 Siri 的提示词注入):
- 意图/架构 API 表面 → 留在此处(app-intents-ref)
- 威胁建模、authenticationPolicy 门控、架构风险元数据 → 同时调用 axiom-security(skills/agentic-security.md)
实时活动 + 推送通知:
- ActivityKit 推送令牌 / 广播设置 → 留在此处(live-activities)
- 推送投递失败 → 同时调用 axiom-networking(networking-diag)
- Entitlements/证书 → 同时调用 axiom-build
VoIP 推送 + CallKit(VoIP 应用被终止 / 不再收到推送):
- VoIP 推送必须向 CallKit 或 LiveCommunicationKit 报告通话 — 留在此处(callkit-livecommunicationkit,第 1 部分)
- PushKit 令牌与 APNs 投递 → 留在此处(用于对比 APNs 的 push-notifications)
- 通话音频静音/路由错误 → 同时调用 axiom-media(AVAudioSession 类别)
推送 + 后台处理(静默推送未触发后台工作):
- 推送负载和投递 → 留在此处(push-notifications-diag)
- BGTaskScheduler 执行 → 留在此处(background-processing)
游戏内内容(StoreKit + Background Assets、Unity 插件):
- 资源包、IAP 机制、付款表单、模拟服务器 → 留在此处(background-assets、in-app-purchases)
- 游戏输入、渲染、游戏端性能 → 同时调用 axiom-games / axiom-graphics
日历/联系人 + 数据同步:
- EventKit/Contacts 数据问题 → 留在此处
- 通过 App Groups 与 Widget 共享数据 → 同时调用 axiom-data
watchOS 界面
- Complications + Smart Stack Widget → 参见 axiom-watchos(skills/smart-stack-and-complications.md)
- Apple Watch 上的实时活动 → 参见 axiom-watchos(skills/controls-and-live-activities.md)
冲突解决
integration 与 axiom-build:系统功能因 entitlement/证书错误而失效时:
- 签名和预配问题使用 axiom-build
- API 用法和权限模式使用 integration
integration 与 axiom-data:Widget 或扩展无法访问共享数据时:
- App Groups 和共享容器 → axiom-data
- 具体来说:与 Widget/扩展/实时活动共享的 GRDB/SQLite 数据库 → 参见 axiom-data(skills/grdb-app-groups.md)
- Widget 时间线、实时活动更新 → integration
integration 与 axiom-media:媒体功能与系统功能重叠时:
- 相机/照片/音频/触觉代码 → axiom-media
- 相机/麦克风的隐私清单 → 留在此处(privacy-ux)
- 后台音频模式 → 留在此处(background-processing)
反合理化
| 想法 | 现实 |
|---|---|
| “App Intents 只是遵循一种协议” | App Intents 还包含参数验证、实体查询和后台执行。 |
| “Widget 很简单,我以前做过” | Widget 涉及时间线、交互性和每年都会演进的 Live Activity 模式。 |
| “本地化就是 String Catalogs” | Xcode 26 提供类型安全的本地化、生成的符号和 #bundle 宏。 |
| “推送通知就是一个负载和一个令牌” | 令牌生命周期、专注模式级别和服务扩展中的陷阱会导致 80% 的推送问题。 |
| “我直接把资源打包进去就行,这样更简单” | 将过大的资源打包进应用会增大首次安装体积,并在每次更新时重复付出代价。Background Assets 与 App Store 安装进度集成;FM 适配器则完全无法打包。请参阅 skills/background-assets.md。 |
| “我会用 URLSession 下载资源” | URLSession 不支持与 App Store 安装进度集成、按计费状态安排任务或应用配额管理,也无法访问 Apple 托管的资源包。Background Assets 是受支持的渠道。 |
| “On-Demand Resources 仍然很好用” | 整个 NSBundleResourceRequest 系列都已在 27 SDK 中弃用(“改用 Background Assets”)。请将 ODR 标签迁移到资源包。请参阅 skills/background-assets.md。 |
| “直接申请完整的日历访问权限” | 大多数应用只需添加事件;EventKitUI 无需任何权限即可完成此操作。 |
| “SharePlay 只是参与者之间的消息通道” | GroupSession 不符合 Sendable,观察机制仅支持 Combine,而后来加入者的增量数据取决于 @Published 的 willSet 时机。将其迁移到 @Observable 会在不提示的情况下破坏追赶同步。 |
| “发起 SharePlay 会话的人就是主持人” | 不存在主持人。每位参与者都平等——框架没有所有者或轮流发言的概念。唯一相关的控制项是 lifetimePolicy,它属于活动。 |
| “用一个消息发送器,我可以针对每条消息选择可靠或不可靠传输” | deliveryMode 是在初始化时固定的 let,而且没有任何 send 重载接受传输模式。混合协议需要使用两个 GroupSessionMessenger 实例。 |
| “我会申请蓝牙权限并扫描配件” | AccessorySetupKit(iOS 18+)只需轻点一次即可配对,无需弹出广泛的蓝牙权限提示,并会授予范围受限的蓝牙和 Wi-Fi 访问权限。请参阅 skills/accessorysetupkit.md。 |
| “我先处理 VoIP 推送,等准备好后再报告来电” | 如果某个要求报告的推送没有在完成前向 CallKit 或 LiveCommunicationKit 报告来电,iOS 就会终止应用并停止发送 VoIP 推送。从 iOS 26.4 开始,PushKit 的元数据代理会将它交给你的、mustReport 为 false 的推送豁免于此要求。先报告,再获取数据。请参阅 skills/callkit-livecommunicationkit.md。 |
| “这个网络没有互联网,所以我会让自己的套接字在后台保持打开” | iOS 会挂起应用,套接字也会断开。Local Push Connectivity 会运行系统管理的提供程序扩展,专门用于此场景。请参阅 skills/local-push-connectivity.md。 |
| “通话接通时我会激活音频会话” | 音频会话由 CallKit 管理——只能在 provider(_:didActivate:) 中激活,否则音频会静音或路由错误。请参阅 skills/callkit-livecommunicationkit.md。 |
| “我会直接用 CNContactStore 让用户选择联系人” | CNContactPickerViewController 无需授权即可显示所有联系人。 |
示例调用
用户:“如何添加 Siri 支持?”
→ 阅读:skills/app-intents-ref.md
用户:“我的小组件没有更新”
→ 阅读:skills/extensions-widgets.md
用户:“我的 Live Activity 不会更新” / “如何添加 Dynamic Island?” / “向数千个 Live Activity 广播比分”
→ 阅读:skills/live-activities.md
用户:“使用 StoreKit 2 实现 App 内购买”
→ 阅读:skills/in-app-purchases.md
用户:“提供一款需承诺订阅 12 个月的月度方案” / “向团队出售订阅席位”
→ 阅读:skills/storekit-ref.md
用户:“仅向玩家提供其语言对应的关卡包” / “将我的 Steam depot 转换为资源包”
→ 阅读:skills/background-assets-ref.md
用户:“让设备端模型回答有关我的 App 内容的问题”
→ 阅读:skills/core-spotlight-ref.md
用户:“如何实现推送通知?”
→ 阅读:skills/push-notifications.md
用户:“推送通知在开发环境中可用,但在生产环境中不行”
→ 阅读:skills/push-notifications-diag.md
用户:“我们的 App 必须能在没有互联网的船上/医院网络中接听电话” / “通过 Mission Critical 5G 切片使用 Push to Talk”
→ 阅读:skills/local-push-connectivity.md
用户:“我的后台任务从未运行”
→ 阅读:skills/background-processing-diag.md
用户:“如何向用户的日历添加事件?”
→ 阅读:skills/eventkit.md
用户:“如何让用户选择联系人?”
→ 阅读:skills/contacts.md
用户:“如何在不显示权限提示的情况下配对蓝牙配件?”
→ 阅读:skills/accessorysetupkit.md
用户:“如何使用 WeatherKit 显示天气预报?” / “为什么我的天气 App 被拒绝了?”
→ 阅读:skills/weatherkit.md
用户:“我的 VoIP App 被强制关闭” / “如何处理 CallKit 来电?” / “如何拦截骚扰电话?”
→ 阅读:skills/callkit-livecommunicationkit.md
用户:“检查我的 App 内购买实现”
→ 启动:iap-auditor Agent