Androidでインストールリファラを使うときにハマったのでメモ。
google playのアプリへのリンクにリファラをつけることができる。
<GOOGLE PLAY APP URL>&referre=hoge%3Dfuga
※リファラの=や&はエンコードが必要(=->%3D, &->%26)
この時のリファラ文字列を以下のようにしてアプリで受け取ることができる。
AndroidManifest.xml
<receiver
android:name="com.example.app.InstallReferrerReceiver"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
InstalReferrerReceiver.java
public class InstallReferrerReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent)
String referrer = intent.getStringExtra("referrer");
}
}
intentから受け取ったリファラ文字列はそのまま
referrer = “hoge%3Dhuga”
が取得できると思って、parse処理を仕込んでいたが、実際は
referrer = “hoge=huga
とデコードされた文字列が渡される。
リファラ文字列を自前でパースしたりする時は注意。