WWDC Quick Look 💓 By SwiftGGTeam
Create App Clips for other businesses

Create App Clips for other businesses

元の動画を見る

ハイライト

App Clip は、ユーザーがアプリの機能をすぐに体験できる方法として考えられています。しかし、セッション 10118 は、App Clip の別の重要な用途を明らかにしています。それは、プラットフォーム企業としての企業顧客向けのすぐに使えるサービスとしてです。

主要内容

多くのプラットフォームベースのアプリは、もともとオフライン販売者のためのポータルとして機能します。レストランのディレクトリ、メンバーシップ ポイント、駐車場の支払い、予約サービスはすべてこのカテゴリに分類されます。過去の問題は、プラットフォームの検出パスが完全なアプリ内でロックされることが多いことでした。ユーザーは、店舗のメニュー、ポイント、予約ページを見つける前にアプリをインストールする必要がありました。

小規模な販売者には、独自の iOS アプリを保守するエネルギーがないことがよくあります。ホワイト ラベル サービス プロバイダーは別の問題に直面することになります。各顧客はブランド センスを維持したいと考えていますが、顧客ごとに 1 つのアプリを使用すると、開発、レビュー、メンテナンスのコストが増加し続けることになります。セッション 10118 で指定されるパスは、複数の販売者の App Clip エクスペリエンスを 1 つの App Clip バイナリに統合し、App Store Connect で販売者ごとに独立した高度な App Clip エクスペリエンスを作成することです。

ユーザーの観点から見ると、Fantastico レストラン、Mandy and Jason ストア、Reward+ ポイントの入り口は別の App Clip のようなものです。さまざまなエクスペリエンス URL、カード タイトル、ヘッダー画像、アクション ボタン、アイコンを持つことができます。エンジニアリングの観点から見ると、これらのエクスペリエンスはバイナリを共有し、URL、通知ルーティング、現在のセッション状態に依存して正しい販売者ページにアクセスします。

これにより、App Clip が「完全なアプリへのトライアル エントリ ポイント」からプラットフォーム機能に変わります。アプリはカタログ、トランザクション、アカウント システムを担当します。各販売者は独自の NFC、QR コード、アプリ クリップ コード、位置情報の提案、または Safari の入り口を取得します。ユーザーはアプリ全体をインストールしなくても短いタスクを完了できます。

詳細

マルチマーチャントの App Clip に適しているのはどの製品ですか?

(00:41) Appleはまず3つの判断基準を示した。まず、アプリに多くの販売者が集約され、ユーザーはディレクトリを通じて販売者を見つけます。第二に、あなたがサービスを提供している小規模販売者は独自のアプリを持っていません。 3 番目に、特定の業界で多くのホワイトラベル アプリを作成しており、それらを 1 つの保守可能なアプリに統合したいと考えています。

これらのシナリオに共通するのは、ビジネスの入口が多数あり、中核となるプロセスが類似しており、ブランドを分離する必要があるということです。 Food Grid のようなレストラン ディレクトリは、各レストランのエクスペリエンスを作成できます。 Reward+ のようなポイント サービスでは、顧客はオフライン コードをスキャンして特典を受け取ることができます。ホワイト ラベル アプリのメーカーは、テンプレート アプリをコードのセットに組み合わせることができます。

一个 App Clip binary
├── https://foodgrid.example/fantastico
├── https://foodgrid.example/mandy-and-jason
└── https://foodgrid.example/metatop

キーポイント:

  • foodgrid.example/fantasticoトランスクリプトからの通知ルーティングの例。マーチャントのエクスペリエンス URL プレフィックスを表します。
  • 各 URL は、どのマーチャント エクスペリエンスを開始するかを決定するためにシステムによって使用される、Advanced App Clip Experience に対応します。
  • バイナリは 1 つだけですが、ブランドの入り口は多数存在する可能性があります。

まず完全なアプリを準備します

(04:43) 実装手順は、完成したアプリから始まります。完成したアプリは、まず各販売者を処理できる必要があります。ディレクトリの参照、検索、カテゴリ表示、ビジネス データ、販売者ページがすべて存在する必要があります。ホワイト ラベル アプリは、複数のテンプレートを 1 つのメイン アプリに結合するのに適しています。

(05:55) 完全なアプリもユニバーサル リンクをサポートする必要があります。 App Clipのリンク処理はNSUserActivity完全なアプリのディープ リンク モデルがアプリ クリップに明確に入力されるほど、アプリ クリップのルーティングの一貫性を維持することが容易になります。

func route(_ userActivity: NSUserActivity) {
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
          let incomingURL = userActivity.webpageURL
    else {
        return
    }

    openBusinessExperience(for: incomingURL)
}

キーポイント:

  • NSUserActivityTypeBrowsingWebトランスクリプトに記載されているブラウジング Web タイプの呼び出しに対応します。 -webpageURLは、App Clip が販売者と特定のタスクを識別するために使用するエクスペリエンス URL です。 -openBusinessExperience独自のルーティング層を表す特定のページは、既存のビジネス データから取得する必要があります。

App Clip ターゲットを作成し、入り口に接続します

(06:23) 完全なアプリを準備した後、Xcode で新しい App Clip ターゲットを作成し、メイン アプリに必要なコード、リソース、およびフレームワークの依存関係を選択して配置します。 Session は、App Clip がメイン App の一部とみなされ、大量のコードが再利用できることを明確に強調しています。

(06:48) イングレス接続は、関連するドメインの構成、処理の 3 つで構成されます。NSUserActivityをクリックし、App Store Connect の [詳細] セクションに移動して、App Clip カードを構成します。これにより、ユーザーは NFC タグ、QR コード、または App Clip コードから特定のマーチャント エクスペリエンスを入力できるようになります。

准备入口的最小清单
1. App Clip target: 只包含即时任务所需代码和资源
2. Associated domains: 让体验 URL 能匹配到 App Clip
3. NSUserActivity: 从 URL 解析商家和任务
4. Advanced App Clip Experience: 为每个商家配置卡片和审核项

キーポイント:

  • ターゲットは「実行可能」を担当します。
  • 関連ドメインは「システムがそれを見つけることができる」責任があります。 -NSUserActivity「打ち上げ後の行き先」を担当。
  • Advanced App Clip Experience は、「各販売者がどのように表示され、レビューされるか」を担当します。

通知は正しい販売者にルーティングされる必要があります

(07:45) マルチマーチャント App Clip の最初の特別な問題は通知です。通知は、特定の App Clip エクスペリエンスではなく、App Bundle に送信されます。 iOS では、通知が Fantastico のものなのか、Mandy と Jason のものなのかを判断するために追加情報が必要です。

(08:19) 通知内容を記入する方法ですtargetContentIdentifierの値は、通知の内容を説明する URL です。 iOS は最長のプレフィックス マッチングを実行します。フィールドプレフィックスがfoodgrid.example/fantastico、システムは通知を Fantastico の App Clip エクスペリエンスにルーティングします。

let content = UNMutableNotificationContent()
content.title = "Fantastico"
content.body = "Your order is ready."
content.targetContentIdentifier = "https://foodgrid.example/fantastico"

キーポイント:

  • targetContentIdentifierこのルートのキーフィールドです。
  • URL プレフィックスは、App Store Connect で構成されたエクスペリエンス URL に対応する必要があります。
  • マルチマーチャント エクスペリエンスでは、通知をバンドルのみで処理することはできません。そうでない場合、システムは通知がどのマーチャントに属しているかを認識できません。

同じ URL でセッションを再度開かないでください

(08:48) 2 番目の特別な問題はセッション状態です。 App Clip を呼び出すたびに、ブラウジング Web タイプが表示されます。NSUserActivity。ユーザーが Fantastico で食べ物を注文し、メッセージに切り替えて、App ライブラリから Fantastico を開いた場合、システムは同じ URL を再度渡します。

(09:51) コードが URL を認識して新しいページをプッシュすると、ユーザーのショッピング カートは失われます。これを処理する正しい方法は、まず新しい URL が現在の実行中のセッションに対応するかどうかを比較することです。別のマーチャントまたは別のタスクに切り替える場合のみ、現在の状態を保存して新しいセッションに入ります。

func continueExperience(with incomingURL: URL) {
    if currentSession.matches(incomingURL) {
        restoreCurrentScreen()
        return
    }

    saveCurrentSession()
    startSession(for: incomingURL)
}

キーポイント:

  • matches判断は、販売者 ID、テーブル番号、注文 ID などのビジネス ルーティングに基づいて行われます。
  • 同じエクスペリエンス URL は現在のページ スタックをクリアしないでください。
  • App Clips はマルチウィンドウをサポートしていないため、さまざまなマーチャントエクスペリエンスに入る前に状態を保存する必要があります。

各販売者は独自の App Clip カードを持っている必要があります

(11:20) メイン アプリと埋め込みアプリ クリップを送信した後、App Store Connect で販売者ごとに高度な App Clip Experience を作成します。このプロセスには、エクスペリエンス URL を指定し、「アプリを利用して別のビジネス、サービス、またはブランドを宣伝する」を選択し、審査のために送信することが含まれます。

(12:40) App Clipカードはユーザーが初めて目にする入り口です。各販売者は、ヘッダー画像、表示タイトル、サブタイトル、位置の関連付け、アクションを個別に設定できます。セッションでは、タイトルとサブタイトルがプラットフォーム アプリではなく販売者を表す必要があることを特に思い出させます。

experienceURL: "https://foodgrid.example/fantastico"
presentation: "promote a different business, service, or brand"
card:
  headerImage: "Fantastico.png"
  displayTitle: "Fantastico"
  subtitle: "Order Food"
  action: "Open (Order Food)"

キーポイント:

  • これは構成マニフェストであり、App Store Connect API ペイロードではありません。
  • ヘッダー画像はApp Clipカードおよびロード画面に表示されます。高品質の PNG または JPG をアップロードすることをお勧めします。
  • アクションは、開く、表示、再生などの事前定義されたリストから取得されます。物理的な場所をバインドすると、マップ コンテキストでより多くのアクションが発生します。

アイコンには 3 つの意味があります

(15:25) 最後の部分はアイコンです。セッションは、アプリ アイコン、アプリ クリップ アイコン、アプリ エクスペリエンス クリップ アイコンを区別します。アプリ アイコンは完全なアプリを表し、App Clip カードの下部にある所有権情報とアプリ バナーに表示されます。

(15:52) アプリクリップアイコンは、マルチタスクスイッチャー、通知、設定など、システムがこのアプリクリップ全般を参照するときに表示されます。 iOS では、アプリ アイコンに基づいて App Clip の境界線処理が自動的に適用されるため、正方形の不透明なアイコンを提供する必要があります。

(16:37) アプリクリップエクスペリエンスアイコンは、特定のマーチャントエクスペリエンスを表します。これは常に URL に関連付けられており、クリックすると、App Clip がエクスペリエンス URL で起動されます。物理的な場所を持つ販売者の場合、このアイコンはマップの名所アイコンと一致します。販売者は Maps Connect にアイコンをアップロードすることもできます。

app icon                  -> 完整 App 的归属
app clip icon             -> 这个 App Clip binary
app clip experience icon  -> 某个商家体验和它的 URL

キーポイント:

  • マルチマーチャント App Clip のブランド感は主にカードのメタデータとエクスペリエンス アイコンから得られます。
  • ビジネスアイコンがない場合、iOS は劇場、ショッピング、食事、駐車場などの一般的なカテゴリのアイコンに戻ります。
  • アイコンと URL のバインディングにより、ユーザーは特定の販売者の App Clip を開いているような気分になります。

重要ポイント

1. QR コードをスキャンして複数の店舗で食べ物を注文します

  • やるべきこと: レストランごとに独立したアプリ クリップ コードを生成します。ユーザーはコードをスキャンした後、レストランのメニューまたはテーブル番号のページに直接入力します。
  • 価値がある理由: Session の Food Grid の例は、レストランのディレクトリ プラットフォームです。高度な App Clip エクスペリエンスにより、各レストランは独自のカード、ヘッダー画像、タイトルを保持できます。
  • 開始方法: まず、体験 URL にレストラン ID、店舗 ID、テーブル番号を入れてから、NSUserActivity.webpageURL対応するメニューページに入ります。

2. オフラインポイント収集入口

  • やるべきこと: 販売者がオフライン素材に NFC タグ、QR コード、または App Clip コードを配置できるようにすると、顧客はコードをスキャンしてプロモーション コードを入力したり、ポイントを受け取ったりします。
  • 価値がある理由: Reward+ の例は、中小企業が独自のアプリを開発しなくても、このプラットフォームを使用してアプリのようなエクスペリエンスを提供できることを示しています。
  • 開始方法: 各販売者のエクスペリエンス URL を設定し、URL プレフィックスをバックエンドの販売者の権利ルールにマッピングします。

3. ホワイトラベルアプリがプラットフォームアプリに統合される

  • やるべきこと: 複数の同様のホワイトラベル アプリを完全なアプリと App Clip バイナリに結合すると、各顧客は独立したブランド エントランスを保持できます。
  • 実行する価値がある理由: セッションでは、適用可能なシナリオとして「複数のテンプレート アプリを 1 つのアプリにマージする」ことが明確にリストされており、メンテナンス コストが大幅に削減されます。
  • 開始方法: まず顧客の差異を構成レイヤーに移動し、次に App Clip に URL に従って顧客のブランド、機能スイッチ、およびビジネス データをロードさせます。

4. マルチマーチャント通知センター

  • 対処方法: 注文、予約、通話のキューイングなどの通知はすべてマーチャント エクスペリエンス URL とともに提供されるため、システムは通知を適切な App Clip エクスペリエンスに割り当てることができます。
  • 実行する価値がある理由: 通知は App Bundle にのみ送信されます。targetContentIdentifierそうして初めて、iOS が最長のプレフィックス マッチングを実行できるようになります。
  • 開始方法: 販売者 URL プレフィックスを通知コンテンツに書き込み、App Store Connect のエクスペリエンス URL と一致していることを確認します。

5. App Clip の状態回復

  • 内容: ユーザーが同じ販売者の App Clip を繰り返し開いたときに、ショッピング カート、予定の下書き、入力の進行状況を保存します。
  • 実行する価値がある理由: Fantastico のセッションの例は、同じ URL を受信した直後にページを再度開くと、以前の実行中のセッションが失われることを示しています。
  • 開始方法: 現在の販売者とタスク ID をルーティング層に保存します。新しいNSUserActivityそれが到着したら、まずそれが現在のセッションと一致するかどうかを判断します。

関連セッション

  • App Clip を探索する — まず App Clip の基本モデルを確立し、App Clip と完全な App の関係を理解し​​ます。
  • App Clip を設定してリンクする — 関連ドメインを完成させます。NSUserActivity、スマートアプリバナーとテストプロセス。
  • App Clip を合理化する — 取引の圧縮、急な通知、位置確認、App Clip から完全なアプリへの移行について詳しく説明します。
  • 優れた App Clip をデザインする — App Clip のフロー、通知コピー、タイミングをデザインの観点からアプローチし、完全なアプリのダウンロードに導きます。

コメント

GitHub Issues · utterances