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

Я реализовал отслеживание ссылок на установки в своем приложении с: 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 в мое приложение после каждой повторной установки (удаление и установка на одном устройстве).

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

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

Мои вопросы:

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

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


person mrYogi    schedule 02.02.2016    source источник


Ответы (1)


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

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

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

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

person Lovis    schedule 02.02.2016
comment
так что все пакеты SDK для отслеживания установки сами определяют уникальную установку? что произойдет, если кто-то изменит пакет SDK для отслеживания установки, скажем, из Tune(tune.com) в Adjust(adjust.com), то все предыдущие пользователи станут новыми? - person mrYogi; 02.02.2016
comment
@mrYogi да. возможно, они предлагают какую-то миграцию (в конце концов, обычно это платная услуга), но я не знаю. - person Lovis; 02.02.2016