Play のインストール リファラー ライブラリ

Google Play ストアの Install Referrer API を使用すると、Google Play からリファラー コンテンツを安全に取得できます。Play Install Referrer API クライアント ライブラリは Java で記述されたライブラリであり、インストール リファラー サービスへのインターフェースを定義する Android インターフェース定義言語(AIDL)ファイルのラッパーの役割を果たします。Play Install Referrer API クライアント ライブラリを使用すると、開発プロセスを簡素化することができます。

このガイドでは、Play のインストール リファラー ライブラリを使用して Google Play からリファラー情報を取得する方法の基本事項を紹介します。

注: Java 以外の言語を使用している場合や、AIDL ファイルを直接操作する場合は、Play Install Referrer API を使用します。

アプリの依存関係を更新する

アプリの build.gradle ファイルの dependencies セクションに次の行を追加します。

    dependencies {
        ...
        compile 'com.android.installreferrer:installreferrer:1.0'
    }
    

Google Play に接続する

Play Install Referrer API ライブラリを使用するには、次の手順で事前に Play ストア アプリへの接続を確立する必要があります。

  1. newBuilder() メソッドを呼び出して、InstallReferrerClient クラスのインスタンスを作成します。
  2. startConnection() を呼び出して、Google Play への接続を確立します。

  3. startConnection() メソッドは非同期のため、startConnection() の完了後にコールバックを受け取るように InstallReferrerStateListener をオーバーライドする必要があります。

  4. Google Play への接続の喪失に対処するように onInstallReferrerSetupFinished() メソッドをオーバーライドします。たとえば、Play ストア サービスがバックグラウンドで更新されている場合、Play のインストール リファラー ライブラリのクライアントは接続を失う可能性があります。さらにリクエストを行うには、ライブラリのクライアントで startConnection() メソッドを呼び出して接続を再開する必要があります。

次のコードは、Play ストア アプリへの接続を開始してテストする方法を示しています。

Kotlin

    private lateinit var referrerClient: InstallReferrerClient
    ...

    referrerClient = InstallReferrerClient.newBuilder(this).build()
    referrerClient.startConnection(object : InstallReferrerStateListener {

        override fun onInstallReferrerSetupFinished(responseCode: Int) {
            when (responseCode) {
                InstallReferrerResponse.OK -> {
                    // Connection established
                }
                InstallReferrerResponse.FEATURE_NOT_SUPPORTED -> {
                    // API not available on the current Play Store app
                }
                InstallReferrerResponse.SERVICE_UNAVAILABLE -> {
                    // Connection could not be established
                }
            }
        }

        override fun onInstallReferrerServiceDisconnected() {
            // Try to restart the connection on the next request to
            // Google Play by calling the startConnection() method.
        }
    })
    

Java

    InstallReferrerClient referrerClient
    ...
    referrerClient = InstallReferrerClient.newBuilder(this).build();
    referrerClient.startConnection(new InstallReferrerStateListener() {
        @Override
        public void onInstallReferrerSetupFinished(int responseCode) {
            switch (responseCode) {
                case InstallReferrerResponse.OK:
                    // Connection established
                    break;
                case InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
                    // API not available on the current Play Store app
                    break;
                case InstallReferrerResponse.SERVICE_UNAVAILABLE:
                    // Connection could not be established
                    break;
            }
        }

        @Override
        public void onInstallReferrerServiceDisconnected() {
            // Try to restart the connection on the next request to
            // Google Play by calling the startConnection() method.
        }
    });
    

インストール リファラーを取得する

Play ストア アプリへの接続を確立したら、次の手順を行います。

  1. 同期済みの getInstallReferrer() メソッドを使用して ReferrerDetails を返します。

  2. 次に、ReferrerDetails のメソッドを使用して、インストールのタイムスタンプとリファラー URL を取得します。

次のコードは、インストール リファラー情報にアクセスする方法を示しています。

Kotlin

    val response: ReferrerDetails = referrerClient.installReferrer
    response.installReferrer
    response.referrerClickTimestampSeconds
    response.installBeginTimestampSeconds
    

Java

    ReferrerDetails response = referrerClient.getInstallReferrer();
    response.getInstallReferrer();
    response.getReferrerClickTimestampSeconds();
    response.getInstallBeginTimestampSeconds();
    

注意: インストール リファラー情報の使用可能期間は 90 日です。この情報は、アプリが再インストールされない限り変更されません。アプリで不要な API 呼び出しが行われないようにするには、インストール後の最初の実行時に API を 1 回だけ呼び出します。

サービスへの接続を終了する

リファラー情報を取得したら、InstallReferrerClient インスタンスで endConnection() メソッドを呼び出して接続を終了します。接続を終了することで、リークやパフォーマンスの問題を回避できます。

詳しくは、Play のインストール リファラー ライブラリのリファレンスをご覧ください。