Android でダイナミック リンクを作成する

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

https://example.page.link/WXYZ

Firebase と Dynamic Links SDK を設定する

Android アプリでダイナミック リンクを作成する場合は、Firebase SDK をインクルードしておく必要があります。アプリがダイナミック リンクを受信するように設定されている場合、この手順はすでに完了しているため、このセクションをスキップして構いません。

  • Firebase を Android プロジェクトに追加します。Firebase Dynamic Links の依存関係をアプリレベルの build.gradle ファイルに追加します。
    implementation 'com.google.firebase:firebase-dynamic-links:16.1.3'
  • アプリを Firebase プロジェクトに接続していない場合は、Firebase コンソールで接続します。アプリを接続するときは、必ず SHA-1 の署名鍵を指定します。アプリリンクを使用する場合は SHA-256 の鍵も指定します。
  • Firebase コンソールで [Dynamic Links] セクションを開きます。
  • 利用規約に同意せずに Dynamic Links ドメインを設定している場合、プロンプトに従って利用規約に同意します。

    Dynamic Links ドメインを作成している場合は、それをメモしておきます。ダイナミック リンクをプログラムで作成する場合は、Dynamic Links ドメインを指定する必要があります。

Firebase コンソールを使用する

テスト用に、またはマーケティング チームがソーシャル メディア投稿などで使用できるリンクを簡単に作成できるように、1 つのダイナミック リンクを生成する必要がある場合、Firebase コンソールを開き、各手順が示されたフォームに沿って手動で作成するのが最も簡単です。

パラメータからダイナミック リンクを作成する

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

次のシンプルな例では、Android アプリ(Android の場合)とアプリ https://www.example.com/(iOS の場合)で開く com.example.ios への長いダイナミック リンクを作成します。

Java
Android

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
Android

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

val dynamicLinkUri = dynamicLink.uri

短いダイナミック リンクを作成するには、同じ方法で DynamicLink を作成してから buildShortDynamicLink を呼び出します。短いリンクの作成にはネットワーク呼び出しが必要となるため、buildShortDynamicLink はリンクを直接返すのではなく、Task を返します。これにより、リクエストが完了したときに短いリンクが利用可能になります。次に例を示します。

Java
Android

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
Android

val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Set parameters
        // ...
        .buildShortDynamicLink()
        .addOnSuccessListener { result ->
            // Short link created
            val shortLink = result.shortLink
            val flowchartLink = result.previewLink
        }.addOnFailureListener {
            // Error
            // ...
        }

デフォルトでは、短いダイナミック リンクは 17 文字のリンク サフィックス付きで生成されるため、他の誰かが有効なダイナミック リンクを推測することはほぼ不可能です。アプリの使用状況を考慮したうえで、他の誰かが短いリンクを知ったとしても無害であると考えられる場合、生成されるサフィックスは、一意にするのに必要なだけの長さがあれば十分であると判断できます。そのようなサフィックスを生成するには、ShortDynamicLink.Suffix.SHORTbuildShortDynamicLink メソッドに渡します。

Java
Android

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

Kotlin
Android

val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT)
        // ...

ダイナミック リンクのパラメータ

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

次の例では、いくつかの一般的なパラメータが設定されたダイナミック リンクを作成します。

Java
Android

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
Android

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

ダイナミック リンクのパラメータは、次のメソッドで設定できます。

DynamicLink のパラメータ
setLink

アプリで開くリンク。アプリで処理可能な URL を指定します。通常、この URL はアプリのコンテンツやペイロードへのリンクであり、アプリ固有のロジック(ユーザーへのクーポン付与や特定の開始画面の表示など)を起動することもできます。このリンクは適切な形式の URL で、正しく URL エンコードされている必要があります。HTTP または HTTPS のいずれかを使用してください。他のダイナミック リンクであってはなりません。

setDomainUriPrefix ダイナミック リンクのドメイン。これは、Firebase コンソールで確認できます。ダイナミック リンクのドメインは https://example.page.link のようになります。
AndroidParameters
setFallbackUrl アプリがインストールされていない場合に開くリンク。モバイルウェブ バージョンのコンテンツを開いたり、アプリの宣伝ページを開いたりするなど、アプリがインストールされていないときに Play ストアからアプリをインストールする以外の動作をさせる場合に指定します。
setMinimumVersion リンクを開くことができるアプリの最小バージョンの versionCode。インストールされているアプリのバージョンがそれよりも古い場合、ユーザーは Play ストアにリダイレクトされ、アプリのアップグレードを促されます。
IosParameters
setAppStoreId アプリの App Store ID。アプリがインストールされていない場合に、ユーザーを App Store に転送するために使用します。
setFallbackUrl アプリがインストールされていない場合に開くリンク。モバイルウェブ バージョンのコンテンツを開いたり、アプリの宣伝ページを開いたりするなど、アプリがインストールされていないときに App Store からアプリをインストールする以外の動作をさせる場合に指定します。
setCustomScheme アプリのカスタム URL スキーム(アプリのバンドル ID とは異なるものを定義している場合)。
setIpadFallbackUrl アプリがインストールされていない場合に iPad で開くリンク。ウェブ バージョンのコンテンツを開いたり、アプリの宣伝ページを開いたりするなど、アプリがインストールされていないときに App Store からアプリをインストールする以外の動作をさせる場合に指定します。
setIpadBundleId iPad でリンクを開くために使う iOS アプリのバンドル ID。Firebase コンソールの [概要] ページで、アプリとプロジェクトが接続されている必要があります。
setMinimumVersion リンクを開くことができるアプリの最小バージョンのバージョン番号。このフラグは、リンクを開くとアプリに渡されますが、処理方法はアプリ側で決める必要があります。
NavigationInfoParameters
setForcedRedirectEnabled 「1」に設定されている場合は、ダイナミック リンクが開かれたときにアプリのプレビュー ページをスキップし、代わりにアプリまたはストアにリダイレクトします。アプリのプレビュー ページ(デフォルトで有効になっています)は、ユーザーがアプリでダイナミック リンクを開いたときにユーザーを最も適切な宛先に確実に転送できる手段ですが、ダイナミック リンクがアプリのみで開かれ、かつアプリがプレビュー ページなしでもダイナミック リンクを確実に開くことができることを前提とする場合は、このパラメータを使用してアプリのプレビュー ページを無効にすることができます。注: 現在アプリのプレビュー ページが表示されるのは iOS のみですが、将来的には Android でも表示される可能性があります。このパラメータは、両方のプラットフォームでダイナミック リンクの動作に影響します。
SocialMetaTagParameters
setTitle ソーシャル投稿でダイナミック リンクを共有するときに使用するタイトル。
setDescription ソーシャル投稿でダイナミック リンクを共有するときに使用する説明。
setImageUrl このリンクに関連する画像への URL。画像は 300 x 200 ピクセル以上、300 KB 未満である必要があります。
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
Google Play の解析パラメータ。これらのパラメータ(utm_sourceutm_mediumutm_campaignutm_termutm_content)は、リンクのペイロードに追加されるだけでなく、Play ストアにも渡されます。
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
iTunes Connect の解析パラメータ。これらのパラメータ(ptatct)は App Store に渡されます。

長いダイナミック リンクを短縮する

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

Java
Android

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
Android

val 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()
        .addOnSuccessListener { result ->
            // Short link created
            val shortLink = result.shortLink
            val flowchartLink = result.previewLink
        }
        .addOnFailureListener {
            // Error
            // ...
        }

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。