Подключение и инициализация
- Шаг 1. Подготовьте приложение
- Шаг 2. Подключите библиотеку
- Шаг 3. Инициализируйте библиотеку
- Шаг 4. (Опционально) Настройте Silent Push Notifications
- Шаг 5. (Опционально) Включите актуализацию push‑токенов
- Шаг 6. (Опционально) Настройте использование с другими push SDK
- Отправка дополнительной информации
- Отслеживание запуска приложения через push-уведомление
- Настройка иконки по умолчанию
Push SDK под Android предоставляется в виде библиотеки в формате AAR. Библиотека доступна в Maven-репозитории.
Ниже описаны этапы подключения и инициализации AppMetrica Push SDK:
Шаг 1. Подготовьте приложение
Перед подключением библиотеки AppMetrica Push SDK, подготовьте ваше приложение:
- Подключите основную библиотеку AppMetrica SDK не ниже версии 6.0.0.
- Настройте приложение для отправки push-уведомлений.
Шаг 2. Подключите библиотеку
Push SDK использует библиотеку OKHttp для кэширования изображений, которые показываются в push-уведомлениях.
Правила кэширования берутся из HTTP-заголовка cache-control
.
Если вы не хотите, чтобы изображения кэшировались, подключите библиотеку без кэширования.
-
Если вы используете Gradle для сборки приложения, добавьте следующую зависимость в Gradle файл приложения:
С кэшированием
build.gradle.ktsbuild.gradledependencies { // AppMetrica Push SDK. implementation("io.appmetrica.analytics:push:4.0.0") implementation("androidx.legacy:legacy-support-v4:1.0.0") }
dependencies { // AppMetrica Push SDK. implementation "io.appmetrica.analytics:push:4.0.0" implementation "androidx.legacy:legacy-support-v4:1.0.0" }
Без кэширования
build.gradle.ktsbuild.gradledependencies { // AppMetrica Push SDK. implementation("io.appmetrica.analytics:push:4.0.0") { exclude(group = "com.squareup.okhttp3", module = "okhttp") } implementation("androidx.legacy:legacy-support-v4:1.0.0") }
dependencies { // AppMetrica Push SDK. implementation "io.appmetrica.analytics:push:4.0.0" { exclude group: "com.squareup.okhttp3", module: "okhttp" } implementation "androidx.legacy:legacy-support-v4:1.0.0" }
-
Подключите транспорт.
FirebaseHMS-
Если вы используете Gradle для сборки приложения, добавьте следующую зависимость в Gradle файл приложения:
-
app/build.gradle.kts
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") }
-
app/build.gradle
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 Plugin
-
Загрузите конфигурационный файл
google-services.json
и разместите его в каталоге модуля проекта (например,app
). -
Для корректной работы с файлом подключите плагин Google Services в проект, добавив следующие строки в Gradle файл:
проекта
-
build.gradle.kts
buildscript { dependencies { classpath("com.google.gms:google-services:4.4.0") } }
-
build.gradle
buildscript { dependencies { classpath "com.google.gms:google-services:4.4.0" } }
приложения (модуля)
-
app/build.gradle.kts
apply(plugin = "com.google.gms.google-services")
-
app/build.gradle
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-проект по умолчанию.
-
-
Добавьте HMS Push Kit в проект.
-
Если вы используете Gradle для сборки приложения, добавьте следующую зависимость в Gradle файл приложения:
-
app/build.gradle.kts
dependencies { implementation("io.appmetrica.analytics:push-provider-hms:4.0.0") }
-
app/build.gradle
dependencies { implementation "io.appmetrica.analytics:push-provider-hms:4.0.0" }
Внимание
Если вы собираетесь использовать только HMS, исключите Firebase зависимость из основной библиотеки:
-
app/build.gradle.kts
dependencies { implementation("io.appmetrica.analytics:push:4.0.0") { exclude(group = "io.appmetrica.analytics", module = "push-provider-firebase") } }
-
app/build.gradle
dependencies { implementation("io.appmetrica.analytics:push:4.0.0") { exclude group: "io.appmetrica.analytics", module: "push-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()
следующим образом:
Только Firebase
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
AppMetricaPush.activate(applicationContext)
}
}
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
AppMetricaPush.activate(getApplicationContext());
}
}
Только HMS
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
AppMetricaPush.activate(applicationContext, HmsPushServiceControllerProvider(this))
}
}
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
AppMetricaPush.activate(getApplicationContext(), new HmsPushServiceControllerProvider(this));
}
}
Firebase и HMS
Добавьте зависимость, чтобы иметь возможность вызвать FirebasePushServiceControllerProvider(this)
:
dependencies {
implementation("io.appmetrica.analytics:push-provider-firebase:$appmetrica_push_version")
}
Переопределите класс:
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
AppMetricaPush.activate(
applicationContext,
FirebasePushServiceControllerProvider(this),
HmsPushServiceControllerProvider(this)
)
}
}
Добавьте зависимость, чтобы иметь возможность вызвать FirebasePushServiceControllerProvider(this)
:
dependencies {
implementation "io.appmetrica.analytics:push-provider-firebase:$appmetrica_push_version"
}
Переопределите класс:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
AppMetricaPush.activate(
getApplicationContext(),
new FirebasePushServiceControllerProvider(this),
new HmsPushServiceControllerProvider(this)
);
}
}
Внимание
Библиотеку AppMetrica Push SDK необходимо инициализировать в главном процессе.
Шаг 4. (Опционально) Настройте Silent Push Notifications
Настройте обработку push-уведомлений, которые не предполагают вывод сообщений (Silent Push Notifications).
-
Создайте специальный
BroadcastReceiver
:KotlinJavaclass SilentPushReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { // Extract push message payload from your push message. val payload = intent.getStringExtra(AppMetricaPush.EXTRA_PAYLOAD) } }
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(AppMetricaPush.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, воспользуйтесь методом AppMetricaMessagingService.isNotificationRelatedToSDK
или AppMetricaHmsMessagingService.isNotificationRelatedToSDK
.
Сервис FCM может отозвать push-токен устройства, например, если пользователь долго не запускал приложение. AppMetrica хранит push-токены на сервере и не может отправить push-уведомление на устройство с устаревшим токеном.
Чтобы автоматически собирать актуальные push-токены, перейдите в настройки приложения в веб-интерфейсе AppMetrica и выберите опцию Актуализировать токены с помощью Silent Push-уведомлений во вкладке Push-уведомления.
Шаг 6. (Опционально) Настройте использование с другими push SDK
Если в приложение интегрировано несколько SDK для обработки push-уведомлений, выполните инструкцию Использование с другими push-сервисами.
Примечание
Необходимо выполнить дополнительные настройки, иначе возможны проблемы с обработкой push-уведомлений.
Отправка дополнительной информации
При необходимости вы можете передавать вместе с push-уведомлением дополнительную информацию. Эти данные указываются в веб-интерфейсе AppMetrica при настройке push-кампании.
class TargetActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
handlePayload(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handlePayload(intent)
}
private fun handlePayload(intent: Intent) {
// Handle your payload.
val payload = intent.getStringExtra(AppMetricaPush.EXTRA_PAYLOAD)
}
}
public class TargetActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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(AppMetricaPush.EXTRA_PAYLOAD);
}
}
Отслеживание запуска приложения через push-уведомление
Чтобы отличить запуски приложения по открытию push-уведомления AppMetrica Push SDK от общего числа запусков, необходимо проверить Intent action приложения.
Если в качестве действия вы указали deeplink, он будет являться Intent action.
Если в качестве действия выбрано открытие приложения, Intent action будет передавать значение AppMetricaPush#OPEN_DEFAULT_ACTIVITY_ACTION
.
Настройка иконки по умолчанию
Чтобы указать иконку push-уведомления по умолчанию, внесите изменения в элемент application
файла AndroidManifest.xml
:
<meta-data android:name="io.appmetrica.analytics.push.default_notification_icon"
android:resource="ICON_RESOURCE"/>
ICON_RESOURCE
— ресурс иконки.
Например, @drawable/large_icon
.
См. также
- Настройка приложения на базе Android для отправки push-уведомлений
- Как проверить, что у меня установлены последние версии Android-библиотек?
Если вы не нашли ответ на свой вопрос, то вы можете задать его через форму обратной связи. Пожалуйста, опишите возникшую проблему как можно подробнее. Если возможно, приложите скриншот.