Понимание того, как люди находят ваше приложение и что они делают, когда его устанавливают, очень важно для хорошего маркетинга. Особенно в том случае, если вы проводите свою рекламную компанию. Сегодня многие компании и рекламные сети предлагают решения на основе реферальных данных, которые позволяют определить, сколько было переход по ссылкам на приложение и откуда.
С этой целью Google выпустил новый API под названием Google Play Install Referrer, с помощью которого ваше приложение получит точную и безопасную информацию о содержимом реферала прямо из Google Play. В частности, вы можете узнать следующие данные:
- URL-адрес реферала
- Временная отметка в секундах, когда произошёл клик по реферальной ссылке
- Временная отметка в секундах, когда началась установка приложения
Новый API работает на любых устройствах, однако для его работы требуется версия Google Play 8.3.73 и выше. Также должна иметься учётная запись в Developer Console для использования Google Play Install Referrer.
Добавление Google Play Install Referrer в своё приложение
Для того, чтобы начать работу с API, вам нужно будет добавить в зависимости проекта бибилотеку InstallReferrerLibrary. Библиотека доступна на репозитории Maven, чтобы использовать её, откройте файл build.gradle модуля приложения и добавьте следующую строчку в блок dependencies.
dependencies { ... compile 'com.android.installreferrer:installreferrer:1.0' }
Теперь вам нужно установить связь между приложением и Google Play, поскольку приложение и магазин общаются через сервис. Для этого в коде активности, например MainAcivity, нужно создать экземпляр класса InstallReferrerClient и вызвать метод startConnection().
private InstallReferrerClient mReferrerClient; ... mReferrerClient = InstallReferrerClient.newBuilder(this).build(); mReferrerClient.startConnection(installReferrerStateListener);
В качестве параметра в метод startConnection() нужно передать слушатель InstallReferrerStateListener, который будет отлавливать результат выполнения операции. В данном примере мы объявили слушатель отдельно и передали его в параметры, однако можно сделать это и иначе, используя implements.
Затем нужно обработать результаты выполнения операций, для этого нужно переопределить метод onInstallReferrerSetupFinished(). Это нужно также для того, чтобы отслеживать потерю соединения с Google Play, например, когда он обновляется в фоновом режиме.
Код слушателя выглядит следующим образом:
private InstallReferrerStateListener installReferrerStateListener = new InstallReferrerStateListener() { @Override public void onInstallReferrerSetupFinished(int responseCode) { switch (responseCode) { case InstallReferrerClient.InstallReferrerResponse.OK: // Соединение установлено try { if (BuildConfig.DEBUG) Log.d("InstallReferrerState", "OK"); ReferrerDetails response = mReferrerClient.getInstallReferrer(); response.getInstallReferrer(); response.getReferrerClickTimestampSeconds(); response.getInstallBeginTimestampSeconds(); mReferrerClient.endConnection(); } catch (RemoteException e) { e.printStackTrace(); } break; case InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED: if (BuildConfig.DEBUG) Log.d("InstallReferrerState", "FEATURE_NOT_SUPPORTED"); // API не поддерживается текущей версией Google Play break; case InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE: if (BuildConfig.DEBUG) Log.d("InstallReferrerState", "SERVICE_UNAVAILABLE"); // Соединение не может быть установлено break; } } @Override public void onInstallReferrerServiceDisconnected() { // Попробуйте перезапустите соединение, заново вызвав метод startConnection() mReferrerClient.startConnection(installReferrerStateListener); } };
В методе onInstallReferrerSetupFinished() приходит результат выполнения операции соединения. Если соединение установлено, мы можем получить данные о реферале, вызвав метод клиента getInstallReferrer() и передав в экземпляр класса ReferrerDetails. С помощью этого объекта мы уже может получить конкретные данные, о которых говорили в начале статьи (url-адрес и временные отметки).
После получения данных не забудьте вызвать метод endConnection() для закрытия соединения, чтобы избежать утечек памяти и производительности.
Полученную информацию уже можно обрабатывать так, как вам угодно. Например, выводить всплывающее сообщение, в котором будет указано, откуда пользователь перешёл в Google Play.
К примеру, добавим реферальную ссылку для приложения Фонарик. При переходе по этой ссылке вы попадёте в Google Play, затем, установив приложение и запустив его, увидите во всплывающем сообщении, что в источнике указан наш сайт.
На этом всё. Если хотите, вы также можете изучить официальную документацию для дополнительных сведений.
Спасибо конечно, но ваш пример не будет ничего показывать пользователю. для того чтобы это сделать, надо как минимум добавить в пример вызов тост уведомления.
Не работает. Возможно нужно что-то в настройках выставить? У меня samsung a50 2019.