Flutter плагин
Если вы используете Flutter для разработки мобильного приложения воспользуйтесь готовым плагином для Flutter.
1. Установите зависимости
flutter_pushed_messaging: ^1.6.0
import 'flutter_pushed_messaging/flutter_pushed_messaging.dart';
Если вы используете iOS убедитесь, что вы правильно настроили свое приложение для поддержки push-уведомлений: вам необходимо добавить возможность push-уведомлений и фоновый режим удаленных уведомлений (background mode).
Для iOS
На iOS добавьте следующие строки в метод didFinishLaunchingWithOptions в файле AppDelegate.m/AppDelegate.swift вашего проекта iOS
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
}
На Android для поддержки Fcm
Выполните следующие действия:
- Добавьте следующие зависимости:
Для gradle 7 в корневой build.gradle:
buildscript {
...
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
...
}
}
Для gradle 8 в корневой settings.gradle:
plugins {
...
id "com.google.firebase:firebase-crashlytics-gradle" version "2.8.1" apply false
id "com.google.gms.google-services" version "4.3.15" apply false
}
- Поместите google-services.json в папку Android/app.
- Добавьте следующие плагины:
Для gradle 7 в app/build.gradle:
...
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
Для gradle 8 в app/build.gradle:
plugins {
...
id "com.google.gms.google-services"
id "com.google.firebase.crashlytics"
id "dev.flutter.flutter-gradle-plugin"
}
На Android для поддержки Hpk
Выполните следующие действия:
- Добавьте:
Для gradle 7 в корневой build.gradle:
buildscript {
...
repositories {
...
maven { url 'https://developer.huawei.com/repo/' }
}
dependencies {
classpath 'com.huawei.agconnect:agcp:1.5.2.300'
...
}
}
allprojects {
repositories {
...
maven { url 'https://developer.huawei.com/repo/' }
}
}
Для gradle 8 в начало build.gradle:
buildscript {
repositories {
google()
mavenCentral()
maven { url 'https://developer.huawei.com/repo/' }
}
dependencies {
// Add the Android Gradle plugin configuration. You need to replace {version} with the actual Gradle plugin version, for example, 7.1.1.
classpath 'com.android.tools.build:gradle:8.1.2'
// Add the AppGallery Connect plugin configuration. Please refer to AppGallery Connect Plugin Dependency to select a proper plugin version.
classpath 'com.huawei.agconnect:agcp:1.9.1.300'
}
}
- Поместите agconnect-services.json в папку Android/app
- Добавьте следующие плагины:
Для gradle 7 в app/build.gradle:
...
dependencies {
...
implementation 'com.huawei.agconnect:agconnect-core:1.5.2.300'
}
...
apply plugin: 'com.huawei.agconnect'
Для gradle 8 в app/build.gradle:
plugins {
...
id "com.huawei.agconnect"
id "dev.flutter.flutter-gradle-plugin"
}
На Android для поддержки RuStore
Выполните следующие действия: Добавьте в AndroidManifest.xml:
<application>
...
<meta-data
android:name="ru.rustore.sdk.pushclient.project_id"
android:value="Your RuStore project ID" />
...
</application>
2. Фоновый процесс
Сообщения могут обрабатываться через обработчик backgroundMessage. При получении создается изолят(изолированный процесс), позволяющий обрабатывать сообщения, даже если ваше приложение не запущено.
@pragma('vm:entry-point')
Future<void> backgroundMessage(Map<dynamic,dynamic> message) async
{
print("Handling a background message: $message");
}
3. Проинициализируйте плагин и добавьте backgroundMessage обработчик.
// Optional parameters:
// notificationChannel - (Android only) notification channel (if cahnnel == null The library will not show notifications)
// loggerEnabled - Allows the library to save a local log for debugging purposes
// askPermissions - If set to true, permissions are automatically requested.
await FlutterPushedMessaging.init(backgroundMessage, notificationChannel: "messages", askPermissions: true, loggerEnabled: false);
4. Если вам надо запросить разрешения самостоятельно, используйте метод askPermissions:
//askNotificationPermission - Ask permissions to display notifications.
//askBackgroundPermission - Ask permissions to work in the background(Android only)
await FlutterPushedMessaging.askPermissions(askBackgroundPermission: true, askNotificationPermission: true);
5. Чтобы отправить сообщение конкретному пользователю, нужно знать его токен Клиента.
print("Client token: ${FlutterPushedMessaging.token}");
6. Прослушивайте сообщения, пока ваше приложение активно
FlutterPushedMessaging.onMessage().listen((message) {
print("Got a message whilst in the foreground: $message");
});
7. Слушаем изменения статуса плагина:
- ServiceStatus.notActive — Плагин не инициализирован или что-то пошло не так.
- ServiceStatus.disconnected — Плагин инициализируется, но соединения с сервером нет.
- ServiceStatus.active - Все работает корректно.
FlutterPushedMessaging.onStatus().listen((status) {
print("Plugin status: $status");
});
8. Запустите приложение
runApp(const MyApp());