Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

動的リンクのカスタムドメインを設定する

page.linkサブドメインの代わりに独自のドメインを使用することで、Dynamic Links のブランディングをより詳細に制御できます。カスタム ドメインを使用すると、次の例のようなダイナミック リンクを作成できます。

https://example.com/link-suffix
https://example.com/links/promos/link-suffix
https://links.example.com/link-suffix
https://ex.amp.le/link-suffix

link-suffixの前の URL の部分はURL プレフィックスと呼ばれ、カスタム Dynamic Link ドメインとパス プレフィックスの両方が含まれます。 Dynamic Links を作成するときは、URL プレフィックスを指定する必要があります。

カスタム ドメインを設定するには、Firebase プロジェクトに対する編集者または所有者の権限が必要です。

ダイナミック リンクにウェブ ドメインを使用する

ダイナミック リンクとウェブ ページ、ユニバーサル リンク、アプリ リンクに同じドメインを使用できますが、その場合、ダイナミック リンク URL がウェブ URL と競合しないように注意する必要があります。特定の URL プレフィックスを使用するようにダイナミック リンクを構成すると、そのプレフィックスで始まるすべての URL がダイナミック リンクとして扱われるため、そのプレフィックスを持つ URL を使用して通常のホストされているコンテンツを指すことはできません。

たとえば、リソースhttps://example.com/my-resource (Web ページ、ユニバーサル リンク、またはアプリ リンク) へのダイナミック リンクを作成する場合、 https://example.com/は使用できません。 https://example.com/をダイナミック リンクの URL プレフィックスとして使用します。これを行うと、 https://example.com/my-resourceがダイナミック リンクとして扱われるためです。代わりに、別のドメインまたは別のパス プレフィックスを持つ URL プレフィックスを使用する必要があります。

したがって、次の長い形式のダイナミック リンク (および同等の短いリンク) は、 linkパラメータで指定された URL がダイナミック リンク 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 コンソールでカスタム ドメインを完全に設定できます。そうするために:

  1. プロジェクトに Firebase Hosting を設定していない場合は、Firebase コンソールの [ホスティング] ページを開き、[開始する] をクリックして、設定手順をクリックします。現時点では、示された手順を完了する必要はありません。

  2. Firebase コンソールのダイナミック リンク ページを開きます。

  3. 以前に Dynamic Links を使用したことがない場合は、[開始する] をクリックします。それ以外の場合は、ドロップダウン メニューから [ URL プレフィックスの追加] をクリックします。

    次に、プロンプトが表示されたら、使用するドメインとパスのプレフィックスを指定して、セットアップ ウィザードを完了します。

  4. 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 用に既にカスタム ドメインが設定されていて、別のドメインを追加する場合や、ホスティング サイトに既に接続されているドメインを追加する場合など、状況によっては、カスタム ドメインを手動で設定する必要があります。

そうするために:

  1. まだ行っていない場合は、ドメインを Firebase Hosting に接続します

    Firebase Hosting を使用してドメインをセットアップするには、ローカル プロジェクト ディレクトリに構成ファイルfirebase.jsonを作成する必要があります。

  2. Firebase CLI の最新バージョン (v6.5.0 以降) に更新します

  3. プロジェクトのfirebase.jsonファイルでダイナミック リンク用にホスティング サイトを構成します。プロジェクトに複数のサイトがある場合は、使用するドメインに接続されたサイトを構成してください。

    • appAssociationAUTOに設定します。この設定では、Hosting は、 assetlinks.jsonapple-app-site-associationファイルが要求されたときに動的に生成します。

    • dynamicLinkstrueに設定して書き換えルールを設定することにより、Dynamic Links に使用するパス プレフィックスを指定します。これらのパスへのリクエストは、ダイナミック リンクにプロキシされます。

      URL へのパスを書き換えるルールとは異なり、Dynamic Link 書き換えルールには正規表現を含めることはできません。

      サイトに複数の書き換えルールがある場合、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
    

    このドメインをダイナミック リンクにのみ使用する場合は、ソース パス/**を使用して、パス プレフィックスのないダイナミック リンクを作成できます。

    {
      "source": "/**",
      "dynamicLinks": true
    }
    

    上記のルールを使用すると、次の例のような動的リンクを作成できます:

    https://your-domain/link-suffix

  4. ホスティング構成の変更をデプロイします:

    firebase deploy --only hosting

    (オプション) Hosting REST APIを使用して、デプロイされたfirebase.jsonコンテンツを確認できます。

  5. 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
    } ]
    
  • ダイナミック リンクに使用するサブドメインを設定し、 source属性をそのサブドメインに一致するように設定します。たとえば、 links.example.comのサブドメインがある場合、書き換えルールは次のようになります。

    // Domain is links.example.com
    "rewrites": [ {
      "source": "/**",  // Dynamic Links start with "https://links.example.com/"
      "dynamicLinks": true
    } ]