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

Androidで動的リンクを作成する

Firebase Dynamic Links Builder API を使用して、短いダイナミック リンクまたは長いダイナミック リンクを作成できます。この API は、長いダイナミック リンクまたはダイナミック リンク パラメータを含むオブジェクトのいずれかを受け入れ、次の例のような URL を返します。

https://example.com/link/WXYZ
https://example.page.link/WXYZ

Android アプリで Dynamic Links を作成する前に、Firebase SDK を含める必要があります。アプリが Dynamic Links を受信するように設定されている場合、これらの手順は既に完了しているため、このセクションをスキップできます。

  1. まだ行っていない場合は、 Firebase を Android プロジェクトに追加します

    アプリを登録するときに、SHA-1 署名キーを指定します。アプリ リンクを使用する場合は、SHA-256 キーも指定します。

  2. モジュール (アプリ レベル) の Gradle ファイル(通常は<project>/<app-module>/build.gradle ) で、Dynamic Links Android ライブラリの依存関係を追加します。ライブラリのバージョン管理には、 Firebase Android BoMを使用することをお勧めします。

    Dynamic Links で最適なエクスペリエンスを得るには、Firebase プロジェクトでGoogle アナリティクスを有効にし、Google アナリティクス用の Firebase SDK をアプリに追加することをお勧めします。

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links'
        implementation 'com.google.firebase:firebase-analytics'
    }
    

    Firebase Android BoMを使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。

    (代替) BoM を使用せずに Firebase ライブラリの依存関係を追加する

    Firebase BoM を使用しないことを選択した場合は、依存関係の行で各 Firebase ライブラリ バージョンを指定する必要があります。

    アプリで複数のFirebase ライブラリを使用する場合は、BoM を使用してライブラリ バージョンを管理することを強くお勧めします。これにより、すべてのバージョンに互換性が確保されます。

    dependencies {
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links:21.1.0'
        implementation 'com.google.firebase:firebase-analytics:21.2.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    Firebase Android BoMを使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。

    (代替) BoM を使用せずに Firebase ライブラリの依存関係を追加する

    Firebase BoM を使用しないことを選択した場合は、依存関係の行で各 Firebase ライブラリ バージョンを指定する必要があります。

    アプリで複数のFirebase ライブラリを使用する場合は、BoM を使用してライブラリ バージョンを管理することを強くお勧めします。これにより、すべてのバージョンに互換性が確保されます。

    dependencies {
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links-ktx:21.1.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
    }
    
  3. Firebase コンソールで、 Dynamic Linksセクションを開きます。
  4. 利用規約に同意してダイナミック リンクのドメインを設定していない場合は、プロンプトが表示されたら同意してください。

    Dynamic Links ドメインをすでにお持ちの場合は、メモしておいてください。プログラムで Dynamic Links を作成する場合は、Dynamic Links ドメインを指定する必要があります。

  5. 推奨: ディープ リンクとフォールバック リンクで許可される URL パターンを指定します。そうすることで、ドメインから管理していないサイトにリダイレクトする Dynamic Links を権限のない第三者が作成するのを防ぐことができます。特定の URL パターンを許可するを参照してください。

Firebase コンソールを使用する

テスト目的で、またはマーケティング チームがソーシャル メディアの投稿などで使用できるリンクを簡単に作成するために、単一のダイナミック リンクを生成する場合、最も簡単な方法は、 Firebase コンソールにアクセスして作成することです。ステップバイステップのフォームに従って手動で。

ダイナミック リンクを作成するには、Builder で新しいDynamicLinkオブジェクトを作成し、Builder メソッドでダイナミック リンク パラメータを指定します。次に、 buildDynamicLinkまたはbuildShortDynamicLinkを呼び出します。

次の最小限の例では、Android の Android アプリと iOS のアプリcom.example.iosで開くhttps://www.example.com/への長いダイナミック リンクを作成します。

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Open links with this app on Android
        .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build())
        // Open links with com.example.ios on iOS
        .setIosParameters(new DynamicLink.IosParameters.Builder("com.example.ios").build())
        .buildDynamicLink();

Uri dynamicLinkUri = dynamicLink.getUri();

Kotlin+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Open links with this app on Android
    androidParameters { }
    // Open links with com.example.ios on iOS
    iosParameters("com.example.ios") { }
}

val dynamicLinkUri = dynamicLink.uri

短い Dynamic Link を作成するには、同じ方法で DynamicLink を作成してから、 DynamicLinkを呼び出しbuildShortDynamicLink 。短いリンクの構築にはネットワーク呼び出しが必要なため、リンクを直接返す代わりに、 buildShortDynamicLinkTaskを返します。これにより、リクエストの完了時に短いリンクが利用可能になります。例えば:

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Set parameters
        // ...
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Set parameters
    // ...
}.addOnSuccessListener { (shortLink, flowchartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.component2

    // Short link created
    processShortLink(shortLink, flowchartLink)
}.addOnFailureListener {
    // Error
    // ...
}

デフォルトでは、短いダイナミック リンクは 17 文字のリンク サフィックスで生成されるため、誰かが有効なダイナミック リンクを推測できる可能性はほとんどありません。あなたのユースケースで、誰かが短いリンクをうまく推測しても害がない場合は、一意であるために必要な長さだけのサフィックスを生成することを好むかもしれません。これは、 ShortDynamicLink.Suffix.SHORTbuildShortDynamicLinkメソッドに渡すことによって実行できます。 :

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT);
        // ...

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) {
    // Set parameters
    // ...
}

Dynamic Link Builder API を使用して、サポートされている任意のパラメーターを使用して Dynamic Links を作成できます。詳細については、 API リファレンスを参照してください。

次の例では、いくつかの共通パラメーター セットを使用してダイナミック リンクを作成します。

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        .setAndroidParameters(
                new DynamicLink.AndroidParameters.Builder("com.example.android")
                        .setMinimumVersion(125)
                        .build())
        .setIosParameters(
                new DynamicLink.IosParameters.Builder("com.example.ios")
                        .setAppStoreId("123456789")
                        .setMinimumVersion("1.0.1")
                        .build())
        .setGoogleAnalyticsParameters(
                new DynamicLink.GoogleAnalyticsParameters.Builder()
                        .setSource("orkut")
                        .setMedium("social")
                        .setCampaign("example-promo")
                        .build())
        .setItunesConnectAnalyticsParameters(
                new DynamicLink.ItunesConnectAnalyticsParameters.Builder()
                        .setProviderToken("123456")
                        .setCampaignToken("example-promo")
                        .build())
        .setSocialMetaTagParameters(
                new DynamicLink.SocialMetaTagParameters.Builder()
                        .setTitle("Example of a Dynamic Link")
                        .setDescription("This link works whether the app is installed or not!")
                        .build())
        .buildDynamicLink();  // Or buildShortDynamicLink()

Kotlin+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink { // or Firebase.dynamicLinks.shortLinkAsync
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    androidParameters("com.example.android") {
        minimumVersion = 125
    }
    iosParameters("com.example.ios") {
        appStoreId = "123456789"
        minimumVersion = "1.0.1"
    }
    googleAnalyticsParameters {
        source = "orkut"
        medium = "social"
        campaign = "example-promo"
    }
    itunesConnectAnalyticsParameters {
        providerToken = "123456"
        campaignToken = "example-promo"
    }
    socialMetaTagParameters {
        title = "Example of a Dynamic Link"
        description = "This link works whether the app is installed or not!"
    }
}

次の方法で Dynamic Link パラメータを設定できます。

DynamicLink パラメータ
setLink

アプリが開くリンク。アプリが処理できる URL (通常はアプリのコンテンツまたはペイロード) を指定します。これにより、アプリ固有のロジック (ユーザーへのクーポンの提供やウェルカム画面の表示など) が開始されます。このリンクは適切な形式の URL である必要があり、適切に URL エンコードされ、HTTP または HTTPS を使用する必要があり、別のダイナミック リンクであってはなりません。

setDomainUriPrefixダイナミック リンクの URL プレフィックス。Firebase コンソールで確認できます。 Dynamic Link ドメインは次の例のようになります:
https://example.com/link
https://example.page.link
Android パラメータ
setFallbackUrlアプリがインストールされていないときに開くリンク。アプリがインストールされていないときに Play ストアからアプリをインストールする以外のことを行うには、これを指定します。たとえば、コンテンツのモバイル Web バージョンを開くか、アプリのプロモーション ページを表示します。
setMinimumVersionリンクを開くことができるアプリの最小バージョンのversionCode 。インストールされているアプリが古いバージョンの場合、ユーザーは Play ストアに移動してアプリをアップグレードします。
Ios パラメータ
setAppStoreIdアプリがインストールされていないときにユーザーを App Store に送るために使用されるアプリの App Store ID
setFallbackUrlアプリがインストールされていないときに開くリンク。アプリがインストールされていないときに App Store からアプリをインストールする以外のことを行うには、これを指定します。たとえば、コンテンツのモバイル Web バージョンを開くか、アプリのプロモーション ページを表示します。
setCustomSchemeアプリのカスタム URL スキーム (アプリのバンドル ID 以外に定義されている場合)
setIpadFallbackUrlアプリがインストールされていない場合に iPad で開くためのリンク。アプリがインストールされていないときに App Store からアプリをインストールする以外のことを行うには、これを指定します。たとえば、コンテンツの Web バージョンを開くか、アプリのプロモーション ページを表示します。
setIpadBundleIdリンクを開くために iPad で使用する iOS アプリのバンドル ID。アプリは、Firebase コンソールの [概要] ページからプロジェクトに接続する必要があります。
setMinimumVersionリンクを開くことができるアプリの最小バージョンのバージョン番号。このフラグはアプリが開かれたときにアプリに渡され、アプリはそれをどう処理するかを決定する必要があります。
NavigationInfoParameters
setForcedRedirectEnabled 「1」に設定すると、ダイナミック リンクが開いたときにアプリのプレビュー ページをスキップし、代わりにアプリまたはストアにリダイレクトします。アプリのプレビュー ページ (デフォルトで有効) は、ユーザーがアプリで Dynamic Links を開いたときに、最も適切なリンク先に確実に移動できるようにします。ただし、このページがなくてもダイナミック リンクを確実に開くことができるアプリでのみダイナミック リンクが開かれることが予想される場合は、このパラメーターを使用して無効にすることができます。このパラメーターは、iOS でのみダイナミック リンクの動作に影響します。
SocialMetaTagParameters
setTitleダイナミック リンクがソーシャル投稿で共有されるときに使用するタイトル。
セット説明ダイナミック リンクがソーシャル投稿で共有されるときに使用する説明。
setImageUrlこのリンクに関連する画像への URL。画像は 300x200 ピクセル以上、300 KB 未満である必要があります。
Google アナリティクス パラメータ
setSource
setMedium
セットキャンペーン
setTerm
setContent
Google Play 分析パラメーター。これらのパラメータ ( utm_sourceutm_mediumutm_campaignutm_termutm_content ) は Play ストアに渡されるだけでなく、リンク ペイロードに追加されます。
ItunesConnectAnalytics パラメータ
setProviderToken
setAffiliateToken
setCampaignToken
iTunes Connect 分析パラメーター。これらのパラメーター ( ptatct ) は App Store に渡されます。

長いダイナミック リンクを短縮するには、他のビルダー メソッドでパラメーターを設定する代わりに、 setLongLinkを使用してダイナミック リンクの URL を指定します。

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios"))
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    longLink = Uri.parse("https://example.page.link/?link=" +
            "https://www.example.com/&apn=com.example.android&ibn=com.example.ios")
}.addOnSuccessListener { (shortLink, flowChartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.component2

    // Short link created
    processShortLink(shortLink, flowChartLink)
}.addOnFailureListener {
    // Error
    // ...
}