輕巧App(App Clip) 初體驗,創建與測試

Owen
5 min readFeb 17, 2021

--

2020年6月的WWDC 蘋果推出輕巧App(App Clips)的應用,輕巧 App是 App的一部分,可以讓使用者可以在不需要從App Store上下載完整應用程式的情況下,直接開啟App Clip 並使用部分App的功能。使用者可以透過 NFC、QR Code、Apple map、Safari ,iMessage等方式開啟App Clip。

限制

  1. iOS 14.3或以上(掃描開啟App Clip)
  2. 容量大小限制在10MB以內
  3. App Clip須與App一起送審,一個App 只能擁有一個App Clip
  4. 若裝置上有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的使用者體驗

  1. 在 Xcode中使用 invocation URL來 Debug
  2. 新增一個 Local experience on a device 藉由 QRCode 或 NFC來開啟
  3. 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

  1. onContinueUserActivity(_:perform:)(SwiftUI)
  2. scene(_:continue:)( UISceneDelegate)
  3. 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

感謝您的閱讀!如有任何問題請留評論。

謝謝!

--

--

Owen
Owen

Written by Owen

Swift autodidact / Unity technical artist / Spark AR Studio creator / https://wenchung.wixsite.com/website

No responses yet