夜雨聆风学习资料网

ARTICLE · 1029263

iOS 27 上,代码全绿,Siri 却不认你的 App 了

iOS 27 上,代码全绿,Siri 却不认你的 App 了
LEARNING TOGETHER · iOS 272026.09.16

只是语音识别准了一点

苹果把 Siri 的脑子

做成了可插拔的

四件事 · 两个坑 · 五个前提条件 · 一份共学笔记

码蜂奶爸 · 采技术之蜜,酿成长之糖

iOS 27App Intents

📦 5 Parts + Conclusion

👉 滑动

PART 01

事实层

发了什么

PART 03

四件事

今天就能改

PART 04

两个坑

先别碰

PART ///

写在最后

奶爸悟

这篇的立场,一句话

脑子可以换,你 App 的意图定义不能换

如果你手上还有 SiriKit 的代码,先记住一件事:它在 iOS 27 下照样能编译

Xcode 只抛个弃用警告,模拟器照跑,CI 全绿,打包上架一路绿灯。然后它在那些升了 iOS 27 的用户手机上,悄没声地就不工作了。不报错、不闪退,就是喊了没反应。

这不是我的猜测,是这次架构调整的直接结果。

先把我的位置说清楚。App Intents 这东西,我一行没写过,手上的几个老工程也一个字没改。所以这篇不是“我踩了多少坑”的实战复盘,我没那个资格。它更像一份共学笔记:我把苹果的开发者文档、WWDC 那几场 session,还有这两天冒出来的一堆分析翻了一遍,把看懂的、没看懂但觉得重要的、以及我自己差点看漏的,摊开来跟你对一遍。

先给一句结论:这次不是语音识别准了一点,是架构换了。架构一换,接在上面的东西就得重新想一遍。

01

PART

9 月 14 日,苹果到底发了什么

FACTS · 不吹,只摆事实

事实先摆出来。苹果在美西时间 9 月 14 日放出 iOS 27 正式版,北京这边收到推送是 9 月 15 日凌晨。能升级的机型从 iPhone 11 系列和 iPhone SE 第二代起步,这个范围其实不小。

能升级,和能用上新 Siri,是两件事

它是测试状态

新版 Siri(苹果官方叫 Siri AI)随 iOS 27 上线,但要手动进设置开启,一部分人还得排队等名额,等多久不确定。

硬件门槛在 15 Pro 起步

iPhone 15 Pro、15 Pro Max、iPhone 16 系列及以后和 iPhone Air;iPad 和 Mac 要 M1 及以上。

眼下只有英文

设备语言和 Siri 语言都得是英文。苹果说 10 月加法语、日语、韩语、葡萄牙语、西班牙语。

地区上还有缺口

中国大陆的 Apple 账号目前不在支持范围,苹果的说法是要先满足监管要求;欧盟的 iPhone、iPad 和 Apple Watch 初期也用不上。

云端功能有每日上限

调用云端模型的功能有每日频次上限,苹果说后面会出付费扩容。

一句话:能升 iOS 27 的机器很多,真正能把新 Siri 喊醒的,是几代之后的那几款

苹果列了四条能力,我按看懂和动手分成两组

1

个人上下文理解,翻你的信息、邮件、照片

2

世界知识加联网检索,通用问题它自己去找答案

3

屏幕内容感知,看懂你眼前那一屏

4

跨应用系统级操作,直接替你把事办了

前三条是看懂,第四条是动手。分界线就在第四条:Siri 从“告诉你去哪吃”,变成了“帮你把桌子订了”。

然后是换脑子这件事。苹果确认过,这一代 Siri 的基座模型是跟谷歌合作、用 Gemini 参与训练出来的,具体商业条款没有公开。这里有个容易传歪的点得掰一下:Gemini 是在训练环节参与的,不代表你每次说话都在调谷歌的模型。苹果自己的说法是分层架构:简单的请求留在手机本地,中等和复杂的走它的私有云计算,全程经过它自己的基础设施,个人数据不保留、端侧模型里也没有 Gemini 代码。

这些是苹果和媒体的口径,我没法验证到那么底层。但有一点是清楚的:对你来说,换脑子不是一次升级,是一道新题。你的 App 得先能被看懂,才谈得上被调用。

02

PART

先说最容易被忽略的那件事

THE QUIET BREAK · 安静地失效

SiriKit 在 WWDC 2026(6 月 8 日)进入弃用期,苹果把第三方接入 Siri 的路径统一到了 App Intents

这件事本身不新鲜,写的人也不少。但有个细节,我觉得比“要迁移了”重要得多。

弃用不等于移除。你原来的代码不动,Xcode 不会给你报错——编译器只负责语法,管不了苹果服务器那边还认不认。

新 Siri 的意图解析,已经不认 SiriKit 了。所以你会在两个地方同时看到绿灯:CI 是绿的,用户那边是黑的。

程序员最该警惕的不是报错,是安静

报错至少告诉你哪里不对,安静是你以为它对。

所以第一件事不是“什么时候迁移”,是先去数一数:你手上还有几个 SiriKit 意图,哪些是用户真在用的

03

PART

今天就能动手改的四件事

FOUR MOVES · 不用等

STEP 01

让动作接得住追问

iOS 27 的 App Intents 支持多轮追问。这话听着像个小功能,其实改的是参数设计。

用户的说法很少一次说全。他先说“记一次跳绳”,你想确认多少下,他再补一句“改成 200”。以前那种一句话没说全就失败的设计,在这里体验会很难看。参数得支持增量修正,而不是让用户从头重说一遍

STEP 02

长任务要边算边回

旧模型是一发一收:perform() 跑完,返回结果,Siri 弹一张卡片。设个闹钟够用。

但只要动作超过一秒,搜东西、跑导出、等接口,用户看到的就是一片沉默。人对沉默的耐心,比我们想的短得多:看到“还在处理”会等,看到没反应会以为坏了,然后退出去点 App。

iOS 27 给了流式响应,长任务可以边算边回。任何一个可能超过一秒的动作,都值得接上。

STEP 03

用 View Annotations 把界面内容开放出去

这是这次最值得琢磨的新东西。它做的事是把你界面上的元素和 App Entity 对上号,用户说“把这个存一下”“第三行删掉”,Siri 得知道“这个”和“第三行”指的是谁。

苹果在 session 里说得很直白:无障碍质量和 Siri 集成,现在是同一件工程。你的界面能被读屏正确描述,那你离被 Siri 正确理解就不远了。

反过来说,如果“这个”“那个”在你的界面上一直指不明白,Siri 就会很自信地做错事,这比不做更糟。

STEP 04

守住三条线,别把 Siri 当唯一入口

苹果给的方向是三个词:bounded(边界明确)、observable(完成可观测)、recoverable(重试安全)。翻成我们自己的话:

边界明确

一步能干完,不依赖跳界面,参数有上下界。

完成可观测

做完有明确结果,能让 Siri 复述给用户听。

重试安全

重复调用不会记两笔账,也就是幂等。

还有一条是我自己加的:永远保留 App 内的原路径兜底。后面那五个前提条件,随时可能有一个不成立,把语音入口当唯一入口,是给自己埋雷。

一个最小例子:

...swift

import AppIntents

struct LogRopeIntent: AppIntent {

  // 边界明确:不跳界面,后台就能干完

  static let openAppWhenRun: Bool = false

  @Parameter(title: "次数")

  var count: Int

  func perform() async throws -> some IntentResult & ProvidesDialog & ReturnsValue<Int> {

    // 校验放在 App 内,不指望 Siri 帮你守边界

    guard count > 0, count <= 10000 else { throw RopeError.outOfRange }

    let total = try await RopeStore.shared.add(count: count)

    // 完成可观测:回传累计值,让 Siri 有话说

    return .result(value: total, dialog: "记下了,今天累计 \(total) 次。")

  }

}

!踩坑提示 🕳

迁移别当成直译。Xcode 27 里提供了把 SiriKit 意图转成 App Intents 的迁移工具,能把原来的 .intentdefinition 转出 Swift 结构,但参数映射和里面的逻辑还得自己过一遍。三个错最集中:意图名一比一搬过来,Siri 解析起来很别扭;一口气注册几十个意图,助手猜错的机会变多;只在老机型上测,老机型根本跑不出屏幕感知和多轮追问。

04

PART

两个先别碰的坑

TWO TRAPS · 现在动手会白干

坑一:模型可替换这件事,别把架构押上去

WWDC 上苹果展示过第三方模型接进 Siri 的方向,思路大概是让你的模型以扩展的形式出现在 Siri 里。

但面向开发者的那条关键权限,模型委派,目前没有开放:开发者后台里找不到,官方文档里也没有对应的授权说明。

什么时候算真能用?我盯三个信号:苹果在开发者 session 或下一届 WWDC 正式官宣、App Intents 官方文档里出现对应的 entitlement、开发者后台出现这个权限项

三个都亮之前,别急着改架构。你该做的是把自己那层做扎实,意图定义、授权边界、埋点。反正按这个设计,模型本来就是可替换的零件,等它开放了再换不迟。

一句话记法:没在官方文档里出现的权限,约等于不存在。别拿演示当接口。

坑二:别把能不能用 Siri 写成系统版本判断

这个坑最不显眼,但最容易踩。我猜很多人下意识会这么写:

...swift

// 反面教材

if #available(iOS 27, *) {

  siriEnabled = true

}

iOS 27 只是最低门槛,它一点都不代表用户能用上。真正决定入口该不该出现的是五个条件

1

设备型号,15 Pro 起步

2

设备语言和 Siri 语言都是英文

3

Apple 账号所在地区,中国大陆目前不在支持范围,欧盟的 iPhone、iPad 和 Apple Watch 初期也不支持

4

等待名单状态,开了也不一定有,要排队

5

联网状态和服务侧状态

五个都成立,再叠上你自己的灰度开关,才轮到显示入口。

顺便提一句:写降级逻辑的时候提前想一步。如果你的入口只挂在 Siri 上,那中国大陆和欧盟的用户打开你的 App,看到的会是什么?每个入口,都得有一个没有 Siri 也走得通的版本。

05

PART

一张可以照着勾的自查清单

CHECKLIST · 13 个问题

我把上面四件事整理成了 13 个问题,动手之前先勾一遍:

1

意图是单步能完成的吗

2

不跳界面能跑完吗

3

参数有上下界吗

4

授权是在 App 内强制的吗

5

失败能复述给用户听吗

6

重试安全吗,也就是幂等做了没

7

完成状态可观测吗

8

有埋点吗

9

有 App 内的兜底路径吗

10

短语覆盖中英文了吗

11

五个可用性条件都判断了吗

12

中国大陆和欧盟的降级逻辑写了吗

13

没去碰那个还没开放的模型委派权限吧

第 13 条最容易跳过,也是我唯一想加粗的一条。

///

LAST

写在最后

THOUGHTS · 一点收尾

这件事拆到最后,其实就一句话:苹果把脑子做成了可替换的零件,但零件能换,规矩不能换。你 App 里的意图定义、授权边界、可观测性,这些是你自己的资产。

我拿它对照过给孩子报班这件事。给娃报个班,老师是可以换的,不合适就换一个,孩子不会因此不认这套课。真正动不了的是教学大纲,和家长群里那套沟通的规矩。换了老师,孩子还认这套规矩,课就上得下去。

模型是谁家的,其实不重要。重要的是你的 App 在里面是谁

所以今天该做的,不是去追那个还没开放的接口,而是把自己那套规矩写清楚:动作的边界在哪,授权在谁手里,出错了能不能重试,用户能不能在 App 里走通同一条路。

奶爸悟

换老师不难,难的是换了老师以后,娃还认不认这套规矩

既然看到这里了,如果觉得有用,随手点个赞、在看、转发三连吧。

点赞
在看
转发

THANKS FOR READING

相关学习资料

返回首页浏览学习资料