Flutter плагин
Если вы используете Flutter для разработки мобильного приложения воспользуйтесь готовым плагином для Flutter.
1. Установите зависимости
flutter_pushed_messaging: ^1.4.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
Выполните следующие действия:
- Добавьте в корневой build.gradle следующие зависимости:
buildscript {
...
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
...
}
}
- Поместите google-services.json в папку Android/app.
- Добавьте в app/build.gradle следующий плагин:
...
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
На Android для поддержки Hpk
Выполните следующие действия:
- Добавьте в корневой 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/' }
}
}
- Поместите agconnect-services.json в папку Android/app
- Добавьте в app/build.gradle:
...
dependencies {
...
implementation 'com.huawei.agconnect:agconnect-core:1.5.2.300'
}
...
apply plugin: 'com.huawei.agconnect'
На 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 обработчик.
await FlutterPushedMessaging.init(backgroundMessage);
4. Чтобы отправить сообщение конкретному пользователю, нужно знать его токен Клиента.
print("Client token: ${FlutterPushedMessaging.token}");
5. Прослушивайте сообщения, пока ваше приложение активно
FlutterPushedMessaging.onMessage().listen((message) {
print("Got a message whilst in the foreground: $message");
});
6. Слушаем изменения статуса плагина:
- ServiceStatus.notActive — Плагин не инициализирован или что-то пошло не так.
- ServiceStatus.disconnected — Плагин инициализируется, но соединения с сервером нет.
- ServiceStatus.active - Все работает корректно.
FlutterPushedMessaging.onStatus().listen((status) {
print("Plugin status: $status");
});
7. Запустите приложение
runApp(const MyApp());