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)
- Плагин: Примените плагин Google Services в
app/build.gradle
(id 'com.google.gms.google-services'
) и добавьте classpath в ваш корневойbuild.gradle
. - Файл конфигурации: Поместите ваш файл
google-services.json
в директориюapp/
.
Huawei Push Kit (HPK)
- Плагин: Примените плагин AGConnect в
app/build.gradle
(id 'com.huawei.agconnect'
) и добавьте classpath в ваш корневойbuild.gradle
. - Файл конфигурации: Поместите ваш файл
agconnect-services.json
в директориюapp/
.
RuStore Push
- Конфигурация: Добавьте ваш 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)