Dynamic Links のブランディングを詳細に管理するには、page.link
サブドメインではなく、独自のドメインを使用します。カスタム ドメインを使用すると、次の例のようなダイナミック リンクを作成できます。
https://example.com/link-suffix https://example.com/links/promos/link-suffix https://links.example.com/link-suffix https://ex.amp.le/link-suffix
URL の link-suffix より前の部分は URL 接頭辞 と呼ばれ、ダイナミック リンクのカスタム ドメインとパス接頭辞が含まれています。ダイナミック リンクを作成するときは、URL 接頭辞を指定する必要があります。
カスタム ドメインを設定するには、Firebase プロジェクトに対する編集者またはオーナーの権限が必要です。
ウェブドメインを Dynamic Links に使用する
ウェブページ、ユニバーサル リンク、アプリリンクとダイナミック リンクに同じドメインを使用できますが、その場合は、ダイナミック リンク URL がウェブの URL と競合しないように注意してください。特定の URL 接頭辞を使用するように Dynamic Links を構成している場合、その接頭辞で始まるすべての URL はダイナミック リンクとして扱われるため、この接頭辞の付いた URL を使用して通常のホスト コンテンツを指定することはできません。
たとえば、リソース https://example.com/my-resource
(ウェブページ、ユニバーサル リンク、アプリリンク)のダイナミック リンクを作成する場合に Dynamic Links URL 接頭辞として https://example.com/
を使用すると、https://example.com/my-resource
がダイナミック リンクとして扱われるため、この接頭辞は使用できません。代わりに、別のドメインまたは別のパス接頭辞を含む URL 接頭辞を使用する必要があります。
したがって、次に示す長い形式のダイナミック リンク(および同等な短いリンク)は、link
パラメータで指定された URL の先頭に Dynamic Links URL 接頭辞 https://example.com/
が付いているため、意図したとおりに機能しません。
https://example.com/?link=https://example.com/my-resource https://example.com/?link=https://example.com/resources/my-resource
ただし、次に示す長い形式のダイナミック リンク(および同等な短いリンク)は、URL 接頭辞が link
の URL と競合しないため機能します。
https://link.example.com/?link=https://example.com/my-resource https://example.com/links/?link=https://example.com/my-resource https://ex.amp.le/?link=https://example.com/my-resource
Firebase コンソールでカスタム ドメインを設定する
通常、カスタム ドメインは Firebase コンソールですべて設定できます。方法は次のとおりです。
プロジェクトに Firebase Hosting を設定していない場合は、Firebase コンソールの [Hosting] ページを開き、[始める] をクリックして設定手順を進めます。この時点で指示された手順を完了する必要はありません。
Firebase コンソールの [Dynamic Links] ページを開きます。
これまでに Dynamic Links を使用したことがない場合は、[始める] をクリックします。それ以外の場合は、プルダウン メニューから [URL 接頭辞を追加] をクリックします。
次に設定ウィザードを完了し、プロンプトが表示されたら、使用するドメインとパス接頭辞を指定します。
iOS のみ: Xcode プロジェクトの
Info.plist
ファイル内でFirebaseDynamicLinksCustomDomains
キーを作成し、アプリの Dynamic Links URL 接頭辞にこのキーを追加します。次に例を示します。<key>FirebaseDynamicLinksCustomDomains</key> <array> <string>https://example.com/link</string> <string>https://example.com/promos</string> </array>
カスタム ドメインを手動で設定する
Dynamic Links のカスタム ドメインがすでに設定されていて別のドメインを追加する場合や、Hosting サイトにすでに接続されているドメインを追加する場合は、状況に応じてカスタム ドメインを手動で設定する必要があります。
方法は次のとおりです。
まだドメインを Firebase Hosting に接続していない場合は、接続します。
Firebase Hosting を使用してドメインを設定するには、ローカル プロジェクトのディレクトリ内に構成ファイル
firebase.json
を作成します。最新バージョンの Firebase CLI に更新します(v6.5.0 以降)。
プロジェクトの
firebase.json
ファイル内で、Dynamic Links 用の Hosting サイトを構成します。プロジェクトに複数のサイトが含まれている場合は、使用するドメインに接続されているサイトを構成してください。[
appAssociation
] を [AUTO
] に設定します。このように設定すると、assetlinks.json
ファイルとapple-app-site-association
ファイルがリクエストされたときに、Hosting がこれらを動的に生成します。dynamicLinks
をtrue
に設定して書き換えルールを設定することにより、Dynamic Links に使用するパス接頭辞を指定します。これらのパスに対するリクエストは、Dynamic Links にプロキシされます。URL のパスを書き換えるルールとは異なり、ダイナミック リンクの書き換えルールに正規表現を含めることはできません。
ご使用のサイトに複数の書き換えルールがある場合は、リクエストと一致する最初の書き換えルールが Hosting によって実行されることにご注意ください。
例:
"hosting": { // ... "appAssociation": "AUTO", "rewrites": [ { "source": "/promos/**", "dynamicLinks": true }, { "source": "/links/share/**", "dynamicLinks": true } ] }
上記の構成を使用すると、次の例のような URL 接頭辞を持つダイナミック リンクを作成できます。
https://your-domain/promos/link-suffix https://your-domain/links/share/link-suffix
このドメインを Dynamic Links 専用にする場合は、
/**
というソースパスを使用して、パス接頭辞を持たないダイナミック リンクを作成します。{ "source": "/**", "dynamicLinks": true }
上記の規則を使用して、次の例のようなダイナミック リンクを作成できます。
https://your-domain/link-suffix
Hosting の構成に関する変更をデプロイします。
firebase deploy --only hosting
(省略可)デプロイされた
firebase.json
の内容は、Hosting REST API を使用して確認できます。iOS のみ: Xcode プロジェクトの
Info.plist
ファイル内でFirebaseDynamicLinksCustomDomains
キーを作成し、アプリの Dynamic Links URL 接頭辞にこのキーを追加します。次に例を示します。<key>FirebaseDynamicLinksCustomDomains</key> <array> <string>https://example.com/promos</string> <string>https://example.com/links/share</string> </array>
Dynamic Links と Hosting の優先順位
Dynamic Links ではホスティングの優先順位に注意する必要があります。
- Dynamic Links URL 接頭辞は、それよりも優先度の高いホスティング構成と競合しないようにします。たとえば、ホストされる静的コンテンツは必ず再書き込みよりも優先されます。
rewrites
属性内では、Hosting のレスポンスは、リクエストされたパスをキャプチャする最初のsource
glob によって指定されたルールに従います。
たとえば、your-domain/source-path/link-suffix
のダイナミック リンクが設定されていて、your-domain/source-path/index.html
に静的コンテンツがある場合は、静的コンテンツが優先されます。エンドユーザーにはダイナミック リンクではなく index.html
が表示されます。同様に your-domain/source-path/link-suffix
に静的コンテンツがある場合は、エンドユーザーにはダイナミック リンクではなく静的コンテンツが表示されます。
Dynamic Links と Hosting の両方に同じブランディングを使用する場合は、Dynamic Links URL 接頭辞に次のいずれかのオプションを使用することを検討してください。
パス接頭辞と一致するように
source
属性を設定します。たとえば、example.com
というカスタム ドメインがある場合は、再書き込みルールを次のようにします。// Domain is example.com "rewrites": [ { "source": "/links/**", // Dynamic Links start with "https://example.com/links/" "dynamicLinks": true } ]
Dynamic Links に使用するサブドメインを設定してから、そのサブドメインと一致するように
source
属性を設定します。たとえば、links.example.com
というサブドメインがある場合は、再書き込みルールを次のようにします。// Domain is links.example.com "rewrites": [ { "source": "/**", // Dynamic Links start with "https://links.example.com/" "dynamicLinks": true } ]