
Androidでインストール時のリファラ情報を取得する
この記事は公開されてから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>