2020年6月的WWDC 蘋果推出輕巧App(App Clips)的應用,輕巧 App是 App的一部分,可以讓使用者可以在不需要從App Store上下載完整應用程式的情況下,直接開啟App Clip 並使用部分App的功能。使用者可以透過 NFC、QR Code、Apple map、Safari ,iMessage等方式開啟App Clip。
限制
- iOS 14.3或以上(掃描開啟App Clip)
- 容量大小限制在10MB以內
- App Clip須與App一起送審,一個App 只能擁有一個App Clip
- 若裝置上有App則優先啟動App
新增App Clip
在 Xcode File > New > Target中新增 App Clip,這個 App Clip的 identifier便是原來的 identifier後面再加上.Clip。
App Clip 使用與 App相同的 frameworks 。如同其他 Target,你可以新增source files 和 assets,或是沿用原本已經存在的 source files 和 assets
在Project navigator會出現app clip的資料夾,可以在原來專案的檔案或是assets的Target Membership上勾選app clip的項目,使原專案的程式碼與asset的資源共用。
Active Compilation Conditions
為了使程式碼重構編譯的更完善,在編寫的程式碼中有部分沒有要讓 App與 App Clip共用時,可利用 Custom Flags來排除程式碼,在 Build Setting中的 Swift Compile - Custom Flags 設置如下。
編寫程式碼時,只要在需要排除的地方加入以下的程式碼。
#if !APPCLIP
// Code you don't want to use in your App Clip.#else
// Code your App Clip may access.#endif
Associated Domains
在 Target 中的 App Clip > Signing& Capabilities > Associated Domains
新增 appclips:example.com,更多請見Apple文件
測試
官方提供三種方式測試App Clips的使用者體驗
- 在 Xcode中使用 invocation URL來 Debug
- 新增一個 Local experience on a device 藉由 QRCode 或 NFC來開啟
- TestFlight
*注意:只有 Local experience on an iPhone 這個方式可以測試App Clip Card
透過XCode測試Invocations
藉由_XCAppClipURL可以模擬開啟的scheme,開啟應用程式的特定位置像是
- https://example.com/menu
- https://example.com/contact
- https://example.com/menu/breakfast
- https://example.com/menu/lunch
Access the Invocation URL
onContinueUserActivity(_:perform:)
(SwiftUI)scene(_:continue:)
( UISceneDelegate)application(_:continue:restorationHandler:)
(AppDelegate)
Local Experience
在裝置上的設定 > 開發者 > Local Experience > Register Local Experience
URL PREFIX:Domain
BUNDLE ID:App Clip identifier
Title:卡片名稱
Subtitle:卡片副標題
Choose Photo 為卡片主要的圖片
將App Clip build到手機上後,利用網路上的QRCode產生器或App Clip Code Generator將URL PREFIX轉換成QRCode,再用QRCode Scanner來掃描,便會開啟App clip card。
*注意:若用QRCode的方式 則必須使用Native QR Code Scanner,用一般相機會無法開啟App Clip card
感謝您的閱讀!如有任何問題請留評論。
謝謝!