蘋果正式推出集成 Siri 和 Apple Intelligence新框架 Siri可以實時讀取你屏幕信息並執行操作
蘋果正式推出集成Siri 和 Apple Intelligence新框架:App Intents ,允許開發者在 iOS 18.2+、macOS 15.2+ 等平台上,讓其應用的屏幕內容可被 Siri 和 Apple Intelligence 訪問讀取並執行相應的操作。
App Intents 可以讓開發者把應用的功能和內容更深地融入系統體驗中,比如 Siri、Spotlight 搜索、快捷指令(Shortcuts)和小組件(Widgets)。通過這個框架,用戶能夠更輕鬆地訪問應用的核心功能,而 Siri 也可以更智能地幫助用戶。
使用 App Intents 後,你的應用可以做到以下幾點:
- 通過 Siri 直接控制應用:用戶可以對 Siri 說「查找我的航班」或「添加待辦事項」等命令,Siri 會直接與應用交互。
- 讓應用內容出現在 Spotlight 搜索中:用戶無需打開應用就可以在 Spotlight 搜索到內容,比如從筆記應用中找到某個筆記內容。
- 支持快捷指令和自動化操作:用戶可以創建快捷指令,在特定情境下自動執行應用操作。
- 使用硬件按鈕觸發操作:支持用戶通過 iPhone 或 Apple Watch 上的按鈕直接啟動特定功能。
App Intents 的基本組成部分
- App Intent(應用意圖):定義應用中用戶可以觸發的具體操作,比如「打開文檔」或「發送消息」。當用戶通過 Siri、快捷指令或 Spotlight 搜索時,這些意圖可以被直接調用。
- App Entity(應用實體):表示應用中的具體內容,比如照片、聯繫人或文件。通過定義 App Entity,用戶可以在 Spotlight 或 Siri 中搜索並訪問這些內容。比如,一個食譜應用可以定義「食譜」實體,用戶可以通過 Siri 搜索具體的菜譜。
- App Enum(應用選項):用於定義一組選項,例如照片應用中的「相冊分類」或任務管理應用中的「任務狀態」。這樣,Siri 在識別用戶請求時可以更好地理解內容的上下文。
使用快捷指令和自動化功能
App Intents 允許用戶通過快捷指令應用(Shortcuts)設置自動化操作。例如,用戶可以創建一個「早上好」快捷指令,讓 Siri 在早上自動打開新聞應用,顯示當天的新聞。
支持硬件交互
App Intents 還支持通過 iPhone 和 Apple Watch 上的物理按鈕直接啟動應用操作。例如,在 iPhone 的操作按鈕或 Apple Watch 上,用戶可以設置快捷方式,比如「一鍵打開相機」或「啟動健身追蹤」。
App Intents 的實際應用場景
舉個更具體的例子,假設你開發了一款旅行助手應用:
- 查詢航班信息:通過 App Intent 定義「查看航班」操作,用戶可以對 Siri 說「查找我的航班」,Siri 會直接從應用中提取相關信息。
- Spotlight 搜索支持:用戶在 Spotlight 中搜索航班號,就可以找到對應的航班信息,甚至不用打開應用。
- 快捷指令支持:用戶可以設置一個快捷指令,例如「出差模式」,點擊一下可以自動顯示天氣、航班和酒店信息。
- Apple Watch 操作按鈕:用戶可以設置 Apple Watch 的操作按鈕,快速訪問當前航班信息或行程安排。
讓應用內容與 Siri 和 Apple Intelligence 交互
蘋果同時正式推出全新的集成 API ,通過這項新功能,當用戶在應用中查看某些內容(例如文檔、圖片或網頁)時,可以直接使用 Siri 詢問內容的具體信息或進行操作。也就是Siri 會時刻查看你的應用屏幕信息,讀取你的屏幕內容,隨時聽從你的召喚來進行操作。
例如,用戶在閱讀一個文檔時,可以對 Siri 說「這份文件的主要內容是什麼?」然後 Siri 可以通過開發者提供的內容結構回答這個問題。
使用場景舉例
假設有一個文檔閱讀應用和一個郵件客戶端,用戶在這兩個應用中都可以直接通過 Siri 獲取幫助:
- 文檔閱讀應用:用戶正在閱讀一份報告,他可以問 Siri「這份報告的結論是什麼?」 Siri 會讀取應用提供的文檔內容,並總結結論。
- 郵件客戶端:用戶收到一封長郵件,但沒有時間閱讀,可以對 Siri 說「總結一下這封郵件的內容。」 Siri 會通過應用的郵件內容為用戶提供簡要的概述。
通過為 Siri 和 Apple Intelligence 提供應用的屏幕內容,開發者可以提升用戶體驗,使他們能夠更直觀地使用 Siri 進行查詢、獲取內容信息和執行操作。此外,這種集成支持第三方服務,使應用在 Apple 的生態系統中更具互動性和便捷性。
如何實現
開發者需要通過 AppEntity(應用實體)來定義應用內的內容。AppEntity 是一種數據結構,它可以描述特定的內容類型,例如照片、文檔或網頁鏈接。創建 AppEntity 後,開發者需要將它與應用的 NSUserActivity 對象關聯,使系統可以識別並跟蹤這些內容。
例如,開發者在圖片查看應用中創建一個表示照片的 AppEntity,然後將它與用戶的「正在查看照片」這個活動關聯,這樣 Siri 就能理解用戶正在查看的具體內容。
使用 Transferable 協議以支持多種內容格式
為了讓 Siri 可以將應用內容與其他服務共享或顯示,AppEntity 需要符合 Transferable 協議。該協議允許開發者定義內容的多種表示形式(如富文本、純文本、PDF、圖片等)。這樣,無論用戶是在發送郵件、保存文件,還是需要內容的不同形式,Siri 都可以處理這些請求。
例如,一個郵件應用可以將一封郵件的內容定義為富文本、純文本和 PDF 三種形式,Siri 可以根據用戶的需求選擇最合適的格式來顯示或分享內容。
集成操作至 Siri 和 Apple Intelligence
蘋果還為開發者提供了將應用操作和內容與 Siri 和 Apple Intelligence 集成的方式,從而讓用戶通過 Siri 更便捷地與應用交互。
也就是Siri 和 Apple Intelligence 不僅可以讀取屏幕信息,還可以根據用戶的要求來和應用互動,執行相應的操作和完成任務。
使用特定領域的助手架構(Assistant Schema)實現功能
Apple 提供了多個助手架構(Assistant Schema),每個架構都對應不同的內容領域(例如瀏覽器、文檔閱讀器、文件管理等)。這些架構幫助 Siri 根據內容的類型提供定製化的響應。例如:
- 瀏覽器架構:如果一個應用是瀏覽器,開發者可以使用 .browser.tab 這個架構,用戶可以詢問 Siri 有關當前網頁的問題。
- 文件管理架構:對於文件管理應用,開發者可以使用 .files.file 架構,用戶可以請求 Siri 總結文件內容。
- 照片架構:對於照片應用,使用 .photos.asset 架構,用戶可以讓 Siri 回答關於照片中的對象問題(例如描述照片中的內容)。
通過使用這些助手架構,開發者可以確保 Siri 能夠理解不同內容領域的請求,提供更加智能和上下文相關的回答。
什麼是助手架構(Assistant Schema)?
助手架構可以理解為一組標準化的「模板」,Apple 設計這些模板是為了幫助 Siri 識別應用的具體功能。比如,如果你的應用是圖片管理類的,那麼使用 photos.openAsset 這樣的架構,可以讓 Siri 理解你要展示一張照片。
關鍵組成部分:
- AppIntent:定義用戶可以通過 Siri 觸發的功能(比如打開一張照片)。
- AppEntity:表示應用中的特定內容(比如一張具體的照片或一個文件)。
- AppEnum:用於定義可選項(比如圖片分類的不同選項)。
如何開始集成 Siri 和 Apple Intelligence?
要開始,開發者需要創建符合這些助手架構的代碼。Apple 提供了一些 Swift 代碼的「快捷方式」,稱為「宏」,來幫助開發者快速生成符合架構要求的代碼。
舉個例子,如果你的應用中有「查看圖片」這一功能,可以用以下代碼告訴 Siri 這是一個照片查看的功能:
@AssistantIntent(schema: .photos.openAsset)structOpenAssetIntent: AppIntent {
var target: AssetEntity// 表示具體的圖片對象
// 其他代碼…
}
這段代碼會生成「查看圖片」的意圖,使 Siri 可以識別到應用中的「查看圖片」功能,並自動幫用戶打開圖片。
滿足助手架構的要求
每種架構都有自己的規則,必須遵守。常見規則包括:
- 不允許添加額外的必填參數:比如,如果「查看圖片」只需要一個圖片 ID,不能強製用戶提供額外的信息。
- 可選參數隻能在快捷指令中使用:這意味著一些擴展的選項(比如圖片標題或描述)只能在快捷指令應用中看到,而不會影響 Siri 的基本操作。
這樣做是為了確保 Siri 能流暢地理解並執行應用的操作。
創建應用意圖並符合架構
要創建一個應用意圖並符合架構,開發者可以按照以下步驟操作:
- 確定應用的功能領域:每個應用意圖都有自己對應的功能領域(例如,照片、文件、郵件等)。
- 在 Xcode 中創建新的 Swift 文件:使用代碼補全工具,選擇合適的架構,例如,輸入 photos_ 就會顯示與照片領域相關的所有操作,比如 openAsset。
- 使用宏來符合架構:添加 @AssistantIntent(schema:) 宏來告訴 Siri 這是一個特定功能,例如打開照片。
- 構建和調試:通過編譯代碼,確保沒有架構不匹配的錯誤。
這樣 Siri 就能理解你的應用意圖,並在執行過程中不出錯。
確保內容和選項符合架構
在一些操作中,應用可能有特定內容或選項。例如,圖片應用中有「照片」這種內容(AppEntity),還可能有「分類」這樣的選項(AppEnum)。如果這些內容和選項需要用在 Siri 操作中,也需要符合架構。
例如,定義照片實體可以這樣做:
@AssistantEntity(schema: .photos.asset)structAssetEntity: IndexedEntity {
var id: String// 照片的唯一標識
var title: String? // 照片的標題
// 其他屬性…
}
這樣,Siri 可以識別到「照片」這個內容類型,並理解它的屬性(比如標題、分類等),從而能更好地回答用戶的問題。
更新和遷移現有意圖
如果你的應用已經有一些現成的意圖,更新時需要特別注意,因為用戶可能已經在快捷指令里用了這些意圖。要避免影響用戶的使用體驗,可以為新意圖設置 isAssistantOnly = true,讓它只被 Siri 識別,而不顯示在快捷指令列表中。
例如:
@AssistantIntent(schema: .photos.createAssets)structCreateAssetsIntent: AppIntent {
staticlet isAssistantOnly: Bool=true// 僅供 Siri 使用
// 其他代碼…
}
這樣可以確保用戶的快捷指令不會因更新意圖而被中斷。
通過集成 Siri 和 Apple Intelligence,應用的操作變得更加自動化,用戶可以用語音輕鬆控制應用。開發者只需要定義好符合 Siri 要求的操作和內容,就可以使 Siri 識別並執行這些操作,讓用戶體驗到更智能、便捷的服務。
App Intents框架文檔:https://developer.apple.com/documentation/appintents