ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
App Clipを設定し、リンクする
App ClipはApp内の小さなパーツで、効率的で直接的な体験を提供し、適時必要なものを入手するサポートをします。App Clipコード、NFC、QRコードといった実世界での体験を通じてApp Clipを起動したり、MapsやSafariといったAppからデジタルで出現させる方法を学べます。App Clip内でのリンクの取り扱い、関連ドメインの設定方法もお見せします。App Store Connect内でApp Clip体験を設定する方法、あなたのウエブサイトにApp Clipバナーを追加する方法、TestFlightを使ってApp Clipの完全なテストを行う方法についても触れていきます。 このセッションを有効に活用するには、Universal Linksと関連ドメインを使った経験があることが望ましいです。事前準備として、WWDC19の「ユニバーサルリンクの新機能」をご覧ください。
リソース
- App Clips
- Configuring the launch experience of your App Clip
- Fruta: Building a Feature-Rich App with SwiftUI
- Responding to invocations
関連ビデオ
WWDC23
WWDC21
WWDC20
- ユニバーサルリンクの新機能
- 他のビジネス向けのApp Clipを作成する
- 優れたApp Clipをデザインする
- App Clipのストリームライン化
- App Clipの紹介
- App Store Connectの新機能
WWDC19
-
ダウンロード
こんにちは WWDCへようこそ “App Clipsを設定し、リンクする” App Clipのエンジニア エイダです App Clipへのリンクについて 全てをお見せするため 同僚のルーミンも途中から参加します
App Clipは― 最小限のフリクションでAppを体験するための エントリーポイントを提供します ユーザがタスクの実行で Appの機能を必要とする場合 App Clipがディープリンクナビゲーションで シームレスにユーザに提示されます このセッションでは App Clipへのリンクを処理し その構成に必要な作業について 説明します 最初に App Clipを使用して タスクを実行する方法の例を見てみましょう
スムージースタンドをたまたま見つけたとします 冷たいスムージーが飲みたいと思いますね
「ご注文はここをタップしてください」という NFCタグを見つけます
タップするとスムージーを注文するApp Clipの 説明が記載されたカードが 画面下部にポップアップ表示されます
「Open」ボタンをタップすると App Clipが起動し スムージーの注文ページに直接移動します
Apple Payで購入を完了すると スムージーを手にすることができます
リンクの魔法はこれらのステップで実現します NFCのタグはApp Clipエクスペリエンスに登録されている URLをエンコードしたものです これについては後半で ご説明します 「Open」をタップすると NSUserActivityを介して渡される URLでApp Clipが起動し App Clipによって注文ページに直接移動します
NFCの他にも App Clipのリンクは 他の場所にも表示されます これらは 物理タグや ビジュアルコードにエンコードされたり 地図上の実際の場所に 関連付けられたURLです これらのリンク方法をそれぞれ見ていきましょう
先ほどの例で述べたように NFCのタグにApp ClipのURLをエンコードして ユーザがスマートフォンをタップし App Clipを開けるようにします
App ClipのURLはQRコードに エンコードすることもできます 人々はそれをスキャンして App Clipを開くことができます
App Clipのリンクは 登録済みのお店のMaps place cardに表示され Siriの周辺検索にも表示されます
SafariからApp Clipを開くこともできます WebページにApp Clip用の Smart App Bannerが設定されている場合 ユーザはそのバナーの「Open」をタップして App Clipを開くことができます
そして そのWebページのURLを含む iMessageを送信すると 特別なApp Clipのリンクの 吹き出しとして表示され ユーザはApp Clip またはSafariでリンクを開くことができます
さらに優れた体験を提供するために 今年後半にAppleは 新しいApp Clipコードをリリースします これはユーザがApp Clipを見つけるための 最良の方法です それは視覚的に美しくはっきりしているので ユーザがそれを見るとApp Clipが あることがわかります
各App ClipコードはURLをエンコードします Appleは今年 これらの美しいビジュアルコードを 作成できるツールを リリースする予定です
App Clipへのリンクをたどる さまざまな方法を見てきました 次に開発者がこのApp Clipのリンクを設定する手順を 見ていきましょう
最初に これらのリンクを App Clipで処理できるように WebサーバーとApp Clipのプロジェクトファイルを 変更する必要があります
次に ユーザにApp Clipを紹介し またApp Clipエクスペリエンスの一部である App Clipカードを構成する必要があります App Store Connectで Defaultおよび Advanced App Clip Experiencesを設定できます
最後に App ClipをWebページに表示するように Smart App Bannerを構成しましょう Webページのコンテンツを より優れた より合理化された App Clipエクスペリエンスとして配信したい場合は このバナーを追加して― ユーザがWebページからApp Clipにアクセスする 方法を提供することを検討してください
まずリンク処理のためにWebサーバーとApp Clipを 構成することから始めましょう
Webサイトの代わりにApp ClipがURLの コンテンツを表示できるようにするには ウェブサイトとApp Clipの関連付けを 検証する必要があります App Clipをサーバーに安全に関連付けるには App ClipにAssociated Domainsのentitlementを設定し Webサーバーに apple-app-site-associationファイルを置く必要があります 次にNSUserActivityからの リンクを処理するために App Clipのコードを更新する必要があります
まず Webサーバー上の apple-app-site-associationファイルを更新し
このファイルは サーバーのルートフォルダ内の ./well-knownサブディレクトリにあります 以前にAppのユニバーサルリンクを 設定したことがあれば サーバーにこのファイルが既に設定されていて ルートディクショナリには― Webクレデンシャルやapplinksなどの 他のエントリーがすでにあるはずです このファイルで新しいApp Clipの関連付けを 宣言するには キー「appclips」を使用して ルートディクショナリに別のエントリを追加し App ClipのApp IDの配列を値とした 単一の「apps」キーを持つ― ディクショナリを追加します
次に App Clipのプロジェクトファイルに Associated Domainsのentitlementを追加します
Xcodeで プロジェクト設定に移動し Associated Domainsのcapabilityを追加します
「Domains」に 「appclips:」 という新しい文字列を追加します
ウェブサイトとApp Clipの両方に 関連ドメインが設定されたので App Clipに渡されるURLを含むNSUserActivityを 処理するコードを追加しましょう
App Clipが新しいSwiftUI appライフサイクルを 採用している場合は このようにWebブラウジングのユーザアクティビティの ハンドラーを追加します これでNSUserActivityから WebページのURLプロパティを取得できます 次に そのURLを解析して リンクされたコンテンツにユーザを誘導できます
ユーザがApp Clipから Appにアップグレードすると App Clipへのリンクのナビゲーションは Appの起動に代わることにご注意ください ユニバーサルリンクのURLを処理する 同様のコードが Appにも実装されていることを確認してください
App ClipがUIKitの SceneDelegateライフサイクルを使用している場合 UISceneDelegateに入ってくる ユーザアクティビティを処理する― 同様のコードを次に示します
関連ドメインの設定方法とNSUserActivitiesの 処理方法については 「Universal Linksに関する新機能」 セッションを参照してください
XcodeでApp Clipの URL処理コードをテストするために App Clipに渡すテストURLを指定できます Xcodeでスキームエディターを開きます 「arguments」タブを選択します
「Environment Variables」で _XCAppClipURLを指定します XcodeからApp Clipを実行すると このURLで起動されます
WebサーバーとApp Clipの構成が完了したので App Clipエクスペリエンスを構成しましょう
各App Clipエクスペリエンスは ユーザがApp Clipのリンクをタップしたときに 表示されるApp Clipカードから始まります App Clipに関する情報を表示し それを開くためのユーザの同意を求めます
App Clipカードの構成に使用する メタデータを考えるとき カードの最適なレイアウト表示の為 タイトルとサブタイトルの長さに関する これらの要件に従ってください また すべてのデバイスで 最高のユーザエクスペリエンスを実現するために 画像のサイズ 縦横比 およびフォーマットの要件もあります 選択する画像はこのApp Clipアクションが 提供する体験と一致する必要があります
次に App Store Connectで App Clipカードを設定します
AppとApp Clipの両方を含むビルドを App Store Connectに配信すると 新しいApp Clipの構成をする セクションが表示されます App Store ConnectでDefaultおよびAdvanced App Clip Experiencesを構成する方法です
Default App Clip Experiencesの メタデータには App Clipカードの画像 サブタイトル アクションの動詞が含まれます 選択可能な事前定義されたアクションの リストがあります このメタデータは SafariのSmart App Banner およびメッセージのApp Clipの リンクの吹き出しで使用されます そしてカードが表示される時に App Clipカードにも使用されます
Safariとメッセージ以外からもApp Clipに アクセスできるようにしたい場合は こちらの「Get Started」リンクをクリックして Advanced App Clip Experiencesを 設定する必要があります 各Advanced App Clip Experiencesは NFCタグなどの物理タグまたはQRコードに エンコードできるURLに関連付けられているため これらの物理的な呼び出し方法から App Clipを起動できます
イントロダクション画面をクリックすると このページが表示され Advanced App Clip Experiencesの URLを指定できます 同じApp Clipに対して異なるURLを持つ複数の Advanced App Clip Experiencesを設定できます 複数のApp Clipエクスペリエンスの例を 少し紹介します
次のページで 画像 タイトル サブタイトルを設定し このエクスペリエンスのApp Clipカードの アクション動詞を選択します このApp Clipエクスペリエンスを 物理的な場所に関連付けることもできます
次に Advanced App Clip Experiencesの いくつかの使用例と これらのエクスペリエンスのURLを登録する ベストプラクティスを見てみましょう
1つのApp Clipで さまざまな種類のタスクを処理できるため 同じApp Clipに対して異なる App Clipエクスペリエンスをカスタマイズできます たとえば このレストランのApp Clipは ユーザに2種類のエクスペリエンスを提供します ユーザがメニューを表示して注文できる フードオーダーエクスペリエンスと 顧客がテーブルを予約できる 予約エクスペリエンスです
この場合 2つのAdvanced App Clip Experiencesを 設定します 1つはmelamela.example/order 画像はメニューの写真であり サブタイトルは「View menu and order」です また もう一つはmelamela.example/reservationで レストランの写真で サブタイトルは「Reserve a table」です
URLがApp Clipにマッピングされる方法について 覚えておくべきことの1つは 登録された App Clipエクスペリエンス URLに対する― 最長プレフィックス・マッチに 基づいていることです つまりビジネスで起こりうる全てのApp Clipの URLをひとつひとつ登録する必要はありません
ただし 登録済みのエクスペリエンスURLが プレフィックスとしてのみ使用されている場合でも App Clipは登録されているURLでの起動を 処理できる必要があることに注意してください これは Siriの周辺検索及びマップから App Clipが呼び出されたときに起こります これは1つのApp ClipエクスペリエンスのURLを 登録して 複数の呼び出しURLを処理する方法の例です 自転車店にはオンラインの 自転車レンタルシステムがあります ID番号で識別される 何百ものレンタル自転車があります
これらの自転車を予約するためのURLは クエリ文字列引数でそのIDを指定します
幸い URLはプレフィックス・マッチに 基づいて 一致するため 自転車店は全てのURLに対してAdvanced App Clip Experiencesを登録する必要はありません 登録する必要があるのは たった1つのApp Clipエクスペリエンス URL https://bikesrental.example/rentだけです たったこれだけで そのプレフィックスと クエリ文字列引数を持つこれら全ての自転車のURLに App Clipエクスペリエンスを提供できます
ここから DefaultおよびAdvanced App Clipエクスペリエンスの設定を開始できます この例のカフェは複数の店舗を持つ 大きなチェーン店であり 各店舗は基本的に 顧客に同じような体験を提供しています
すべての店舗に共通のURL形式があり https//brighteggcafe.example/store/で 始まる為 そのURLプレフィックスにApp Clip エクスペリエンスを登録するだけで済みます 顧客がいずれかの店舗へのリンクをたどると 同じApp Clipカードを入手できます
しかし コーヒーショップが― クパチーノの旗艦店にもっと特別な App Clipエクスペリエンスを提供したいとします そうするためには 異なる画像とサブタイトルを使用し 異なるApp Clipエクスペリエンス用の クパチーノ店舗URLを登録します ここでの主な重要ポイントは ほとんどの場合をカバーする― より短く より一般的なURLプレフィックスを登録し 異なるApp Clipエクスペリエンスを 提供する必要がある場合にのみ より詳細なURLを登録できることです
App Store ConnectでのDefaultおよび Advanced App Clip Experiencesの― セットアップの詳細については 「App Store Connectの新機能」セッションを 参照してください また App Clipカードのデザインに関する ベストプラクティスについては 「優れたApp Clipをデザインする」のセッションを 参照してください
App Clipへのリンクを 処理する最後の手順に進みましょう Smart App Bannerを設定してApp Clipを開きます
これは このバナーが設定されている WebページのURLが送信されたときに Safariまたはメッセージで WebページからApp Clipを開く方法です
以前にAppのSmart App Bannerを 設定したことがあれば Appの識別子を指定するために WebページのHTMLに追加する― apple-itunes-app タグを よくご存知だと思います App Clipにこのバナーを設定するには コンテンツ属性app-clip-bundle-idを App ClipのバンドルIDに設定します app-id属性も引き続き設定する必要があります そうすることで iOS 14よりも古いシステムのユーザに対し フルAppへのリンク動作にフォールバックします
Safariは バナーを表示する前に― WebサイトとApp Clip間の ドメインの関連付けを確認します
デフォルトでは ユーザがSmart App Bannerの 「Open」ボタンをタップすると このApp Clip用に構成された デフォルトのApp Clipカードが表示されます
ただし このURLをAdvanced App Clip エクスペリエンスに登録すると エクスペリエンスのメタデータを カスタマイズして バナーでユーザに よりわかりやすいタイトルを表示し このApp Clipが実行するタスクに合わせた App Clipカードを取得できるようになります
App Clipのリンク処理について 私たちがお話したことをお見せするため 同僚のルーミンにデモをお願いします ルーミン エイダ App Clipへのリンクに関する すばらしい紹介をありがとう App Clipチームのエンジニアである ルーミンです 本日は App Clipへのリンク方法をお見せします 物理的またはデジタルの呼び出しを介して ユーザをApp Clipにリンクするには 最初に関連ドメインを設定する必要があります 私の同僚であるエイダが 先ほど述べたように リンク処理のためにWebサーバ―と App Clipプロジェクトの両方を構成する必要があります それでは まずWebサーバーから始めましょう
ここに 私のWebサーバーの ソースコードがあります 非常に単純な静的なWebサイトです 私のWebサーバーのルートディレクトリの下には ./well-knownフォルダが既に作成されており その中にapple-app-site-associationファイルが あります 私のAASAファイルは ユニバーサルリンク ハンドオフ およびPassword AutoFillを使用した Webクレデンシャル用にすでに設定されています ここで行う必要があるのはAASAファイルを更新して App Clipにリンクすることだけです
このようにします
Webサーバーの構成が完了したので Fruta Xcodeプロジェクトに戻りましょう
App Clipをリンクするには NSUserActivityTypeBrowsingWebタイプの userActivityを処理するように登録する必要があります App ClipのWindowGroup宣言で TypeBrowsingWebの新しいonContinueUserActivity ハンドラーを追加します
その中で 入ってくるURLを解析して URL内のqueryItemsを取得します
その後 「smoothie」という名前の 最初のqueryItemを取得します それが存在する場合は データストアのselectedSmoothieIDを スムージー識別子である そのURLパラメーターに設定します Fruta Xcodeプロジェクトに戻り 「Signings and Capabilities」タブに移動します その中に 新しい機能を追加します 「associated domains」を追加します
この機能を展開し プラスボタンをクリックして 新しい関連ドメインを追加します ここでは 「appclips:fruta.example」と入力します 関連ドメインを設定したので App Clipをデバッグするための 起動URLを構成しましょう これを行うには 「Target 」ポップアップボタンをクリックし 「Edit Scheme」をクリックします Environment Variablesセクションには 値「example.com」が すでに入力されていることがわかります
ここで必要なのは 名前 _XCAppClipURLの環境変数の前にある チェックボックスに チェックを入れることだけです
その中に App Clipが解析できるURLを入力します App Clipはsmoothie=berry-blue パラメータを取得します
エディターを閉じて デバイスでクリップをビルドおよび実行します
ほら 私たちのAppは Appの起動URLを自動的に解析し Berry Blueスムージーに移動しました 注文し Apple Payで支払います
そして 私の注文ができ上がるのを待ちます
どうやら私のスムージーが出来上がったようです
スムージーを美味しく楽しみたいですが まだデモの続きがあります 私はすでにFrutaAppを App Store Connectに送信しており エイダが先ほど説明したフローを使用して App Store Connectで App Clipカード エクスペリエンスを 構成しているため このNFCタグで スマートフォンをタップすると App Clipカードが表示され 物理的な呼び出しでここでクリップを起動できます
別の方法として 同僚のエイダが 前半でご説明したように SafariのSmart App Bannerを 使用する方法があります
今 Webサイトのソースに戻りました index.htmlファイルで App Clipに新しいメタタグを追加するだけです
コンテンツとして 「apple-itunes-app」と 「app-clip-bundle-id」という名前を指定しました iOS 14より以前のiOSリリースを実行しているユーザが 引き続きSmart App Bannerを見ることができるよう app-idパラメーターを 保持していることに注意してください そして ユーザにApp StoreからAppを ダウンロードするよう通知します
いいですね 変更をサーバーにプッシュした後 スマートフォンに戻り Safariでfruta.exampleに移動します
ご想像のとおり― fruta.exampleは.exampleドメインであり 非売品ですが 今年は多くの制作予算があります 皆様方は 爽快な14時間のドメインオークション マラソンに参加することができます もちろん 以前と同じように Webページのメニューを閲覧することもできますが ページの上部に新しいSmart App Bannerがあります 「Open」をタップすると NFCを介して物理的に呼び出したときと同じ App Clipカードが表示されます
「Open」をタップすると 再びApp Clipが表示されます
これは App Clipへのリンクに関する 簡単なデモです ありがとうございました エイダに戻ります App Clipでリンクを設定する方法を 見せてくれてありがとう ルーミン そのBerry Blueのスムージーは とても爽やかでしたね
簡単に説明したいことがもう1つあります それは App Clipのベータテストです
AppとApp Clipの両方を含むビルドを App Store Connectに配信した後 TestFlightで App Clipのテスト呼び出しポイントを追加する 新しいApp Clipセクションを 見つけてください そうすることで ベータ版テスターは さまざまなApp Clipエクスペリエンスの URLをテストできます 「Add App Clip Invocation」をクリックして
ベータ版テスターに試してもらいたい App Clipエクスペリエンスの タイトルとURLを設定します
App Store Connectでの App Clipのテストと送信の詳細については 「What's New in App Store Connect」セッションを ご参照ください
要約すると このセッションでは 新しいApp Clipサービスタイプに 関連付けられたドメインを設定し App ClipでWebブラウジングのNSUserActivityを 処理することにより App Clipへのリンク処理の方法 そして
App Store ConnectでDefailt およびAdvanced App Clipエクスペリエンスを構成する方法 App Clipエクスペリエンスの登録時に使用する URLのベストプラクティスを示しました
そして最後に App Clipをテストするための TestFlightの新機能についてご説明しました
ご覧いただきありがとうございました あなたが作成したApp Clipを見られるのを 楽しみにしています
-
-
5:04 - Update the apple-app-site-association file
{ "appclips": { "apps": [ "ABCDE12345.example.fruta.Clip" ] }, ... }
-
6:17 - Configure app clip for link handling (SwiftUI app life cycle)
import SwiftUI @main struct AppClip: App { var body: some Scene { WindowGroup { ContentView() .onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { userActivity in guard let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return } // Direct to the linked content in your app clip. } } } }
-
6:54 - Configure app clip for link handling (UIKit scene-based life cycle)
// Handle NSUserActivity in UISceneDelegate. class SceneDelegate: UIResponder, UIWindowSceneDelegate { func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { // Get URL components from the incoming user activity guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return } // Direct to the linked content in your app clip. } }
-
14:35 - Configure the Smart App Banner to open app clip (HTML)
<meta name="apple-itunes-app" content="app-clip-bundle-id=com.example.fruta.Clip, app-id=123456789">
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。