ディープリンクをサポートする

バージョン 1.2.0 以降、Navigation 3 では、 DeepLinkRequest クラスと DeepLinkMatcher クラスを使用して、アプリ内のデスティネーションへのディープリンクがサポートされています。

アプリでディープリンクをサポートするには、次の手順を完了します。

  1. アプリが処理できる URI を指定するには、AndroidManifest.xmlインテント フィルタを定義 します。
  2. 受信リクエストを ナビゲーション キーにマッピングするDeepLinkMatcher インスタンスを作成 します。
  3. アクティビティの onCreate メソッドまたは onNewIntent メソッドで受信リクエストを照合 し、それに応じてバックスタックを更新します。

DeepLinkRequest を作成する

DeepLinkRequest は、受信ディープリンクを表します。これには、 DeepLinkUri と、インテントのアクションや MIME タイプなどの追加 情報を含むオプションの RequestExtras が含まれます。

DeepLinkRequest のエクストラを提供する

ディープリンクに関連する追加情報を保存するには、 RequestExtras クラスを使用します。エクストラを型安全に定義してインスタンス化するために、 ライブラリには RequestExtrasKey インターフェースと requestExtras DSL が用意されています。

また、ライブラリには 2 つのエクストラキーと関連するヘルパーが用意されています。

  • MimeTypeExtrasKey: MIME タイプ String の保存に使用します。
  • ActionExtrasKey (Android のみ): Intent のアクション String の保存に使用します。

独自のカスタム エクストラを定義するには、型付きの汎用を使用して RequestExtrasKey インターフェースを実装します。

emptyRequestExtras() を使用して空のインスタンスを作成したり、 +plus)演算子と -minus)演算子を使用してエクストラを組み合わせたりすることもできます。

Intent から DeepLinkRequest を作成する

Android では、Intent から直接 DeepLinkRequest を作成できます。この方法で作成された DeepLinkRequest は、次のように構築されます。

  • uri は、インテントの data フィールドからコピーされます。
  • null でない場合、MIME タイプとアクションの エクストラは、 対応するインテント フィールドから設定されます。
  • null 以外の値を持つ intent.extras はすべて、DeepLinkRequest.IntentExtrasKeySavedState として保存されます。
  • extras パラメータを使用して指定された追加のエクストラが追加されます。

A DeepLinkMatcher は、受信した DeepLinkRequest インスタンスを アプリのバックスタックに追加できるナビゲーション キーにマッピングします。Navigation 3 には、UriDeepLinkMatcherStaticKeyDeepLinkMatcherBackStackMatcher の 3 つの組み込みマッチャーが用意されています。また、組み込み マッチャーでカバーされていないユースケースで使用するカスタム マッチャーもサポートしています。

詳細については、DeepLinkMatcher を作成するをご覧ください。

インテント フィルタを追加する

ディープリンクでアクティビティを開始できるようにするには、アプリの AndroidManifest.xml で一致する <intent-filter> 要素を定義する必要があります。詳細については、受信リンク用のインテント フィルタを追加するをご覧ください。

受信リクエストを照合する

`DeepLinkMatcher` インスタンスを作成DeepLinkMatcherしたら、アクティビティで受信リクエストを照合できます。

受信リクエストを照合するには、次の手順を完了します。

  1. DeepLinkMatcher インスタンスをインスタンス化 します。
  2. 明示的に、または マルチバインディングを使用して、すべてのDeepLinkMatcherインスタンスを**照合**します。
  3. 受信した Intent から DeepLinkRequest作成 します。
  4. すべてのマッチャーに対してリクエストを照合 し、最適な一致を見つけます。
  5. 照合結果からバックスタックを作成 します。