Android Установить уникальность отслеживания рефералов

В моем приложении реализовано отслеживание реферальных ссылок с сайта: https://developers.google.com/analytics/devguides/collection/android/v4/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 моему приложению после каждой повторной установки (удаление и установка на том же устройстве).

для быстрого тестирования установите это приложение из игрового магазина (не моего) по этой ссылке: https://play.google.com/store/apps/details?id=fr.simon.marquis.installreferrer&referrer=myReferrerValue

вы получите реферальное значение = "myReferrerValue" при каждом первом запуске повторной установки (удаление и установка на том же устройстве).

Мои вопросы:

  1. Посылает ли магазин воспроизведения реферальную трансляцию, даже если приложение установлено на одном устройстве несколько раз?

  2. Разве ссылки не должны транслироваться только один раз на устройство?

1 ответ

Решение
  1. Да, магазин воспроизведения будет отправлять реферреру каждый раз, когда приложение установлено по ссылке, содержащей параметры.

  2. Если вы заботитесь об уникальности, вам нужен некоторый бэкэнд, чтобы убедиться в этом самостоятельно. Вот как, например, настроить это делает. Реферер хранится в Receiver и отправлен в бэкэнд в какой-то момент в будущем.

Если вы думаете об этом, это имеет большой смысл: единственное, что делает приложение Play Store, - это получение параметров реферера из URL и его делегирование обратно в установленное приложение. Здесь в основном нет никакой логики.

Кроме того, разработчики в Google не знают, интересуетесь ли вы уникальностью или нет, поэтому они не будут препятствовать подсчету установок несколько раз, если вы захотите. (AFAIK панель статистики в Play Developer Console действительно отфильтровывает дубликаты, но они все еще доставляются в ваше приложение)

Другие вопросы по тегам