我在我的应用程序中实现了安装推荐跟踪: https ://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-campaigns
我的推荐接收者:
public class ReferrerReceiver extends BroadcastReceiver
{
private static final ObservableChanged _observable = new ObservableChanged();
//--------------------------------------------------------------------------
public static Observable getObservable()
{
return _observable;
}
//--------------------------------------------------------------------------
public static String getReferrer(Context context)
{
// Return any persisted referrer value or null if we don't have a referrer.
return context.getSharedPreferences("referrer", Context.MODE_PRIVATE).getString("referrer", null);
}
//--------------------------------------------------------------------------
public ReferrerReceiver()
{
Logger.log(null, "ReferrerReceiver.ReferrerReceiver()");
}
//--------------------------------------------------------------------------
@Override public void onReceive(Context context, Intent intent)
{
Logger.log(context, "ReferrerReceiver.onReceive(Context, Intent)", intent);
try
{
// Make sure this is the intent we expect - it always should be.
if ((null != intent) && (intent.getAction().equals("com.android.vending.INSTALL_REFERRER")))
{
// This intent should have a referrer string attached to it.
String rawReferrer = intent.getStringExtra("referrer");
if (null != rawReferrer)
{
// The string is usually URL Encoded, so we need to decode it.
String referrer = URLDecoder.decode(rawReferrer, "UTF-8");
// Log the referrer string.
Logger.log(context,
"ReferrerReceiver.onReceive(Context, Intent)" +
"\nRaw referrer: " + rawReferrer +
"\nReferrer: " + referrer);
// Persist the referrer string.
context.getSharedPreferences("referrer", Context.MODE_PRIVATE).
edit().putString("referrer", referrer).commit();
// Let any listeners know about the change.
_observable.notifyObservers(referrer);
}
}
}
catch (Exception e)
{
Logger.log(context, e.toString());
}
}
//**************************************************************************
protected static class ObservableChanged extends Observable
{
//----------------------------------------------------------------------
@Override public boolean hasChanged()
{
return true;
}
}
}
但每次重复安装(卸载并安装在同一设备上)后,Play Store 都会将推荐人属性广播到我的应用程序。
要快速测试,请通过此链接从 Play 商店(不是我的)安装此应用程序:https: //play.google.com/store/apps/details?id=fr.simon.marquis.installreferrer&referrer=myReferrerValue
每次首次启动重复安装(卸载并安装在同一设备上)时,您将获得推荐值 =“myReferrerValue”。
我的问题是:
即使在同一设备上重复安装应用程序,Play 商店也会发送推荐广播吗?
每个设备不应该只广播一次推荐人吗?