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

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

https://abc123.app.goo.gl/WXYZ

Firebase と Dynamic Links SDK を設定する

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

  • Firebase を Android プロジェクトに追加します。Firebase Dynamic Links の依存関係をアプリレベルの build.gradle ファイルに追加します。
    compile 'com.google.firebase:firebase-invites:11.2.2'
  • アプリを Firebase プロジェクトに接続していない場合は、Firebase コンソールで接続します。
  • Firebase コンソールで [Dynamic Links] セクションを開きます。
    1. 利用規約に同意するための画面が表示された場合は、同意します。
    2. [Dynamic Links] ページの上部に表示されている、プロジェクトの Dynamic Links のドメインを書き写します。プログラムによってダイナミック リンクを作成するには、このドメインが必要となります。Dynamic Links のドメインは app_code.app.goo.gl のようになります。

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

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

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

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://example.com/"))
        .setDynamicLinkDomain("abc123.app.goo.gl")
        // 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();

短いダイナミック リンクを作成するには、同じ方法で DynamicLink オブジェクトを作成しますが、setDynamicLinkDomain メソッドを使用してダイナミック リンク ドメイン(Firebase コンソールで確認できます)を指定してから buildShortDynamicLink を呼び出します。短いリンクの作成にはネットワーク呼び出しが必要となるため、buildShortDynamicLink はリンクを直接返すのではなく、Task を返します。これにより、リクエストが完了したときに短いリンクが利用可能になります。次に例を示します。

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://example.com/"))
        .setDynamicLinkDomain("abc123.app.goo.gl")
        // 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
                    // ...
                }
            }
        });

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

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

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://example.com/"))
        .setDynamicLinkDomain("abc123.app.goo.gl")
        .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()

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

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

DynamicLink のパラメータ
setLink

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

setDynamicLinkDomain ダイナミック リンク ドメイン。これは、Firebase コンソールで確認できます。ダイナミック リンク ドメインは、abc123.app.goo.gl のようになります。
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。
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 を指定します。

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLongLink(Uri.parse("https://abc123.app.goo.gl/?link=https://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
                    // ...
                }
            }
        });

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

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