ちょっと話題の記事

Androidでインストール時のリファラ情報を取得する

2012.10.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Google Playからのダウンロード・インストール時に処理をする

Androidではアプリケーションのインストール時に指定したレシーバーを動作させ、任意の処理を行うことができます。
また、URLパラメータを使用することも可能なので、リファラ情報を設定すればどこからGoogle Playへ来たのかを知ることも可能です。
今回はAndroidでリファラ情報を取得してみます。

環境構築

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.7.4
  • Eclipse : 4.2
  • Android : 4.0.3

通常のAndroidプロジェクトを作成して試してみます。
今回はFile > New > Android Application Projectを選択し、プロジェクトを作成しました。

サンプルアプリケーションの作成

Google Playからのインストール時にログを出力するだけの簡単なサンプルを作成します。
まずはアプリケーションの起動時に実行されるレシーバーを作成します。

package jp.cm.receiver

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class RefReceiver extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
		String referrer = intent.getStringExtra("referrer");
		Log.d("[REFERRER]",referrer);
	}
}

BroadcastReceiverを継承してレシーバーを作成します。
アプリケーションのインストール時に起動するレシーバーは、必ずreferrerパラメータを持っているので、
その値を出力しています。
次にAndroidManifest.xmlを編集します。

<receiver
        android:name="jp.cm.receiver.RefReceiver"
        android:exported="true" >
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER" >
            </action>
        </intent-filter>
</receiver>

receiverタグに先ほど作成したレシーバーを指定します。
intent-filterにはcom.android.vending.INSTALL_REFERRERを指定しなければいけません。
これでGoogle Playからのインストール時にRefReceiverが実行されるようになりました。

エミュレータでINSTALL_REFERRERのテスト

このレシーバーをテストするためにわざわざGoogle Playにアップロードするのは面倒なので、ローカルで動かしたいところです。
このレシーバーをエミュレータで動作させるには、adbコマンドを使用して擬似的にブロードキャストを送出します。

% adb shell am broadcast -a com.android.vending.INSTALL_REFERRER --es referrer hello

リファラ情報を付けてGoogle Playへのリンクを貼る

htmlでGoogle Play上のアプリケーションへのリンクの貼り方です。
通常のhttpから始まる形式と、Android用にスキーマ形式を使用する方法があります。

<p>referrer test1</p>
<a href="http://play.google.com/store/apps/details?id=<your application package>&referrer=hello">link1</a>

<p>referrer test2</p>
<a href="market://details?id=<your application package>&referrer=hello">link2</a>