Подключение и инициализация AppMetrica Push SDK
Push SDK под Android предоставляется в виде библиотеки в формате AAR. Библиотека доступна в Maven-репозитории.
Ниже описаны этапы подключения и инициализации AppMetrica Push SDK:
- Шаг 1. Подготовьте приложение
- Шаг 2. Подключите библиотеку
- Шаг 3. Инициализируйте библиотеку
- Шаг 4. (Опционально) Настройте Silent Push Notifications
- Шаг 5. (Опционально) Включите актуализацию push‑токенов
- Отправка дополнительной информации
- Отслеживание запуска приложения через push-уведомление
- Настройка иконки по умолчанию
Шаг 1. Подготовьте приложение
Перед подключением библиотеки AppMetrica Push SDK, подготовьте ваше приложение:
- Подключите основную библиотеку AppMetrica SDK не ниже версии 3.0.0.
- Настройте приложение для отправки push-уведомлений.
Шаг 2. Подключите библиотеку
Начиная с версии 1.4.0 в Push SDK добавлена библиотека OKHttp. Она используется для кэширования изображений, которые показываются в push-уведомлениях. Правила кэширования берутся из HTTP-заголовка cache-control
. Если вы не хотите, чтобы изображения кэшировались, подключите библиотеку без кэширования.
- В файле build.gradle добавьте зависимости в блоке
dependencies
:dependencies { ... implementation "com.yandex.android:mobmetricapushlib:2.3.2" implementation "androidx.legacy:legacy-support-v4:1.0.0" ... }
Скопированоdependencies { ... implementation ("com.yandex.android:mobmetricapushlib:2.3.2") { exclude group: 'com.squareup.okhttp3', module: 'okhttp' } implementation "androidx.legacy:legacy-support-v4:1.0.0" ... }}
Скопировано Подключите транспорт.
- В файле 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" ... }
Скопировано Инициализируйте Firebase, используя один из способов:
- Загрузите конфигурационный файл google-services.json и разместите его в каталоге модуля проекта (например, app).
Для корректной работы с файлом подключите плагин 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'
Скопировано
Использование Google Services PluginБез использования плагинаВнесите изменения в элемент
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: перейдите во вкладку и скопируйте значение поля Идентификатор отправителя.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: перейдите во вкладку и скопируйте значение поля Идентификатор отправителя.API_KEY
— ключ приложения в Firebase. Его можно найти в полеcurrent_key
файла google-services.json. Файл можно скачать из консоли Firebase.PROJECT_ID
— id приложения в Firebase. Его можно найти в полеproject_id
файла google-services.json. Файл можно скачать из консоли Firebase.Внимание. Вам необходимо самостоятельно инициализировать Firebase-проект по умолчанию.
- Добавьте HMS Push Kit в проект.
- В файле build.gradle добавьте зависимости в блоке
dependencies
:dependencies { ... implementation "com.yandex.android:appmetricapush-provider-hms:2.3.2" ... }
СкопированоВнимание. Если вы собираетесь использовать только HMS, исключите Firebase зависимость из основной библиотеки:dependencies { ... implementation ("com.yandex.android:mobmetricapushlib:2.3.2") { exclude group: 'com.yandex.android', module: 'appmetricapush-provider-firebase' } ... }
Скопировано Внесите изменения в элемент
application
файла AndroidManifest.xml:<meta-data android:name="ymp_hms_default_app_id" android:value="number:APP_ID"/>
СкопированоAPP_ID
— идентификатор приложения в HMS. Его можно найти в полеapp_id
файла agconnect-services.json . Файл можно скачать из консоли Huawei.
AppMetrica Push SDK умеет работать одновременно с Firebase и с HMS.
Шаг 3. Инициализируйте библиотеку
Инициализируйте библиотеку в приложении — объявите производный класс от базового класса Application
и переопределите метод onCreate()
следующим образом:
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); YandexMetricaPush.init(getApplicationContext()); } }
Скопировано
class MyApp : Application() { override fun onCreate() { super.onCreate() YandexMetricaPush.init(applicationContext) } }
Скопировано
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); YandexMetricaPush.init(getApplicationContext(), new HmsPushServiceControllerProvider(this)); } }
Скопировано
class MyApp : Application() { override fun onCreate() { super.onCreate() YandexMetricaPush.init(applicationContext, HmsPushServiceControllerProvider(this)) } }
Скопировано
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); YandexMetricaPush.init( getApplicationContext(), new FirebasePushServiceControllerProvider(this), new HmsPushServiceControllerProvider(this) ); } }
Скопировано
class MyApp : Application() { override fun onCreate() { super.onCreate() YandexMetricaPush.init( applicationContext, FirebasePushServiceControllerProvider(this), HmsPushServiceControllerProvider(this) ) } }
Скопировано
Шаг 4. (Опционально) Настройте Silent Push Notifications
Настройте обработку push-уведомлений, которые не предполагают вывод сообщений (Silent Push Notifications).
Создайте специальный
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); ... } }
СкопированоВнесите изменения в элемент
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
.