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

Flutter плагин

Если вы используете Flutter для разработки мобильного приложения воспользуйтесь готовым плагином для Flutter.

1. Установите зависимости

flutter_pushed_messaging: ^1.6.0
import 'flutter_pushed_messaging/flutter_pushed_messaging.dart';

Настройка приложения под iOS

Если вы используете 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

Выполните следующие действия:

  1. Добавьте следующие зависимости:

Для 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
}
  1. Поместите google-services.json в папку Android/app.
  2. Добавьте следующие плагины:

Для 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

Выполните следующие действия:

  1. Добавьте:

Для 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'
}
}
  1. Поместите agconnect-services.json в папку Android/app
  2. Добавьте следующие плагины:

Для 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());