WWDC Quick Look 💓 By SwiftGGTeam
Explore App Clips

Explore App Clips

元の動画を見る

ハイライト

Apple は、App Clip を完全なアプリと一緒に送信される 2 番目のアプリケーション ターゲットとして定義しています。これにより、ユーザーは、App Store Connect に登録されたエクスペリエンス URL、10 MB のサイズ制限、システムのクリーンアップ/移行メカニズムを通じて、QR コード、NFC、Safari、メッセージ、またはマップのシナリオで短いタスクを直接完了できます。

主要内容

食事の注文、駐車場の支払い、パーキングメーターのリマインダー、または店内のチェックアウト機能を実行する場合、完成したアプリは多くの場合、ホームページ、タブバー、リスト、詳細ページから目的の操作までずっと進みます。駐車料金の支払いの山の前に立っているユーザーは、店舗を見つけてアカウントを登録し、機能を閲覧してから支払いの入り口を見つけることを望んでいません。 App Clip のエントリ ポイントはこの瞬間です。ユーザーはすでに現場にいて、システムはユーザーをそのタスクに直接誘導する必要があります。 (04:40)

Apple が提供するモデルは、アプリ全体、App Clip Experience (エクスペリエンス URL)、App Clip 自体の 3 つの部分で構成されます。エクスペリエンス URL は、iOS 14 の App Clip に渡されます。QR コード、NFC タグ、Safari、メッセージ、マップは、この URL をシステムに取り込むための入り口にすぎません。 (00:58)

実装には特別な魔法はありません。開発者は、Xcode で 2 番目のアプリケーション ターゲットを作成し、必要なコード、依存関係、およびリソースを App Clip ターゲット メンバーシップに追加して、完成したアプリとともにレビューのために送信します。完全なアプリがインストールされると、システムは最初に完全なアプリを開きます。 App Clip がインストールされていない場合、システムは App Clip をダウンロードして開始します。 (02:55)

これは、App Clip がプロセスを再設計する必要がある理由も説明しています。アプリ全体のナビゲーション構造をコピーすることはできません。 Session は、タブ バーなどのトップレベルのナビゲーションを省略し、ユーザーが URL から対応するタスクに直接移動できるように、さまざまなエクスペリエンスごとに別の URL を用意することを直接推奨しています。店舗での受け取り、配達の注文、異なる店舗はすべて異なる入り口になる必要があります。 (05:06)

App Clip の境界も同様に明確です。間引き後は 10MB 未満でなければなりません。そのデータはシステムによって無害化できます。カスタム URL スキーム、ドキュメント タイプ、またはユニバーサル リンクを登録することはできません。その後、ユーザーが完全なアプリをインストールすると、システムはカメラ、マイク、Bluetooth 認証を移行し、開発者が共有データ コンテナを介してビジネス データを転送できるようにします。 (03:46)

詳細

エクスペリエンス URL を含むエントリを定義する

(01:26) App Clip Experience の基礎は URL です。 Apple は、ユニバーサル リンクとユニバーサル リンクを特別に区別しています。ユニバーサル リンクを扱ったことがある人なら、App Clip URL の扱いには馴染みがあるでしょう。違いは、App Clip URL が Apple-App-Site-Association ファイルで定義されず、App Store Connect に登録されることです。

App Store Connect
└─ App Clip Experience URL
   ├─ QR code
   ├─ NFC tag
   ├─ Safari link
   ├─ Messages link
   └─ Maps business detail

キーポイント:

  • URL は App Clip Experience の ID であり、エントリー チャネルはこの URL をシステムに渡すことのみを担当します。
  • App Clipがストアに公開された後、URLが開かれたときにシステムは対応するエクスペリエンスを表示します
  • App Clip Codeは、ユーザーがタップまたはスキャンできるNFCコードとビジュアルコードを組み合わせたものです

Xcode で 2 番目のターゲットを作成する

(06:53) Luming は Fruta デモを使用して、App Clip を作成するプロセスを示します。新しい App Clip ターゲットを作成し、名前を付けます。Fruta Clip, Xcode はそれを完全なアプリに自動的に埋め込み、名前とバンドル識別子を入力します。次に、必要な依存関係、共有アセット カタログ、および Swift ソース ファイルを App Clip に追加します。

Fruta app
└─ Fruta Clip target
   ├─ Dependency: Nutrition Facts
   ├─ Shared Assets: app icon, colors, ingredient, smoothie
   ├─ Included source: Model, Orders, Smoothies, Ingredients
   └─ Excluded source: Store, Recipes, top-level tab navigation

キーポイント:

  • App Clip ターゲットは、完成したアプリと一緒に構築され、レビューのために送信されます。個別にアップロードすることはできません
  • ターゲットメンバーシップは、ボリュームを制御するための最初のドアです。現在のタスクを完了するために必要なファイルのみをチェックしてください。
  • デモでは注文パスが保持され、レシピ、ストアのロック解除、トップレベルのタブ ナビゲーションが削除されます。

コンパイル条件を使用してアプリの完全な機能を分離する

(09:38) Fruta Clip の最初のビルドは失敗します。OrderPlacedView.swiftApp Clipから除外された参照Store。解決策は、Swift コンパイラーにデバッグとリリースの両方を追加することです - カスタム フラグAPPCLIP条件、それからStore関連参照は条件付きでコンパイルおよび分離されるため、この部分のみが完全なアプリ ターゲットに残ります。

キーポイント:

  • APPCLIP実際にデモで追加したカスタムコンパイル条件です
  • ビルド エラーは、ターゲット メンバーシップとコード参照の間の不一致によって発生します。
  • 条件付きコンパイルにより、アプリ クリップには現在のタスクのみを含めることができながら、完全なアプリで高度な機能を保持できるようになります

NSUserActivity を使用してさまざまなエクスペリエンスをルーティングする

(12:07) App Clip は、UIKit または新しい SwiftUI アプリのライフサイクルを使用できます。起動時に、App Clip または完全なアプリが受信しますNSUserActivity。 App Clip が複数のエクスペリエンスをサポートしている場合は、アクティビティの Web ページ URL を読み取り、現在どのエントリが処理されているかを確認します。

Launch event: NSUserActivity
Routing detail: read the web page URL on the activity
UI frameworks: UIKit or SwiftUI app lifecycle

キーポイント:

  • NSUserActivityこれは、このセッションで明示的に言及された起動入力です。
  • アクティビティ上の Web ページ URL を読んで、複数の App Clip エクスペリエンスを区別します
  • これらのエクスペリエンスは、完全なアプリがインストールされた後も処理し続ける必要があります。ユーザーは、アプリのインストールによって元の入り口を失うことがないようにしてください。

App Clipのライフサイクルに合わせてデータを設計する

(14:14) App Clip はユーザー管理を必要としません。ユーザーが使用を終了した後、長期間再度開かなかった場合、iOS は App Clip、そのデータ コンテナ、キーチェーン データを削除します。頻繁に使用される App Clip のライフサイクルは延長されますが、開発者は引き続きローカル データを一時キャッシュとして扱う必要があります。

App Clip data
├─ standard container: temporary cache
├─ Keychain data: deleted with App Clip cleanup
└─ shared group container: migration path to the full app

キーポイント:

  • 標準コンテナ内のデータはシステムによって削除される可能性があり、独自のビジネス ステータスを保存するのには適していません。
  • ユーザーがフルアプリをインストールすると、App Clip は削除されます
  • 移行する必要があるデータは、事前に共有グループ データ コンテナーに配置し、完全なアプリのインストール後にコピーする必要があります。

システム機能を使用して投入コストを削減する

(17:36) App Clip は短くて速いことを目指しています。セッションでは、いくつかのタイプのシステム機能を指定しました。Apple Pay は支払いを処理し、通知は駐車期限が切れたら食べ物を買うか駐車するよう人々に思い出させます、SwiftUI はウィジェット スタイルのインターフェイスを再利用します。SKOverlayまたは、SwiftUI の App Store オーバーレイ修飾子を使用して、完全なアプリをダウンロードすることができます。ASAuthorizationControllerログインを処理するか、Apple でサインインします。

Payment: Apple Pay
Upgrade: SKOverlay / App Store overlay modifier
Account: ASAuthorizationController
Federated sign-in callback: ASWebAuthenticationSession
Location check: location confirmation API

キーポイント:

  • Apple Pay と Apple でのサインインにより、App Clip でのフォーム入力を減らすことができます
  • フェデレーション サインイン コールバックのカスタム URL スキームに依存しないでください。セッションを使用することをお勧めします。ASWebAuthenticationSession- 位置確認 API は、App Clip に遭遇したばかりのユーザーに完全な位置許可を求めることを避けるために、ユーザーが予想される位置にいることを確認するために使用されます。

重要ポイント

  • 何をすべきか: 既存の購入プロセスをストア固有の App Clip に分割します。 実行する価値がある理由: セッションでは、異なるエクスペリエンスを表すために異なる URL を使用することを推奨しています。ストア URL は、ストア チューザーをスキップして、現在のストアの商品またはサービスを直接入力できます。 開始方法: まず、カウンターでの注文など、固定のシーンを選択します。店舗ごとに独立した体験URLを用意し、App Clip内のアクティビティ上のWebページURLを読み取って店舗を特定します。

  • やるべきこと: アプリ全体に対して、目標メンバーシップを削減する演習を実行します。 実行する価値がある理由:間引き後の App Clip は 10MB 未満である必要があり、Fruta デモではレシピ、ストアのロック解除、タブ ナビゲーションを除外することでスコープを制御します。 開始方法: 新しい App Clip ターゲットを作成し、モデル、現在のタスク ページ、共有アセットをターゲット メンバーシップに 1 つずつ追加します。ビルドが失敗したときに使用しますAPPCLIPアプリの完全な機能を条件付きで分離します。

  • 対処方法: App Clipのローカルデータを「一時キャッシュ+移行データ」の2階層に変更します。 実行する価値がある理由: iOS は App Clip、標準コンテナ、キーチェーン データを削除する可能性があります。ユーザーが完全なアプリをインストールすると、共有グループ データ コンテナーのみが、移行する必要があるビジネス データを引き継ぐことができます。 開始方法: 最新の注文、ユーザー ID、下書きステータスを分類します。一時的な表示データを標準コンテナに置き、インストール後に保持するデータを共有グループコンテナに書き込みます。

  • やるべきこと: Apple Pay でゼロフォームのトランザクション パスを作成し、Apple でサインインします。 実行する価値がある理由: App Clip ユーザーは通常、長いフォームに記入する忍耐力がありません。 Session は Apple Pay の使用を明確に推奨していますが、ASAuthorizationControllerApple でサインインすると、タイピングが軽減されます。 開始方法: 最初に訪問者のプロセスを維持し、支払いを行う前に Apple Pay に接続します。アカウントが必要な場合は、「Apple でサインイン」を使用してユーザーを作成または関連付け、メインタスクの完了後に完全なアプリをダウンロードするように求められます。

  • やるべきこと: App Clip の完全なアプリ中継ポイントを設計します。 実行する価値がある理由: ユーザーは、App Clip を気に入った後、完全なアプリをインストールできます。セッションがオススメです。SKOverlayまたは、SwiftUI の App Store オーバーレイ修飾子がアップグレードをガイドします。 開始方法: タスク完了ページにダウンロード エントリを配置し、タスクの前にユーザーをインターセプトしないでください。 App Clip のステータスを共有コンテナに書き込むことで、完全なアプリケーションが最初に起動されたときに以前のコンテキストを継続できるようになります。

関連セッション

コメント

GitHub Issues · utterances