この記事は公開されてから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>