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

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

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

  1. В файле build.gradle добавьте зависимости в блоке dependencies:
    dependencies {
        ...
        implementation "com.yandex.android:mobmetricapushlib:2.3.2"
        implementation "androidx.legacy:legacy-support-v4:1.0.0"
        ...
    }
    Скопировано
  2. Подключите транспорт.

    1. В файле build.gradle добавьте зависимости Firebase в блоке dependencies:
      dependencies {
          ...
          // minimum support version 20.3.0
          implementation "com.google.firebase:firebase-messaging:22.0.0"
          implementation "com.google.android.gms:play-services-base:17.5.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.3.4'
                ...
            }
            ...
        }
        Скопировано
        приложения (модуля)
        // 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"/>
      <meta-data android:name="ymp_firebase_default_api_key" android:value="API_KEY"/>
      <meta-data android:name="ymp_firebase_default_project_id" android:value="PROJECT_ID"/>
      Скопировано

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

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

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

      PROJECT_ID — id приложения в Firebase. Его можно найти в поле project_id файла 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"/>
      <meta-data android:name="ymp_firebase_api_key" android:value="API_KEY"/>
      <meta-data android:name="ymp_firebase_project_id" android:value="PROJECT_ID"/>
      Скопировано

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

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

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

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

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

    AppMetrica Push SDK умеет работать одновременно с Firebase и с HMS.

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

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

Только Firebase
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        YandexMetricaPush.init(getApplicationContext());
    }
}
Скопировано
Только HMS
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        YandexMetricaPush.init(getApplicationContext(), new HmsPushServiceControllerProvider(this));
    }
}
Скопировано
Firebase и HMS
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        YandexMetricaPush.init(
            getApplicationContext(), 
            new FirebasePushServiceControllerProvider(this),
            new HmsPushServiceControllerProvider(this)
        );
    }
}
Скопировано
Внимание. Библиотеку 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‑токенов

Внимание.

Если у вас есть свой сервис для обработки пушей (класс, унаследованный от FirebaseMessagingService или HmsMessageService), проверьте, что не обрабатываете пуши от AppMetrica.

Чтобы проверить, что пуш не от AppMetrica, воспользуйтесь методом MetricaMessagingService.isNotificationRelatedToSDK или MetricaHmsMessagingService.isNotificationRelatedToSDK.

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

Чтобы автоматически собирать актуальные push-токены, перейдите в настройки приложения в веб-интерфейсе AppMetrica и выберите опцию Актуализировать токены с помощью 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.

Настройка иконки по умолчанию

Чтобы указать иконку push-уведомления по умолчанию, внесите изменения в элемент application файла AndroidManifest.xml:

<meta-data android:name="com.yandex.metrica.push.default_notification_icon"
           android:resource="ICON_RESOURCE"/>

ICON_RESOURCE — ресурс иконки. Например, @drawable/large_icon.

Если вы не нашли ответ на свой вопрос, то вы можете задать его через форму обратной связи. Пожалуйста, опишите возникшую проблему как можно подробнее. Если возможно, приложите скриншот.