Firebase Dynamic Links:概要、仕組み、開発での使用方法

著者: IT Sectr 公開日: 2026-05-14 読了時間: 8 分

Firebase Dynamic Linksは、アプリがインストールされているかどうかに関係なく、ユーザーをアプリ内の適切な場所に誘導するスマートリンクを作成するためのGoogleのサービスです。Firebaseドキュメントによると、Dynamic Linksはアプリがインストールされていない場合、ユーザーをApp StoreまたはGoogle Playに自動的にリダイレクトし、インストール後に遷移コンテキストを復元します。Firebaseのスマートリンクは、未インストールのアプリでは機能しないURL Schemeの問題を解決します。

重要なポイント

  • Firebase Dynamic Links — iOSとAndroidで動作し、deferred deep linkをサポートするユニバーサルリンクを作成するGoogleのサービスです。
  • Deferred — 主な利点:アプリがインストールされていない場合でもリンクが遷移コンテキストを保持し、インストール後に復元します。
  • アナリティクス — FirebaseはDynamic Linksのクリックを自動的に追跡し、Firebase AnalyticsとGoogle Analyticsにデータを提供します。
  • プラットフォーム — Dynamic LinksはiOS(Universal Links経由)とAndroid(App Links経由)で、両プラットフォームに単一のユニバーサルリンクで機能します。
  • 作成 — リンクはFirebase Console、REST API、またはクライアントSDKを介して、シナリオごとに動作を設定して生成されます。

Firebase Dynamic Linksは、iOSおよびAndroidのモバイルアプリ向けに統合ユニバーサルリンクを作成するGoogleのクラウドサービスです。動的リンクにはアプリ内コンテンツへのディープリンクが含まれていますが、通常のHTTPSリンクのように動作します:アプリがインストールされている場合は直接開き、インストールされていない場合はアプリストアにリダイレクトします。

通常のURL Schemeとは異なり、Dynamic Linksはdeferred deep linkテクノロジーにより、未インストールのアプリでも機能します。ユーザーがリンクをクリックした後にアプリをインストールすると、Firebaseは遷移パラメータを保存し、初回起動時に渡します。これにより、紹介プログラム、マーケティングキャンペーン、招待状の機会が広がります。

通常のURL Schemeとの違い

URL Schemeではアプリのインストールが必要であり、標準的なフォールバックメカニズムがありません。Firebase Dynamic Linksは、デバイス上のアプリのインストール状況を判断し、ユーザーを正しくルーティングする中間Firebaseウェブサービスを通じてこの問題を解決します。同時に、1つのリンクが両方のプラットフォームで同じように機能します。

Firebase Dynamic Linkは、Firebase Consoleで登録されるyourcode.page.linkのようなドメインを使用します。ユーザーがそのようなリンクをクリックすると、Firebaseはデバイスの種類とアプリのインストール状況を判断します。iOSではUniversal Linksメカニズムが使用され、AndroidではDigital Asset Linksによる自動検証付きのApp Linksが使用されます。

処理フローには複数の順次段階が含まれます:リンクがクリックされると、ブラウザがFirebaseサーバーにGETリクエストを送信し、サーバーがプラットフォームを判断してデバイス上のアプリの有無を確認します。アプリがインストールされている場合は、ターゲット画面を開くためのパラメータ付きのUniversal LinkまたはIntentへのリダイレクトが生成されます。アプリがインストールされていない場合は、ダウンロードのためにApp StoreまたはGoogle Playにリダイレクトします。

Dynamic Linkのライフサイクル

アプリはFirebase SDKの初期化中にリンクを受け取ります。getDynamicLink()メソッドは、遷移データを含むPendingResultを返します。取得に成功すると、ディープリンクパラメータ、分析用のUTMタグ、リンク作成時に渡された任意のデータが抽出されます。

Firebase ConsoleはDynamic Linksを作成するためのビジュアルインターフェースを提供します。開発者はディープリンクURL、キャンペーン名、iOSとAndroidの設定を個別に、そして分析パラメータを指定します。作成後、Firebaseはhttps://yourcode.page.link/abc123のような短いリンクを生成し、広告資料、メールキャンペーン、ソーシャルネットワークで使用できます。

プログラムによるDynamic Linksの作成には、Firebase REST APIまたはクライアントSDKが使用されます。REST APIを使用すると、ソーシャルネットワークリンクや非同期クリック分析を含むカスタムパラメータを使用して、マーケティングキャンペーン用のリンクを一括生成できます。APIを介してリンクを作成する際は、socialMetaTagInfoパラメータを正しく指定することが重要です。これにより、メッセンジャーやソーシャルネットワークでプレビューカード付きで共有されたときのリンクの表示方法が決まります。

Dynamic Linkのパラメータ

パラメータ目的必須
Deep Link URLアプリコンテンツへの内部リンクはい
iOS Bundle IDApp Store内のアプリ識別子iOSの場合
Android Package NameGoogle Play内のパッケージ名Androidの場合
Fallback URLアプリがない場合のウェブページいいえ
UTMタグGoogle Analytics用のパラメータいいえ

iOSでFirebase Dynamic Linksを扱うには、CocoaPodsまたはSwift Package Managerを介してFirebase SDKを統合し、GOOGLE_APP_IDを含むInfo.plistを設定し、プロジェクトのAssociated DomainsにDynamic Linksドメインを登録する必要があります。その後、アプリはFirebaseによって生成されたUniversal Linksを自動的に処理します。

Xcodeでは、applinks:yourcode.page.linkのようなエントリでAssociated Domains機能を追加する必要があります。Firebase SDKはUniversal Linksを処理するためにapplication(_:continue:restorationHandler:)メソッドを使用するため、AppDelegateとの追加の統合は必要ありません。FirebaseはUser Activityから自動的にDynamic Linkパラメータを抽出します。

Xcodeでの設定

Firebaseの適切な初期化とDynamic Linkハンドラ登録のためのInfo.plist設定の例。FIROptionsキーにはGoogleService-Info.plistのプロジェクト識別子を含める必要があります。

xml
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
    <string>https://yourcode.page.link</string>
</array>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>

AppDelegateプロキシが無効になっている場合は、handleUniversalLink(_:)メソッドを手動で呼び出し、continue NSUserActivityからUser Activityを渡す必要があります。Firebase SDKは自動的にリンクパラメータを抽出し、completion handlerを介してDynamicLinkを返します。

Androidでは、Firebase Dynamic Linksの統合は、build.gradleへの依存関係の追加とFirebase Consoleからのgoogle-services.jsonファイルの追加から始まります。Dynamic LinksドメインはFirebase Consoleで登録され、その後、このドメインを持つすべてのリンクは、action VIEWを持つIntent Filterを介してAndroidアプリによって自動的に認識されます。正しく動作させるには、ルートとモジュールのbuild.gradleにGoogle Servicesプラグインを追加し、Gradleの同期を実行する必要もあります。

Androidでリンクを正しく処理するには、受信リンクを受け取るActivityにDynamic Linksドメイン用のIntent Filterを追加する必要があります。フィルタにはhttpsスキーム、Dynamic Linksドメインホスト、デフォルトパスを含める必要があります。

Dynamic Links用のIntent Filter

yourcode.page.linkドメインでDynamic Linksを受信するためのAndroidManifest.xmlのIntent Filterの例。

xml
<activity android:name=".MainActivity"
    android:launchMode="singleTask">
    <intent-filter
        android:autoVerify="true">
        <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="yourcode.page.link" />
    </intent-filter>
</activity>

Dynamic Linksを受信するActivityのlaunchModeをsingleTaskに設定することが重要です。これにより、リンクを繰り返しクリックしたときに新しいActivityインスタンスが作成されるのを防ぎ、すべての受信ディープリンクを単一のインスタンスで処理できます。

Android用のFirebase SDKはFirebaseDynamicLinks.getInstance().getDynamicLink(intent)メソッドを提供し、リンクデータを含むPendingTaskオブジェクトを返します。DynamicLinkオブジェクトから、ディープURI、UTMパラメータ、遷移タイムスタンプが抽出されます。処理はActivityのonCreate()およびonNewIntent()メソッドで実行することをお勧めします。

処理時には、Dynamic Linkがコールドスタートからアプリを起動するときと、別のアプリから既に実行中のアプリに遷移するときの両方で受信される可能性があることを考慮することが重要です。2番目のケースでは、onNewIntent()をオーバーライドしてDynamic Linkのチェックを再度呼び出す必要があります。

Kotlinコードでの処理

MainActivityでのFirebase Dynamic Linkの受信と処理の例。コードはコールドスタートと別のアプリからの遷移の両方を処理します。

kotlin
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        checkDynamicLink(intent)
    }
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        checkDynamicLink(intent)
    }
    private fun checkDynamicLink(intent: Intent) {
        FirebaseDynamicLinks.getInstance()
            .getDynamicLink(intent)
            .addOnSuccessListener link ->
                val deepLink = link?.link.toString()
                handleDeepLink(deepLink)
            }
    }
}

addOnSuccessListenerメソッドはDynamicLinkを返し、そこからlink?.linkを介してターゲットリンクが抽出されます。リスナーがnullを返す場合、IntentにDynamic Linkが含まれていないことを意味します。これは受信リンクのない通常のアプリ起動です。クリック分析用のUTMタグも利用可能で、campaign、medium、source、contentが含まれており、各マーケティングチャネルの効果を詳細に評価するためにGoogle Analyticsに渡すことができます。

よくある質問

Firebase Dynamic Linksは通常のディープリンクとどう違いますか?

Firebase Dynamic Linksはdeferred deep linkをサポートしています。アプリがインストールされていない場合でもリンクはコンテキストを保持します。インストール後、アプリはすべての遷移パラメータを受け取ります。これは通常のURL SchemeやUniversal Linksでは不可能です。

Firebase Dynamic Linksは有料ですか?

Firebase Dynamic Linksは無料のFirebase Spark料金プランに含まれています。作成できるリンクの数に制限はありません。ただし、2024年以降、Googleは新しいインフラストラクチャへの移行を発表しているため、条件が変更される可能性があります。

Dynamic Linksはウェブアプリケーションで使用できますか?

Dynamic Linksはモバイルアプリケーション向けに設計されています。デスクトップウェブブラウザからリンクをクリックすると、フォールバックURLが開きます。ウェブアプリケーションには、通常のリンクまたは独自のリダイレクトロジックを使用してください。

開発中にDynamic Linksをテストするには?

Firebase Consoleには、動作をプレビューするためのTest Dynamic Linkボタンがあります。Firebase SDKをインストールしたAndroidエミュレータまたはiOSシミュレータを使用して、すべての遷移シナリオをローカルでテストすることもできます。

Dynamic Linkには何文字含めることができますか?

短いFirebase Dynamic Linkは、page.linkドメインと約7文字のランダムなサフィックスで構成されています。全長は約30文字です。内部のディープリンクは任意の長さにできますが、互換性のために2 KB以内に抑えることをお勧めします。

まとめ

  • Firebase Dynamic Links — deferred deep linkをサポートする、iOSおよびAndroid向けのGoogleによる統合ユニバーサルリンク。
  • 動作原理 — リンクはFirebaseサーバーを通過し、サーバーがデバイスとアプリのインストール状況を判断して正しくルーティングします。
  • Deferred — 主な利点:ストアからアプリをインストールした後、遷移パラメータが保存および復元されます。
  • 作成 — リンクはFirebase Console、REST API、またはクライアントSDKを介して、プラットフォームごとにパラメータ設定を行って生成されます。
  • iOS統合 — XcodeでのAssociated DomainsとFirebase SDKが必要。Universal Linksとcontinue UserActivityメソッドを介した処理。
  • Android統合 — マニフェストでのaction VIEWとDynamic Linksドメインを持つIntent Filter、およびbuild.gradleでのFirebase SDKが必要。
  • アナリティクス — FirebaseはGoogle Analytics用のUTMタグサポート付きでDynamic Linksのクリックを自動的に追跡します。

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

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

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

こちらもお読みください