Google Analytics SDK for Android – Google Analytics for Mobile – Google Code
Google Analytics for Androidで利用されているように、インストール時のリファラ情報を活用したい場合の簡単な説明とサンプルコードを書いておきたいと思います。
やることは、以下のようになります。今回は既にアプリが存在するものとして進めます。
- BroadcastReceiverを継承したクラスの定義
- AndroidManifest.xmlの修正
目次
BroadcastReceiverを継承したクラスの定義
まずは、リファラ情報を受け取る為のReceiverを定義します。
org.fukata.andorid.example.receiver.ExampleReceiver
package org.fukata.android.example.receiver; import java.net.URLDecoder; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class ExampleReceiver extends BroadcastReceiver { static String TAG = ExampleReceiver.class.getSimpleName(); @Override public void onReceive(Context context, Intent intent) { // get referrer String referrer = URLDecoder.decode( intent.getStringExtra("referrer") ); Log.d(TAG, String.format("referrer: %s", referrer)); } } |
AndroidManifest.xmlの修正
定義したExampleReceiverでハンドリングするために、AndroidManifest.xmlに
AndroidManifest.xml
< ?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="https://schemas.android.com/apk/res/android" package="org.fukata.android.example" android:versionName="1" android:versionCode="1"> <application android:icon="@drawable/icon" android:label="@string/app_name"> ... <receiver android:exported="true" android:name=".receiver.ExampleReceiver"> <intent -filter> <action android:name="com.android.vending.INSTALL_REFERRER"></action> </intent> </receiver> </application> </manifest> |
一つ注意として、ExampleReceiver内でリファラ情報等をサーバに送信したりする場合は、
<receiver android:exported="true" android:name=".receiver.ExampleReceiver" android:permission="android.permission.INTERNET"> <intent -filter> <action android:name="com.android.vending.INSTALL_REFERRER"></action> </intent> </receiver> |
INSTALL_REFERRERを擬似的に行う
INSTALL_REFERRERのブロードキャストはAndroid Marketアプリを経由してインストールされた場合にしか発行されないので、通常通りパソコンからアプリを端末にインストールした場合などは発行されません。
そういう場合に、INSTALL_REFERRERレシーバーの挙動だけを確認したい場合は下記のようにコマンドラインからブロードキャストを発行します。
adb shell am broadcast -a com.android.vending.INSTALL_REFERRER --es referrer hogehoge |
追記:2011.05.23
android marketのURLにreferrerというキーが存在しない場合、com.android.vending.INSTALL_REFERRERのブロードキャストが呼ばれないので、そもそもReceiverの処理が実行されません。ということに気づかず多くの時間を無駄にしてしまいました。
追記:2011.10.31
【質問】Android Marketの新バージョンで、INSTALL_REFERRERが取得されない。 – 日本Androidの会 | Google Groups
マーケットアプリが新バージョンになってからINSTALL_REFERRERの値が正常に取れなくなったみたいです。
追記:2012.11.05
【質問】Android Marketの新バージョンで、INSTALL_REFERRERが取得されない。 – 日本Androidの会 | Google Groupsで報告されていたバグが修正されて、INSTALL_REFERRERが取得できるようになりました。