Подключение AppMetrica Push SDK

Библиотека AppMetrica Push SDK поддерживает работу с Gradle. Перед подключением библиотеки необходимо подключить и инициализировать библиотеку AppMetrica SDK не ниже версии 3.0.0, а также добавить GooglePlayServices в проект и настроить ваше приложение для отправки push-уведомлений.

AppMetrica Push SDK под Android предоставляется в виде библиотеки в формате AAR.

Примечание. AppMetrica Push SDK версии 0.6.1 не поддерживает AppMetrica SDK версии 3.0.0 и выше. Для использования этой версии AppMetrica SDK интегрируйте библиотеку версии от 2.51 до 2.80.
  1. Подключение и инициализация библиотеки
  2. Отправка дополнительной информации
  3. Отслеживание запуска приложения через push-уведомление

Подключение и инициализация библиотеки

Шаг 1. Подключение библиотеки

Начиная с версии 1.0.0, AppMetrica Push SDK использует сервис Firebase Cloud Messaging (FCM) для отправки push-сообщений.

Ниже представлены настройки для FCM и GCM:

  1. Пропишите следующую зависимость в файле build.gradle приложения (модуля) в блоке зависимостей:

    dependencies {
        ...
        compile "com.yandex.android:mobmetricapushlib:1.1.0"
        compile "com.google.firebase:firebase-messaging:11.0.4"
        compile "com.google.android.gms:play-services-base:11.0.4"
        compile "com.android.support:support-compat:26.0.0"
        ...
    }
    Примечание. Минимальная версия support-compat — 26.0.0.
  2. Инициализируйте Firebase, используя один из следующих способов:

    Использование Google Services Plugin
    1. Загрузите конфигурационный файл google-services.json и разместите его в каталоге модуля проекта (например, app).
    2. Для корректной работы с файлом подключите плагин Google Services в проект, добавив следующие строки в файл build.gradle:

      проекта
      buildscript{
          ...
          dependencies {
              ...
              classpath 'com.google.gms:google-services:3.1.0'
              ...
          }
          ...
      }
      приложения (модуля)
      // В конце файла
      apply plugin: 'com.google.gms.google-services'
    Без использования плагина

    Внесите следующие изменения в элемент application файла AndroidManifest.xml:

    <meta-data android:name="ymp_firebase_default_app_id" android:value="APP_ID"/>
    <meta-data android:name="ymp_gcm_default_sender_id" android:value="number:SENDER_ID"/>

    APP_ID — идентификатор приложения в Firebase. Его можно узнать в консоли Firebase: перейдите в Настройки проекта и скопируйте значение поля Идентификатор приложения.

    SENDER_ID — уникальный идентификатор отправителя в Firebase. Его можно узнать в консоли Firebase: перейдите во вкладку Настройки проекта → CLOUD MESSAGING и скопируйте значения поля Идентификатор отправителя.

    Использование с другими Firebase-проектами

    Внесите следующие изменения в элемент application файла AndroidManifest.xml:

    <meta-data android:name="ymp_firebase_app_id" android:value="APP_ID"/>
    <meta-data android:name="ymp_gcm_sender_id" android:value="number:SENDER_ID"/>

    APP_ID — идентификатор приложения в Firebase. Его можно узнать в консоли Firebase: перейдите в Настройки проекта и скопируйте значение поля Идентификатор приложения.

    SENDER_ID — уникальный идентификатор отправителя в Firebase. Его можно узнать в консоли Firebase: перейдите во вкладку Настройки проекта → CLOUD MESSAGING и скопируйте значения поля Идентификатор отправителя.

    Внимание. Вам необходимо самостоятельно инициализировать Firebase-проект по умолчанию.

Шаг 2. Инициализация библиотеки

Инициализируйте библиотеку в приложении — объявите производный класс от базового класса Application и переопределите метод onCreate() следующим образом:

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        YandexMetricaPush.init(getApplicationContext());
    }
}

Шаг 3. Настройте Silent Push Notifications

Настройте обработку push-уведомлений, которые не предполагают вывод сообщений (Silent Push Notifications).

  1. Создайте специальный BroadcastReceiver:

    import com.yandex.metrica.push.YandexMetricaPush;
    public class SilentPushReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            // Извлечение данных из вашего push-уведомления.
            String payload = intent.getStringExtra(YandexMetricaPush.EXTRA_PAYLOAD);
            ...
        }
    }
  2. Внесите изменения в элемент application файла AndroidManifest.xml:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android">
      <application>
      ...
        <receiver android:name=".SilentPushReceiver">
          <intent-filter>
            <!-- Получение silent push-уведомлений. -->
            <action android:name="${applicationId}.action.ymp.SILENT_PUSH_RECEIVE"/>
          </intent-filter>
        </receiver>
      ...
      </application>
    </manifest>

    applicationId — уникальный идентификатор приложения в Gradle (имя пакета). Например, com.example.name.

Шаг 4. (Опционально) Включите актуализацию push-токенов

Сервис FCM может отозвать push-токен устройства, например, если пользователь долго не запускал приложение. AppMetrica хранит push-токены на сервере и не может отправить push-сообщение на устройство с устаревшим токеном.

Чтобы автоматически собирать актуальные push-токены, перейдите в настройки приложения в веб-интерфейсе AppMetrica и выберите опцию Актуализировать токены с помощью Silent Push-уведомлений во вкладке Push-уведомления.

Внимание. Убедитесь, что в приложении настроена обработка silent push-сообщений. При некорректной настройке пользователи увидят пустые уведомления при обновлении push-токена.

Отправка дополнительной информации

При необходимости вы можете передавать вместе с push-уведомлением дополнительную информацию. Эти данные указываются в веб-интерфейсе AppMetrica при настройке push-кампании.

public class TargetActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(saveInstanceState);
        handlePayload(getIntent());
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        handlePayload(intent);
    }

    private void handlePayload(Intent intent) {
        // Получение вашего payload..
        String payload = intent.getStringExtra(YandexMetricaPush.EXTRA_PAYLOAD);
      ...
    }
}

Отслеживание запуска приложения через push-уведомление

Чтобы отличить запуски приложения по открытию push-уведомления AppMetrica Push SDK от общего числа запусков, необходимо проверить Intent action приложения. Если в качестве действия вы указали deeplink, он будет являться Intent action. Если в качестве действия выбрано открытие приложения, Intent action будет передавать значение YandexMetricaPush#OPEN_DEFAULT_ACTIVITY_ACTION.