首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android安装推荐跟踪唯一性

Android安装推荐跟踪唯一性
EN

Stack Overflow用户
提问于 2016-02-02 09:47:30
回答 1查看 1.4K关注 0票数 1

我在我的应用程序中实现了安装推荐跟踪:https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-campaigns

我的转诊接受者:

代码语言:javascript
复制
    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;
        }
    }
}

但是referrer属性在每次重复安装(卸载和安装在同一设备上)之后,都会被Play Store广播到我的应用程序。

要快速测试,请从play store(不是我的)从以下链接安装此应用程序:https://play.google.com/store/apps/details?id=fr.simon.marquis.installreferrer&referrer=myReferrerValue

在第一次启动重复安装(卸载和安装在同一设备上)时,您将获得引用值= "myReferrerValue“。

我的问题是:

  1. 即使在同一设备上安装应用程序时,播放商店也会发送推荐广播吗?
  2. 每个设备不应该只播放一次推荐人吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-02 10:13:26

  1. 是的,每次使用包含参数的链接安装应用程序时,play商店都会发送推荐人。
  2. 如果您关心唯一性,您需要一些后端来验证您自己。调整就是这样做的。引用程序存储在Receiver中,并在将来的某个时候发送到后端。

如果你这么想的话,这很有道理: Play Store app所做的唯一的事情就是从url中获取引用参数,并将其委托给已安装的应用程序。这里基本上不涉及任何逻辑。

而且,google的开发者不知道你是否对这种唯一性感兴趣,所以如果你愿意的话,他们不会阻止你多次计算安装次数。(AFAIK - Play Developer控制台中的统计面板-确实过滤掉了副本,但它们仍然交付给您的应用程序)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35149904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档