GooglePlayでDLされた時のreferrerを取得

こんばんわ。araishiです。Android案件をゴソゴソやっているのでブログ連投してます。
Androidアプリをマーケットにリリースした時、どこ経由からインストールされたか調べる方法でリファラをアプリに保存しておく方法があります。

マーケットのURLのパラメータにreferrerをつけてDLされたアプリは、
例:https://play.google.com/store/apps/details?id=jp.ever-free.test&referrer=asp1

BroadcastReceiverクラスを継承したクラスを作れば、referrerの値を文字列と取得することができるので、取得してプレファレンスに保存してみます。プレファレンスについてはここでは割愛しますが、簡単に言うと端末のXMLファイルにkey-valueストア型的に保存できるという具合です。

・Refreceiver.java

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.util.Log;

public class RefReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
          String referrer = intent.getStringExtra("referrer");
          Log.d("[REFERRER]: ",referrer);
          SharedPreferences pref = context.getSharedPreferences("pref", 0);
          Editor e = pref.edit();
          e.putString("referrer", referrer);
          e.commit();
    }
}

AndroidManifest.xmlの修正
AndroidManifest.xmlのの中に下記を追加します。


...

  ...
  
    
      
    
  

確認方法
実際にGoogleマーケットからインストールするのは手間なので、
エミュレータで実行中のアプリにadbコマンドを使って直接referrerを埋め込むことができました。すごい。
windowsのターミナルから下記のコマンドを実行します。

C:Usersaraishi>adb shell am broadcast -a com.android.vending.INSTALL_REFERRER
--es referrer aiueo-

これが表示されます

Broadcasting: Intent { act=com.android.vending.INSTALL_REFERRER (has extras) }
Broadcast completed: result=0

その後に予め作っておいたプレファレンスを読み込むメソッドを実行してみました。

public String getReferer (){
    //プリファレンスのインスタンスを取得
    SharedPreferences pre = this.con.getSharedPreferences("pref", 0);
    String referrer = pre.getString("referrer", "");
    Toast.makeText(this.con, referrer, Toast.LENGTH_LONG).show();
    return referrer;
}

トーストで「aiueo-」と表示されたので成功ということにします。

カテゴリー: Android

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*