Подключение и инициализация AppMetrica Push SDK

Push SDK под Android предоставляется в виде библиотеки в формате AAR. Библиотека доступна в Maven-репозитории.

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

Ниже описаны этапы подключения и инициализации AppMetrica Push SDK:

  1. Шаг 1. Подготовьте приложение
  2. Шаг 2. Подключите библиотеку
  3. Шаг 3. Инициализируйте библиотеку
  4. Шаг 4. Настройте Silent Push Notifications
  5. Шаг 5. (Опционально) Включите актуализацию push‑токенов
  6. Отправка дополнительной информации
  7. Отслеживание запуска приложения через push-уведомление

Шаг 2. Подключите библиотеку

Начиная с версии 1.4.0 в Push SDK добавлена библиотека OKHttp. Она используется для кэширования изображений, которые показываются в push-уведомлениях. Правила кэширования берутся из HTTP-заголовка cache-control. Если вы не хотите, чтобы изображения кэшировались, подключите библиотеку без кэширования.

  1. В файле build.gradle добавьте зависимости в блоке dependencies:
    dependencies {
        ...
        implementation "com.yandex.android:mobmetricapushlib:1.4.1"
        implementation "com.google.firebase:firebase-messaging:17.3.4"
        implementation "com.google.android.gms:play-services-base:16.1.0"
        implementation "com.android.support:support-compat:28.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:4.2.0'
              ...
          }
          ...
      }
      приложения (модуля)
      // In the end of the file.
      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"/>
    
    <!-- If you have a dependency on com.google.firebase:firebase-auth -->
    <meta-data android:name="ymp_firebase_default_api_key" android:value="API_KEY"/>

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

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

    API_KEY — ключ приложения в Firebase. Его можно найти в поле current_key файла google-services.json. Файл можно скачать из консоли Firebase.

    Использование с другими 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"/>
    
    <!-- If you have a dependency on com.google.firebase:firebase-auth -->
    <meta-data android:name="ymp_firebase_api_key" android:value="API_KEY"/>

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

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

    API_KEY — ключ приложения в Firebase. Его можно найти в поле current_key файла google-services.json. Файл можно скачать из консоли Firebase.

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

Шаг 3. Инициализируйте библиотеку

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

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        YandexMetricaPush.init(getApplicationContext());
    }
}
Внимание. Библиотеку AppMetrica Push SDK необходимо инициализировать в главном процессе.

Шаг 4. Настройте 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) {
            // Extract push message payload from your push message.
            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>
            <!-- Receive silent push notifications. -->
            <action android:name="${applicationId}.action.ymp.SILENT_PUSH_RECEIVE"/>
          </intent-filter>
        </receiver>
      ...
      </application>
    </manifest>

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

Шаг 5. (Опционально) Включите актуализацию 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) {
        // Handle your 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.