Firebase Dynamic Links:概要、リンクの作成と統合

著者: IT Sectr 公開日: 2026-04-29 読了時間: 9 分

Firebase Dynamic Linksは、ユーザーをモバイルアプリ内の正しい場所またはウェブサイトに導くスマートリンクを作成するGoogleのサービスです。デバイスにアプリがインストールされているかどうかに応じて動作します。Dynamic Linksは、アプリストアからのインストール後、初回起動時でも遷移コンテキストを保持します。Firebaseドキュメント(2026年)によると、動的リンクは単一のAPIで処理され、アプリを開く、ウェブサイトに移動する、アプリをインストールするという動作を自動的に決定します。このサービスは、紹介プログラム、オンボーディングシナリオ、マーケティングキャンペーンに不可欠です。

重要なポイント

  • Dynamic Links — アプリをインストールするか、既にインストールされているアプリを目的の画面で開くかを自動的に判断するスマートリンクです。
  • Deferred Deep Linking — インストール後の初回起動時に遷移コンテキストを保持:ユーザーはメイン画面ではなくターゲット画面を表示します。
  • リンクドメイン — Firebase Consoleでブランド化できるyour-app.page.link形式のカスタムドメインです。
  • クライアント側処理 — リンクはFirebase Dynamic Links SDKを介してAndroidおよびiOSで処理され、引数がintentまたはsceneに渡されます。
  • 分析 — FirebaseはDynamic Linksを介したクリック、インストール、遷移の統計を自動的に収集します。

Firebase Dynamic Linksは、モバイルアプリまたはウェブサイト内の目的のコンテンツに導く単一のリンクを作成するGoogleのテクノロジーです。プラットフォームとインストール状況に応じて動作を適応させます。リンクはデバイスにアプリがインストールされているかどうかを確認し、インストールされている場合はパラメータを渡してアプリを開き、インストールされていない場合はGoogle PlayまたはApp Storeにリダイレクトしてインストール後、ターゲット画面にリダイレクトします。

主要機能:Deferred Deep Linking

通常のディープリンクに対するDynamic Linksの主な利点は、遅延ディープリンクのサポートです。Deferred Deep Linkingとは、アプリがまだインストールされていない場合でも、遷移コンテキスト(リンクパラメータ)が保持されることを意味します。ユーザーがストアからアプリをインストールすると、Dynamic Links SDKが保存されたコンテキストを読み取り、目的の画面に渡します。この技術がないと、ユーザーはインストール後にメイン画面に移動するだけで、プロモコード、招待、特定の注文へのリンクを失うことになります。

使用例

Dynamic Linksは紹介プログラムで、招待者のアカウントに紐付けて新規ユーザーを獲得するために使用されます。マーケティングキャンペーンでは、メールニュースレターやソーシャルネットワークからの遷移にDynamic Linksを使用して、正確なコンバージョン測定を行います。オンボーディングシナリオでは、リンクが新規ユーザーをパーソナライズされたコンテンツのウェルカム画面に導きます。Eコマースでは、商品リンクがコンテキストを保持し、インストール後の初回起動時でも商品カードに導きます。

Dynamic Linksの仕組みは複数の段階で構成され、各段階はアプリの状態に応じて異なります。ユーザーが動的リンクをクリックすると、ブラウザがFirebaseサーバーにリクエストを送信します。Firebaseはintent-filterまたはuniversal linkの確認を通じてアプリがインストールされているかどうかをチェックします。アプリがインストールされている場合、Firebaseはディープリンクを渡してアプリを開きます。インストールされていない場合は、ストアページまたはウェブバージョンにリダイレクトします。

動的リンクの構造

標準的なDynamic Linkは、ベースURL、リンクパラメータ、オプションのマーケティングタグで構成されます。ベースURLは、Firebase Consoleに登録されたyour-app.page.link形式のドメインです。ディープリンクパラメータはクエリパラメータで設定されます:link(アプリ内のターゲットURL)、apn(Androidパッケージ名)、ibi(iOSバンドルID)、stおよびsd(ソーシャルプレビューのタイトルと説明)。マーケティングタグutm_source、utm_medium、utm_campaignはトラッキングのためにGoogle Analyticsに渡されます。

パラメータ説明
linkターゲットディープリンクhttps://yourapp.page.link/product/123
apnAndroidパッケージ名com.example.myapp
ibiiOSバンドルIDcom.example.myapp.ios
stソーシャルタイトル特別オファー
sdソーシャル説明初回注文30%オフ

Firebase Consoleは、Engage > Dynamic LinksセクションでDynamic Linksを作成するためのビジュアルインターフェースを提供します。コンソールでは、ディープリンク、ウェブ動作、ソーシャルメタデータ、UTMタグを含むすべてのリンクパラメータを設定できます。リンク作成後、コンソールは使用可能なURLと、クリック数や遷移数の統計を提供します。一括リンク作成には、OAuth 2.0認証付きのFirebase Dynamic Links REST APIが使用されます。

REST APIによるリンク作成

プログラムによるDynamic Linksの作成には、Firebase Dynamic Links APIへのPOSTリクエストが使用されます。リクエスト本文には、ディープリンクパラメータ、プラットフォーム設定、ソーシャルメタデータを含むdynamicLinkInfoが含まれます。APIはhttps://your-app.page.link/abc123形式の使用可能なURLを返します。長期リンクにはsuffix.option = UNIQUE(一意のサフィックス付き短縮リンク)が使用されます。一時リンクにはSHORT(衝突の可能性あり)が使用されます。

js
const axios = require("axios")

const apiUrl = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY"

const data = {
    dynamicLinkInfo: {
        domainUriPrefix: "https://yourapp.page.link",
        link: "https://yourapp.com/promo/summer",
        androidInfo: { androidPackageName: "com.example.myapp" },
        iosInfo: { iosBundleId: "com.example.myapp.ios" },
        socialMetaTagInfo: {
            socialTitle: "夏季キャンペーン",
            socialDescription: "月末まで最大50%オフ"
        }
    },
    suffix: { option: "UNIQUE" }
}

axios.post(apiUrl, data)
    .then(res => console.log(res.data.shortLink))
    .catch(err => console.error(err))

短縮リンクとUTMタグ

Dynamic Linksは自動的にドメイン後6~8文字の短縮URLを生成し、SMSやソーシャルネットワークでの使用に適しています。UTMパラメータはutmParametersフィールドまたはlinkパラメータに直接追加されます。FirebaseはDynamic LinksのクリックをFirebase用Google Analyticsに自動的にリンクし、リファラルトラフィックとキャンペーンアトリビューションの追跡を可能にします。

AndroidへのDynamic Links統合

AndroidでのDynamic Links設定には、Firebase SDKの追加、ディープリンクを受け取るアクティビティのintent-filter設定、Firebase Dynamic Links SDKによるリンク処理が含まれます。SDKのインストールとgoogle-services.jsonの追加後、アプリのドメインからのリンクを処理するためにAndroidManifest.xmlでintent-filter付きアクティビティを登録する必要があります。

AndroidManifestでのintent-filter設定

Dynamic Linksを処理するアクティビティには、VIEWアクションとDEFAULTおよびBROWSABLEカテゴリのintent-filterが必要です。AndroidManifest.xmlには、ディープリンクに対応するandroid:scheme、android:host、android:pathPrefixを持つdataタグが含まれます。page.linkドメインからのリンクを処理するには、httpsスキームとDynamic Linksドメインホストを持つintent-filterも追加されます。

xml
<!-- AndroidManifest.xml -->
<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name=
            "android.intent.action.VIEW" />
        <category android:name=
            "android.intent.category.DEFAULT" />
        <category android:name=
            "android.intent.category.BROWSABLE" />
        <data android:scheme="https"
            android:host="yourapp.com"
            android:pathPrefix="/promo" />
    </intent-filter>
</activity>

コードでのリンク処理

intent-filterの設定後、アクティビティコードで受信したDynamic Linkを処理する必要があります。FirebaseDynamicLinks APIはintentからリンクを受け取り、抽出されたパラメータを持つPendingDynamicLinkDataオブジェクトを返します。getLinkメソッドはターゲットディープリンクを返し、解析してナビゲーションに使用できます。コールドスタート(onCreateのgetIntent経由)とホットスタート(onNewIntent経由)の両方でリンクを処理することが重要です。

iOSへのDynamic Links統合

iOSでのDynamic Links設定には、Firebase側とXcodeプロジェクトの両方での設定が必要です。Firebase ConsoleにAPNsキーをアップロードし、Swift Package ManagerまたはCocoaPodsを介してFirebase SDKを追加し、Universal Linksを処理するようにApp Delegateを設定する必要があります。iOSのDynamic LinksはUniversal Linksを使用して、中間ページなしでブラウザとアプリ間のシームレスな遷移を実現します。

Universal Linksの設定

Universal Linksは、ドメインをモバイルアプリに接続するAppleのテクノロジーです。apple-app-site-association(AASA)ファイルはhttps://your-app.page.link/apple-app-site-associationのサーバーにアップロードされます。FirebaseはDynamic Linksドメイン用にこのファイルを自動的に作成および維持します。Xcodeでは、Associated Domainsを有効にし、プロジェクトのCapabilitiesでapplinks:your-app.page.linkを指定する必要があります。

Firebase SDKによるリンク処理

iOSの場合、Dynamic Links処理はApp DelegateまたはScene DelegateのFirebase SDKを介して行われます。application:continueUserActivity:メソッドは受信したUniversal Linkをインターセプトし、Firebase Dynamic Links APIに渡してターゲットリンクとパラメータを抽出します。Firebase SDKはFirebase Installation APIの短期ストレージを介してインストールデータを要求し、Deferred Deep Linksを自動的に処理します。

swift
import FirebaseDynamicLinks

class AppDelegate: UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        continue userActivity: NSUserActivity,
        restorationHandler: @escaping
            ([UIUserActivityRestoring]?) -> Void
    ) -> Bool {
        return DynamicLinks.dynamicLinks()
            .handleUniversalLink(userActivity.webpageURL!) {
                dynamicLink, error in
                if let link = dynamicLink?.url {
                    self.handleDeepLink(link)
                }
            }
    }
}

Kotlinでの実装例

Kotlinを使用したAndroidアプリでのDynamic Link処理の完全な例を見てみましょう。MainActivityは、アプリのコールドスタートとホットスタートの両方で受信したDynamic Linkを読み取ります。リンクはパラメータに解析され、引数を渡して目的の画面にナビゲーションするために使用されます。この例では、プロモーションキャンペーン識別子を持つプロモーションページへのリンク処理を示しています。

kotlin
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        handleDynamicLink(intent)
    }

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        handleDynamicLink(intent)
    }

    private fun handleDynamicLink(intent: Intent) {
        FirebaseDynamicLinks.getInstance()
            .getDynamicLink(intent)
            .addOnSuccessListener { data ->
                val deepLink = data?.link ?: return@addOnSuccessListener
                val promoId = deepLink
                    .getQueryParameter("promoId") ?: ""
                if (promoId.isNotEmpty()) {
                    navigateToPromoScreen(promoId)
                }
            }
            .addOnFailureListener { e ->
                Log.e("DL", "リンク処理エラー", e)
            }
    }
}

Dynamic Linksのテスト

Dynamic Linksのテストには、Firebase Consoleを使用します。テストリンクを作成し、メッセンジャーやメールでデバイスに送信できます。Firebase Dynamic Linksデバッガーはhttps://your-app.page.link/?d=1で利用可能で、リンクの動作に関する詳細情報を表示します。Deferred Deep Linksをテストする際は、アプリがアンインストールされていることを確認し、インストール後にリンクが渡されたパラメータで正しい画面に導くことを確認する必要があります。

よくある質問

Dynamic Linksと通常のディープリンクの違いは何ですか?

通常のディープリンクはアプリがインストールされている場合にのみ機能し、インストール後にコンテキストを保持しません。Dynamic LinksはDeferred Deep Linkingをサポートしており、ユーザーがアプリをインストールすると、保存されたリンクパラメータとともに直ちにターゲット画面に移動します。

Dynamic Linksを機能させるためにサーバーは必要ですか?

リンクの作成と処理にサーバーは不要です — すべての操作はFirebase Console、REST API、またはクライアント側のFirebase SDKを介して実行されます。一括リンク生成にはREST APIが推奨されますが、手動作成にはコンソールが適しています。

Dynamic Linkの有効期間はどのくらいですか?

Dynamic Linksに有効期限はありません — 手動で削除されない限り、Firebaseに永続的に保存されます。UNIQUEサフィックスの短縮リンクは無期限に存在します。正確なアトリビューションのために、キャンペーンごとに一意のリンクを作成することをお勧めします。

Dynamic Linksはオフラインでも機能しますか?

Dynamic Linkの処理には、Firebaseサーバーがアプリのインストール状態を確認するため、クリック時にインターネット接続が必要です。リンク処理後、データはintentまたはUniversal Linkを介してアプリに渡され、オフラインでも利用可能になります。

Firebase Dynamic Linksの料金はいくらですか?

Firebase Dynamic LinksはSparkプランで無料です。Blazeプランでは、追加料金なしで1日あたり5万クリックの制限があります。制限を超えると、翌日まで新しいリンクの作成がブロックされます。

まとめ

  • Firebase Dynamic Links — ユーザーをアプリまたはウェブサイトに導き、アプリがない場合はインストール後にコンテキストを保持してストアに導くスマートリンクです。
  • Deferred Deep Linking — インストール後の初回起動時にコンテキスト(プロモコード、招待、商品リンク)を渡すことができる主な利点です。
  • リンク構造には、ベースドメイン(your-app.page.link)、ディープリンクパラメータ、プラットフォーム設定、プレビュー用のソーシャルメタデータが含まれます。
  • リンク作成は、Google Analyticsとの統合のためのUTMタグをサポートするFirebase Console、REST API、またはFirebase SDKを介して行われます。
  • Androidへの統合には、AndroidManifestでのintent-filter設定と、コールドスタートおよびホットスタートをサポートするFirebaseDynamicLinks APIによる処理が必要です。
  • iOSへの統合は、AASAファイル、Associated Domains、およびAppDelegateまたはSceneDelegateでのDynamicLinks SDKによる処理を備えたUniversal Linksを使用します。
  • 無料 — 1日あたり最大5万クリック、リンクの有効期限なし、ブランディングのためのカスタムドメイン作成機能付き。

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください