Перейти к основному содержимому

Android библиотека

Android библиотека для использования Pushed Messaging.

Чтобы узнать больше о Pushed Messaging, посетите веб-сайт Pushed

Начало работы

Шаг 1. Добавьте необходимые репозитории в ваш корневой файл settings.gradle:

// settings.gradle
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
maven { url 'https://developer.huawei.com/repo/' } // Нужен для HPK
}
}

Шаг 2. Добавьте зависимость библиотеки в build.gradle вашего приложения:

dependencies {
implementation 'com.github.PushedLab:Pushed.Messaging.Android.Library:1.5.1' // Проверьте последнюю версию
}

Настройка провайдеров пуш-сервисов

По умолчанию библиотека включает зависимости для FCM, HPK и RuStore Push для обратной совместимости. Если вам не нужны все из них, вы можете легко их исключить.

Это рекомендуемый подход для оптимизации размера вашего приложения.

Исключение неиспользуемых провайдеров

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

dependencies {
implementation('com.github.PushedLab:Pushed.Messaging.Android.Library:1.5.1') {
// Пример: Исключить HPK и RuStore, оставив только FCM
exclude group: 'com.huawei.hms', module: 'push'
exclude group: 'ru.rustore.sdk', module: 'pushclient'
exclude group: 'com.google.firebase', module: 'firebase-messaging'
}

}

Когда вы исключаете провайдера, не забудьте также установить соответствующий флаг в false при инициализации PushedService.

Настройка для конкретных провайдеров

Если вы используете провайдера, вам все равно необходимо выполнить его специфическую настройку (например, добавить плагины и файлы конфигурации).

Firebase Cloud Messaging (FCM)

  1. Плагин: Примените плагин Google Services в app/build.gradle (id 'com.google.gms.google-services') и добавьте classpath в ваш корневой build.gradle.
  2. Файл конфигурации: Поместите ваш файл google-services.json в директорию app/.

Huawei Push Kit (HPK)

  1. Плагин: Примените плагин AGConnect в app/build.gradle (id 'com.huawei.agconnect') и добавьте classpath в ваш корневой build.gradle.
  2. Файл конфигурации: Поместите ваш файл agconnect-services.json в директорию app/.

RuStore Push

  1. Конфигурация: Добавьте ваш ID проекта в AndroidManifest.xml внутри тега <application>.
    <meta-data
    android:name="ru.rustore.sdk.pushclient.project_id"
    android:value="Ваш ID проекта RuStore" />

Базовая настройка

Шаг 1. Создайте MessageReceiver для обработки фоновых сообщений.

class MyMessageReceiver : MessageReceiver() {
override fun onBackgroundMessage(context: Context?, message: JSONObject) {
Log.d("MyMessageReceiver", "Получено фоновое сообщение: $message")
}
}

Шаг 2. Зарегистрируйте ваш receiver в AndroidManifest.xml.

<application>
...
<receiver
android:name=".MyMessageReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="ru.pushed.action.MESSAGE" />
</intent-filter>
</receiver>
...
</application>

Реализация

Инициализация сервиса

Создайте экземпляр PushedService в вашем Activity или классе Application. Библиотека автоматически определяет, какие пуш-провайдеры доступны, на основе зависимостей, которые вы включили в свой проект.

// в onCreate вашей Activity
pushedService = PushedService(
context = this,
messageReceiverClass = MyMessageReceiver::class.java,
channel = "messages" // Канал уведомлений для пушей, отображаемых библиотекой
)

Параметры конструктора:

  • context: Context - Контекст приложения.
  • messageReceiverClass: Class<*>? - Ваш кастомный receiver для фоновых сообщений.
  • channel: String? - ID канала уведомлений. Если null, библиотека не будет показывать собственные уведомления.
  • enableLogger: Boolean - Включает локальное логирование для отладки.
  • askPermissions: Boolean - Если true, библиотека автоматически запросит разрешения на уведомления и фоновую работу при первом запуске.
  • applicationId: String? - Ваш ID приложения из панели Pushed.

Обработка сообщений в активном приложении

Для получения сообщений, когда ваше приложение находится на переднем плане, вызовите pushedService.start() в onResume.

override fun onResume() {
super.onResume()
// token - это ваш клиентский токен для отправки пушей этому конкретному пользователю.
val token = pushedService.start { message ->
Log.d("MyActivity", "Получено сообщение в активном приложении: $message")
// Верните true, если сообщение обработано.
// Если вы вернете false, библиотека покажет уведомление
// и передаст сообщение вашему обработчику onBackgroundMessage.
true
}
Log.d("MyActivity", "Клиентский токен: $token")
}

Отвязка от сервиса

Чтобы предотвратить утечки памяти, отвяжитесь от сервиса, когда ваша activity больше не находится на переднем плане.

override fun onStop() {
pushedService.unbindService()
super.onStop()
}

Запрос разрешений вручную

Если вы установили askPermissions = false при инициализации, вы можете запросить разрешения вручную в любое время.

// askNotification: Запрашивает разрешение на отображение уведомлений.
// askBackgroundWork: Запрашивает разрешение на игнорирование оптимизации батареи.
pushedService.askPermissions(askNotification = true, askBackgroundWork = true)