1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Android] Install Referrer API の使用方法について

Last updated at Posted at 2020-01-19

前書き

公式から案内がありましたが、2020年3月1日を持って、アプリインストール時に、Google Play Store が INSTALL_REFERRER の BroadCast Intent を送信しなくなります。

それ(BroadCast Intentの廃止)を契機に、Install Referrer の情報を取得していた場合は、取得方法を見直す必要があります。

対応方法

Install Referrer API を使用して、referrer を取得します。
Install Referrer API は、Google Play アプリのバージョン 8.3.73 以降がインストールされているデバイスで使用可能となります。

以下のような情報が取得できます。
・インストール済みパッケージのリファラー URL。
・リファラー クリックが行われたときのタイムスタンプ(秒単位)。
・インストールが開始されたときのタイムスタンプ(秒単位)。

なお、この方法はあくまでリファラーを取得するもので、従来の Install Receiver の完全なる代替となるわけではありません。
「Installの瞬間」に実行したい処理があってもその契機がなくなることになります(認識違いあれば指摘をいただけますと。。。)
ただし、冷静に設計その他を考え直せば「本当にInstallの瞬間に行わなければいけない処理」というのはあまり無いはず。。

実装例

bulid.gradle
dependencies {
    ...
    implementation 'com.android.installreferrer:installreferrer:1.1'
    ...
}
sample
private lateinit var referrerClient: InstallReferrerClient

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

    override fun onInstallReferrerSetupFinished(responseCode: Int) {
        when (responseCode) {
            InstallReferrerResponse.OK -> {
                val response: ReferrerDetails = referrerClient.installReferrer
                Log.d(TAG, response.installReferrer)
                Log.d(TAG, response.referrerClickTimestampSeconds.toString())
                Log.d(TAG, response.installBeginTimestampSeconds.toString())
            }
            InstallReferrerResponse.FEATURE_NOT_SUPPORTED -> {
                // Install Referrer API に対応していない Play Store アプリの場合
            }
            InstallReferrerResponse.SERVICE_UNAVAILABLE -> {
               // 接続できない場合
            }
        }
        referrerClient.endConnection()
    }

    override fun onInstallReferrerServiceDisconnected() {
        // 次回、startConnection() を呼び出すことで再接続を試みる
    }
}

注意点

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

との事なので、実際には(基本的には)複数回呼び出さないための制御を入れてあげる必要がありそうです。

参考

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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?