讓 Siri 真正懂你的 app:App Intents 進階整合不是只把 action 曝光出去
這場 session 補上 App Intents 採用後的第二層問題:如何讓 Siri 回應像你的 app、讓 Apple Intelligence 找得到內容、理解螢幕上的 entity,並把通知、Now Playing、AlarmKit 這些既有入口接回你的資料模型。
App Intents 的進階價值在「語意可被系統理解」:你不只提供 intent,還要提供回應、donation、索引、查詢、螢幕 annotation 與 entity ownership,讓 Siri 能安全且準確地代表 app 做事。
影片在拆四個 Siri adoption 成熟度問題
回應要像你的 app,而不是像預設系統訊息
透過 ProvidesDialog、IntentDialog、clarifying question、DisplayRepresentation 與 snippet view,把語音與視覺回饋調到符合 app 語氣與資料語意。
Apple Intelligence 需要 app 內行為提示
系統知道 Siri/Shortcuts 互動,但不知道使用者在 app UI 裡做了什麼。Interaction Donations 把這些行為以 schema-conforming intent 形式交給系統參考。
內容要能被語意搜尋與結構化查詢找到
IndexedEntity 適合本機可索引內容;IntentValueQuery 適合大型、server-side 或快速變動資料;searchInApp 則把 Siri 查詢接回 app 自己的搜尋 UI。
Siri 要理解「畫面上的第三個」是誰
NSUserActivity、View Entity annotations、collection annotations、custom canvas annotations 與既有 notification / Now Playing / AlarmKit entity annotations,讓螢幕與系統入口都能指向 persistent entities。
導入順序:先讓 entity 可讀,再讓系統可找、可問、可驗證
調整 intent response 與 entity display
先定義 title、subtitle、image,必要時加自訂 SwiftUI snippet。語音裝置與有螢幕裝置要都能獨立理解 full / supporting dialog。
只 donation 有語意價值的 UI 行為
用 IntentDonationManager 捐贈實際發生的 UI action 與結果。不要把雜訊都送進去,過度 donation 會被系統忽略,也會讓推論品質下降。
決定 IndexedEntity 或 IntentValueQuery
本機穩定內容就索引到 Spotlight;大型、遠端、頻繁變動或不該全量預先索引的內容,就讓系統以 structured input 問你的 query。
把畫面、通知與播放狀態標回 persistent entity
螢幕 awareness 與 existing integrations 的 annotations 只應該標註可持久查回的 entity,不要用 transient object 讓 Siri 之後找不到狀態。
用 AppIntentsTesting 驗證真正的口語場景
測自然語言、disambiguation、confirmation、ownership、search results 與 onscreen reference,不要只測 perform method 的 happy path。
重點 1:自訂 Siri 回應時,文字和視覺都要跨裝置成立
預設讓 Siri 回應很快,但成熟 app 會需要更貼近產品語氣的 dialog。影片示範在 intent 的 perform 回傳 IntentDialog,包含 voice-only device 可完整朗讀的 full string,以及搭配 UI 顯示的 supporting string。
clarifying question 應該少量、精準使用。像建立 timer 時已有一個 timer 在跑,可以要求使用者補 label;但如果每個 intent 都多問一步,Siri 體驗就會變慢。
DisplayRepresentationtitle、subtitle、image 不只出現在 Siri,也會進入 disambiguation、Spotlight 與 Shortcuts。它是 entity 被系統辨識時的基本名片。ShowsSnippetView適合讓特定 action 的結果以 app familiar colors、layout 和資訊密度呈現,但應該只用在真的幫助理解的結果上。重點 2:Interaction Donations 補足「app UI 內發生了什麼」
當使用者透過 Siri 或 Shortcuts 觸發 intent,系統自然知道這次 interaction。但使用者在 app UI 中傳訊息、導航、啟動計時器這些動作,Apple Intelligence 不會自動知道。Donation 的角色是把 UI 行為轉成 schema-conforming App Intents,讓未來的 Siri request 能做出更貼近個人習慣的推論。
影片強調 donation 要準確:donate actual user actions、帶上正確參數與結果,並避免大量重複或猜測式 donation。這是一個 personalization signal,不是 analytics firehose。
重點 3:內容 discovery 分成三條路
IndexedEntity讓本機內容進 Spotlight,支援 meaning-based search。要維護 add、update、delete,以及重新索引用的 IndexedEntityQuery。IntentValueQuery適合無法全量索引的資料。系統給 structured input,你可回多種 entity type,例如把 AudioSearch 映射到歌曲與播放清單。searchInApp把「Show me running playlists in CosmoTunes」這類 query 重新帶回 app 自己的搜尋 UI,讓使用者在熟悉介面裡繼續。風險與遷移注意事項
OwnershipProvidingEntity,讓 Siri 知道該不該多確認。實務啟發
App Intents adoption 不應只以「我有幾個 action」計數。更好的檢查表是:Siri 能否用 app 的語氣回答?能否在語音與螢幕上都清楚展示 entity?能否用語意找到內容?能否理解現在畫面或通知裡的物件?能否在有副作用時做正確確認?
如果你的 app 已經做過基礎 App Intents,下一輪應該優先補 DisplayRepresentation、content indexing/query、onscreen annotations 與 AppIntentsTesting。這些能力會直接影響 Apple Intelligence 是否能把你的 app 當成可信的系統語意來源。
來源
主要來源為 Apple Developer 官方影片頁、transcript、章節與 code snippets;YouTube 影片頁用於 iframe 與發布 metadata。官方頁:Explore advanced App Intents features for Siri and Apple Intelligence - WWDC26。YouTube:WWDC26: Explore advanced App Intents features for Siri and Apple Intelligence | Apple。
- →Siri 回應要同時設計 dialog、entity display 與必要的 snippet view。
- →Interaction Donations 讓 Apple Intelligence 看見 app UI 內真正發生的 schema-conforming action。
- →內容 discovery 要依資料型態選 IndexedEntity、IntentValueQuery 或 searchInApp。
- →Onscreen awareness 與既有系統整合應標註 persistent entities,並搭配 ownership 與 testing 驗證。