ドキュメント

呼び出しへの応答

呼び出しに応答するコードを追加し、的確な起動体験を提供します。

最新の英語ドキュメント

Responding to invocations


概要

ユーザーがタスクをできるだけ迅速に完了できるよう、優れた起動体験を提供することがApp Clipの成功を左右します。App Clipは、起動時にユーザーの状況を認識し、それに合わせてUIを更新する必要があります。たとえば、複数の実店舗を構えるローカルコーヒーショップが、App Clipでドリンクを注文する機能を提供していたとします。ユーザーに店舗を選択してもらってからドリンクメニューを表示する代わりに、App Clipはユーザーの状況を認識し、それに合わせてUIを更新します。ユーザーは店舗を選択する必要がないので、コーヒーのテイクアウトを注文するというタスクをより少ない手順で完了できます。

App Clipが起動時にユーザーの状況に合わせて対応できるように、システムは「呼び出しURL」をApp Clipに渡します。App Clipの起動体験を構成し、呼び出しURLを選択することは、App Clipを作成する上で重要な作業になります。しかし、スムーズで効率的な起動体験を提供するには、App Store Connectで呼び出しURLを構成するだけでは不十分です。呼び出しURLに対応するコードをApp Clipに追加し、UIを更新する必要があります。

呼び出しURLの活用

App Clipと完全版Appのいずれも、呼び出しURLに応答してUIを更新し、ユーザーがすばやく手元のタスクを完了できるようにする必要があります。複数の実店舗を構えるコーヒーショップの例を考えてみてください。その時点での状況に合わせて、ユーザーが店舗を選択しなくてもドリンクをオーダーできるようにする必要があります。App Clipでは呼び出しURLを利用してUIを更新することで、該当する店舗のドリンクメニューをすぐに表示することができます。たとえば、追加のURLパラメータを付けた呼び出しURLを使うことで、App Clipは以下のようにユーザーの状況を認識してUIを更新します。

  1. App Clipを起動する各ドメインのエントリをAssociated Domainsのエンタイトルメント(英語)に追加します。上記の例で言うと、example.comを追加します。通常、この作業はApp ClipターゲットをXcodeプロジェクトに追加する段階で行います。

  2. 追加のパラメータを含む呼び出しURLを使用します(https://example.com/location1https://example.com/location2など)。

  3. 起動時に、ユーザーがある場所から別の場所に切り替えることを想定して、保存されていないデータを保持することで各URLに応答します。そして、新しい位置情報に合わせてUIを更新します。

汎用URLを構成する場合、常にApp Clipと完全版Appの両方でそのURLに対応可能である必要があります。たとえ、そのURLを実際の呼び出しURLのプレフィックスとしてのみ使用しようとしている場合でも、これが該当します。たとえば、高度なApp Store体験の一部としてhttps://example.com/を登録できます。App Clipコードなど、実際の呼び出しでは、https://example.com/location1https://example.com/location2などのURLを使用できます。ただし、App Clipと完全版Appの両方で、https://example.comに対応できるようになっている必要があります。

App ClipとWebサイトの関連付け、および体験の構成について、詳しくは「App ClipのWebサイトへの関連付け(英語)」および「App Clipの起動体験の構成」を参照してください。

呼び出しURLへのアクセス

App Clipが状況に合わせて提供する体験をカスタマイズできるよう、呼び出しに応答するには、呼び出しURLにアクセスする必要があります。呼び出しURLにアクセスするには、App Clipが起動した時にシステムから受け取るNSUserActivity(英語)オブジェクトに問い合わせます。ユーザーが完全版Appをインストールした場合は、呼び出しが実行されるたびに、App Clipに替わり完全版が起動します。App Clipと同じ機能を提供し、同様のユーザー体験を実現するために、完全版Appではすべての呼び出しURLに対応する必要があります。ほとんどの場合、URLに対応するコードを完全版AppとApp Clipの間で共有しておき、App Clipの状態情報を共有コンテナに保存しておくという対処が理にかなっています。このようにしておくことで、完全版AppはApp Clipが保存したすべてのデータにアクセスでき、ユーザーの状況に最も適したAppの機能を起動時に提供することができます。

起動時にNSUserActivity(英語)オブジェクトにアクセスするには、以下のようにします。

起動時に、呼び出しの型がNSUserActivityTypeBrowsingWeb(英語)であることを確認した後、システムがApp Clipに渡したURLにアクセスします。次のコードは、呼び出しURLから構成要素を抽出する関数です。


func respondTo(_ activity: NSUserActivity?) {
        
    // Guard against faulty data.
    guard let activity, activity.activityType == NSUserActivityTypeBrowsingWeb else { return }
    let incomingURL = activity.webpageURL
    guard let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return }


    // Update the user interface based on URL components passed to the App Clip or full app.
}

ライフサイクルイベントへの対応について詳しくは、「Appライフサイクルの管理(英語)」を参照してください。リンクの処理に関する一般的な情報については、「Appでユニバーサルリンクに対応する(英語)」を参照してください。

App Clipと完全版Appの間でのデータ共有について詳しくは、「App Clipに対応するAppでデータを利用可能にする」を参照してください。

コードをすべての呼び出しに対応させる

ユーザーの状況に合ったスムーズで一貫性のあるユーザー体験は、App Clipの機能を左右する重要な要素です。App Clip体験のデザインと構成が重要になるのはそのためです。そのため、さまざまな状況に対応できるコードの作成に時間をかけ、すべての呼び出しURLに対応させ、コードのテストを行うことが非常に重要になります。間違ったデータが入ってくることを想定してシステムを保護し、以下のシナリオに対応してください。

  • 「マップ」Appからの呼び出しおよび位置情報に基づくSiriからの提案で行う呼び出しでは、App Clip体験に登録したURLを呼び出しURLとして使用します。

  • 「メッセージ」AppまたはWebサイトからの呼び出しでは、サイトのURLをApp Clipの呼び出しURLとして使用します。

  • ユーザーが以前起動したApp Clipを、AppライブラリやSpotlightから再び起動する場合、App Clipは前回の起動時に使われた呼び出しURLを使用します。

  • ユーザーが以前起動したApp Clipを、通知またはAppスイッチャーから再び起動する場合、App Clipは呼び出しURLなしで起動します。このケースに対応するには、ユーザーがApp Clipを離れる前にApp Clipの状態を保存し、再起動時に呼び出しURLが渡されなければ、保存した状態を復元するようにします。

関連項目

起動