Android での Firebase Dynamic Links

Firebase Dynamic Links を使用すると、アプリの新しいユーザー個人に合わせたオンボーディング プロセスを提供できます。そのため、ユーザーの登録数、定着率、長期的なエンゲージメントを増やすことができます。

ダイナミック リンクはアプリへのディープリンクで、ユーザーがアプリをインストール済みかどうかにかかわらず機能します。インストールされていないアプリへのダイナミック リンクをユーザーが開くと、そのアプリの Play ストアページが開き、そこからアプリをインストールすることができます。ユーザーがアプリをインストールして開くと、ディープリンクされたコンテンツが表示されます。

Firebase と Dynamic Links SDK を設定する

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

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

Firebase console を使用すると、ダイナミック リンクを簡単に作成できます。ダイナミック リンクのパラメータを含む URL を構築して、プログラムによってダイナミック リンクを作成することもできます。

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

  1. Firebase console を開きます。
  2. サイドバー メニューの [Dynamic Links] をクリックし、[Dynamic Links] ページを開きます。このページには、作成済みダイナミック リンクの一覧とそれぞれのクリック率が表示されます。
  3. [新しいダイナミック リンク] をクリックし、[ダイナミック リンクを生成] が選択されていることを確認します。
  4. 作成するダイナミック リンクの基本情報を入力します。
    ダイナミック リンクの基本パラメータ
    リンク名 ダイナミック リンクの名前。
    リンク先 URL

    アプリで開くリンク。アプリ内のコンテンツへのリンクや、ユーザーへのクーポン付与や特定の開始画面の表示といったアプリ固有のロジックを開始する URL など、アプリで処理できるあらゆる URL を指定できます。このリンクは適切な形式の URL で、正しく URL エンコードされ、HTTP または HTTPS のスキームを使用している必要があります。

    Android アプリ リンクを開くために使う Android アプリのパッケージ名。Firebase console の [Overview] ページで、アプリとプロジェクトが接続されている必要があります。Android アプリを開くダイナミック リンクでは必須のパラメータです。
    上記のパラメータを指定すると、基本的な機能を備えたダイナミック リンクを作成できます。ダイナミック リンクをクリックすると指定したアプリでリンクが開かれ、アプリがインストールされていない場合は、まずインストールが促されます。
  5. 省略可: 詳細オプションを指定して、ダイナミック リンクの動作をきめ細かく調整することもできます。
    Android 向け詳細パラメータ
    フォールバック リンク アプリがインストールされていない場合に開くリンク。モバイルウェブ バージョンのコンテンツを開いたり、アプリの宣伝ページを開いたりするなど、アプリがインストールされていないときに Play ストアからアプリをインストールする以外の動作をさせる場合に指定します。
    最小バージョン コード リンクを開くことができるアプリの最小バージョンの versionCode。インストールされているアプリのバージョンがそれよりも古い場合、ユーザーは Play ストアにリダイレクトされ、アプリのアップグレードを促されます。

プログラムによってダイナミック リンクを作成する

次のフォームを使用して URL を構築することで、プログラムによってダイナミック リンクを作成することもできます。

https://domain/?link=your_deep_link&apn=package_name[&amv=minimum_version][&al=android_link][&afl=fallback_link]
パラメータ
domain Firebase プロジェクトのダイナミック リンク ドメイン。この値は Firebase console の [Dynamic Links] セクションで確認できます。
link

アプリで開くリンク。アプリ内のコンテンツへのリンクや、ユーザーへのクーポン付与や特定の開始画面の表示といったアプリ固有のロジックを開始する URL など、アプリで処理できるあらゆる URL を指定できます。このリンクは適切な形式の URL で、正しく URL エンコードされ、HTTP または HTTPS のスキームを使用している必要があります。

apn リンクを開くために使う Android アプリのパッケージ名。Firebase console の [Overview] ページで、アプリとプロジェクトが接続されている必要があります。Android アプリを開くダイナミック リンクでは、必須のパラメータです。
afl 省略可: アプリがインストールされていない場合に開くリンク。モバイルウェブ バージョンのコンテンツを開いたり、アプリの宣伝ページを開いたりするなど、アプリがインストールされていないときに Play ストアからアプリをインストールする以外の動作をさせる場合に指定します。
amv 省略可: リンクを開くことができるアプリの最小バージョンの versionCode。インストールされているアプリのバージョンがそれよりも古い場合、ユーザーは Play ストアにリダイレクトされ、アプリのアップグレードを促されます。
  • utm_source
  • utm_medium
  • utm_campaign
  • utm_term
  • utm_content
  • gclid
省略可: カスタム キャンペーンのパラメータ。これらのパラメータがアプリのディープリンクに渡されることで、アナリティクスのデータが記録されます。
省略可: ダイナミック リンクを読み込む代わりにフローチャートを作成し、別のプラットフォームや設定でのダイナミック リンクの動作をプレビューするためにそれを使用できます。

次に例を示します。

https://example.app.goo.gl/?link=https://www.example.com/someresource&apn=com.example.android&amv=3

アプリでダイナミック リンクを開く

ディープリンク用のインテント フィルタを追加する

通常のディープリンクと同様に、アプリのディープリンクを処理するアクティビティにインテント フィルタを追加する必要があります。AndroidManifest.xml では次のように追加します。

<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:host="www.example.com" android:scheme="http"/>
    <data android:host="www.example.com" android:scheme="https"/>
</intent-filter>

指定したスキームとホストへのリンクをユーザーが開くと、そのリンクを処理するためのアクティビティがアプリで開始されます。

ディープリンクを処理する

ディープリンクを受信するには、getInvitation メソッドを次のように呼び出します。

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...

    // Build GoogleApiClient with AppInvite API for receiving deep links
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this)
            .addApi(AppInvite.API)
            .build();

    // Check if this app was launched from a deep link. Setting autoLaunchDeepLink to true
    // would automatically launch the deep link if one is found.
    boolean autoLaunchDeepLink = false;
    AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)
            .setResultCallback(
                    new ResultCallback<AppInviteInvitationResult>() {
                        @Override
                        public void onResult(@NonNull AppInviteInvitationResult result) {
                            if (result.getStatus().isSuccess()) {
                                // Extract deep link from Intent
                                Intent intent = result.getInvitationIntent();
                                String deepLink = AppInviteReferral.getDeepLink(intent);

                                // Handle the deep link. For example, open the linked
                                // content, or apply promotional credit to the user's
                                // account.

                                // ...
                            } else {
                                Log.d(TAG, "getInvitation: no deep link found.");
                            }
                        }
                    });
}

launchDeepLink パラメータが true の場合、アプリはディープリンクをブロードキャストします。ディープリンクはインテント フィルタを追加したアクティビティによって処理されます。launchDeepLink パラメータが false の場合、getInvitationIntent によって返されたインテントを手動で開始することで、状況に応じてディープリンクを処理できます。

リンクによって起動されるすべてのアクティビティで getInvitation() を呼び出してください。getIntent().getData() を使用してインテントからリンクを取得できる場合でも呼び出す必要があります。getInvitation() を呼び出すと、リンクが取得されてデータがクリアされるため、アプリで処理されるのは 1 回だけとなります。

通常、getInvitation() を呼び出すのはメインのアクティビティと、リンクに一致するインテント フィルタによって起動されたアクティビティです。

ダイナミック リンクのデバッグ

ダイナミック リンクをデバッグするために、自動生成されたフローチャートを使用して、別のプラットフォームや設定でのダイナミック リンクの動作をプレビューすることができます。いずれかの長いダイナミック リンクに d=1 パラメータを追加することで、フローチャートを生成します。

アナリティクス データの表示

プロモーションやキャンペーンの有効性を評価するために、アプリでショート ダイナミック リンクを開くと、次のアナリティクス イベントが自動的にログ記録されます。ショート ダイナミック リンクは Firebase console で作成できます。

アナリティクス イベント
dynamic_link_first_open ダイナミック リンクを使用して初めてアプリを開くと、ログに記録されます。
dynamic_link_app_open ダイナミック リンクを使用してアプリを開くと、ログに記録されます。
dynamic_link_app_update ダイナミック リンクを使用してアプリが新規バージョンに更新されると、ログに記録されます。Android のみ。

Firebase console の [Analytics] セクションで、ログに記録したデータを確認できます。

Firebase Analytics でのダイナミック リンク イベント ダイナミック リンク イベントをコンバージョンとしてマークすると、[アトリビューション] ページでダイナミック リンクのパフォーマンスを確認できます。

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