新增 iOS 應用程式擴充功能
iOS 應用程式擴充功能可讓您在應用程式外部擴展功能。您的應用程式可以顯示為首頁小工具,或者您可以讓部分應用程式在其他應用程式中可用。
若要深入了解應用程式擴充功能,請查看 Apple 的文件。
iOS 18 新增了自訂裝置「控制中心」的功能,包括建立多個頁面。您也可以使用 ControlCenter
API 為「控制中心」建立新的切換開關,以突顯您的應用程式。
如何在 Flutter 應用程式中新增應用程式擴充功能?
#若要將應用程式擴充功能新增至您的 Flutter 應用程式,請將擴充點目標新增至您的 Xcode 專案。
在終端機視窗中,從您的 Flutter 專案目錄執行
open ios/Runner.xcworkspace
,以開啟您專案中的預設 Xcode 工作區。在 Xcode 中,從選單列選取 File -> New -> Target。
選取您想要新增的應用程式擴充功能。此選取會在您專案中的新資料夾中產生擴充功能專屬程式碼。若要深入了解產生的程式碼以及每個擴充點的 SDK,請查看 Apple 的文件中的資源。
若要了解如何將首頁小工具新增至您的 iOS 裝置,請查看 將首頁小工具新增至您的 Flutter 應用程式程式碼實驗室。
Flutter 應用程式如何與應用程式擴充功能互動?
#Flutter 應用程式使用與 UIKit 或 SwiftUI 應用程式相同的技術與應用程式擴充功能互動。包含應用程式和應用程式擴充功能不會直接通訊。當裝置使用者與擴充功能互動時,包含應用程式可能不會執行。應用程式和您的擴充功能可以讀取和寫入共用資源,或使用較高階的 API 彼此通訊。
使用較高階的 API
#某些擴充功能具有 API。例如,Core Spotlight 架構會為您的應用程式建立索引,讓使用者可以從 Spotlight 和 Safari 搜尋。WidgetKit 架構可以觸發您的首頁小工具更新。
為了簡化您的應用程式與擴充功能之間的通訊方式,Flutter 外掛程式會封裝這些 API。若要尋找封裝擴充功能 API 的外掛程式,請查看 善用 Apple 的系統 API 和架構或搜尋 pub.dev。
分享資源
#若要在您的 Flutter 應用程式和您的應用程式擴充功能之間分享資源,請將 Runner
應用程式目標和擴充功能目標放在同一個 App Group 中。
若要將目標新增至 App Group
在 Xcode 中開啟目標設定。
導覽至 Signing & Capabilities 索引標籤。
選取 + Capability,然後選取 App Groups。
從兩個選項中選擇您要新增目標的 App Group
- 從清單中選取一個 App Group。
- 按一下 + 來新增一個新的 App Group。
當兩個目標屬於同一個 App Group 時,它們可以讀取和寫入相同的來源。為您的資料選擇下列其中一個來源。
- 索引鍵/值:使用
shared_preference_app_group
外掛程式,在同一個 App Group 中讀取或寫入UserDefaults
。 - 檔案:使用
path_provider
外掛程式中的 App Group 容器路徑來讀取和寫入檔案。 - 資料庫:使用
path_provider
外掛程式中的 App Group 容器路徑,使用sqflite
外掛程式建立資料庫。
背景更新
#背景工作提供一種方法,讓您能夠透過程式碼更新擴充功能,而不論您的應用程式狀態為何。
若要從您的 Flutter 應用程式排程背景工作,請使用 workmanager
外掛程式。
深度連結
#您可能會想要將使用者從應用程式擴充功能導向至您的 Flutter 應用程式中的特定頁面。若要在您的應用程式中開啟特定路徑,您可以使用 深度連結。
使用 Flutter 建立應用程式擴充功能 UI
#某些應用程式擴充功能會顯示使用者介面。
例如,分享擴充功能可讓使用者方便地與其他應用程式分享內容,例如分享圖片以在社群媒體應用程式上建立新的貼文。
從 3.16 版本開始,您可以為應用程式擴充功能建立 Flutter UI,但您必須使用擴充功能安全的 Flutter.xcframework
並嵌入 FlutterViewController
,如下一節所述。
找到擴充功能安全的
Flutter.xcframework
檔案,位於<path_to_flutter_sdk>/bin/cache/artifacts/engine/ios/extension_safe/Flutter.xcframework
。- 若要建置發行或設定檔模式,請分別在
ios-release
或ios-profile
資料夾下尋找架構檔案。
- 若要建置發行或設定檔模式,請分別在
將
Flutter.xcframework
檔案拖放到您分享擴充功能的架構和程式庫清單中。請確定嵌入欄顯示「Embed & Sign」。在 Xcode 中開啟 Flutter 應用程式專案設定以分享建置組態。
- 導覽至 Info 索引標籤。
- 展開 Configurations 群組。
- 展開 Debug、Profile 和 Release 項目。
- 針對每個組態,請確定您擴充功能的 Based on configuration file 下拉式選單中的值,與針對正常應用程式目標選取的值相符。
(選用) 如有需要,請將任何情節提要檔案取代為擴充功能類別。
- 在
Info.plist
檔案中,刪除 NSExtensionMainStoryboard 屬性。 - 新增 NSExtensionPrincipalClass 屬性。
- 將此屬性的值設定為擴充功能的進入點。例如,針對分享擴充功能,通常為
<YourShareExtensionTargetName>.ShareViewController
。如果您使用 Objective-C 實作擴充功能,則應省略<YourShareExtensionTargetName>.
部分。
- 在
依照新增 Flutter 螢幕中所述,嵌入
FlutterViewController
。例如,您可以在分享擴充功能中顯示 Flutter 應用程式中的特定路徑。swiftimport UIKit import Flutter class ShareViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() showFlutter() } func showFlutter() { let flutterViewController = FlutterViewController(project: nil, nibName: nil, bundle: nil) addChild(flutterViewController) view.addSubview(flutterViewController.view) flutterViewController.view.frame = view.bounds } }
測試擴充功能
#在模擬器和實體裝置上測試擴充功能有稍微不同的程序。
在模擬器上測試
#- 建置並執行主要應用程式目標。
- 應用程式在模擬器上啟動後,按 Cmd + Shift + H 以將應用程式縮到最小,這會切換到首頁畫面。
- 啟動支援分享擴充功能的應用程式,例如「照片」應用程式。
- 選取相片,點一下分享按鈕,然後點一下您應用程式的分享擴充功能圖示。
在實體裝置上測試
#您可以使用下列程序或 在模擬器上測試 中的指示,在實體裝置上進行測試。
- 啟動分享擴充功能目標。
- 在顯示「選擇要執行的應用程式」的快顯視窗中,選取可用於測試分享擴充功能的應用程式,例如「照片」應用程式。
- 選取相片,點一下分享按鈕,然後點一下您應用程式的分享擴充功能圖示。
教學
#如需將應用程式擴充功能與您的 Flutter iOS 應用程式搭配使用的逐步指示,請查看 將首頁小工具新增至您的 Flutter 應用程式程式碼實驗室。
除非另有說明,否則本網站上的文件會反映 Flutter 的最新穩定版本。頁面最後更新於 2024-12-04。 檢視原始碼 或 回報問題。