Настройка Push-уведомлений приложения во Flutter с помощью PushEngage

Flutter SDK от PushEngage упрощает интеграцию push-уведомлений в ваши Flutter-приложения, обеспечивая безупречную совместимость с платформами Android и iOS.

Это руководство проведет вас через этапы настройки PushEngage Flutter SDK и включения push-уведомлений в ваших приложениях для Android и iOS.

Прежде чем начать

Вот список того, что вам понадобится

  • Проект Flutter и учетная запись PushEngage. Если у вас нет учетной записи, вы можете зарегистрироваться здесь.
  • Учетная запись Firebase с настроенным Firebase Cloud Messaging (FCM) для Android.
  • Учетная запись разработчика Apple для настройки служб Apple Push Notification (APN) для iOS.

Установка

1. Откройте ваш Flutter-проект в вашем редакторе кода.

2. Добавьте следующую зависимость в ваш файл pubspec.yaml:

dependencies:
	pushengage_flutter_sdk: ^0.0.1

3. Выполните следующую команду для установки пакета.

dependencies:
flutter pub get

Настройка Android

Настройка Firebase Cloud Messaging (FCM)

Чтобы включить push-уведомления для Android, вам потребуется настроить Firebase Cloud Messaging (FCM):

1. Войдите в консоль Firebase, используя свою учетную запись Google.

2. Создайте новый проект или выберите существующий: Нажмите «Добавить проект», чтобы создать новый проект, или выберите существующий проект из списка. Если вы используете существующий проект, переходите сразу к шагу 4.

3. Введите сведения о проекте: Добавьте название для вашего проекта и нажмите Продолжить. Завершите процесс настройки, нажав «Создать проект» на последнем экране.

4. Добавьте приложение Android в проект: На панели управления проектом Firebase нажмите на значок Android, чтобы добавить приложение Android.

5. Настройте приложение Android: Введите имя пакета вашего Android-приложения (найдите его в android/app/build.gradle в блоке android) и укажите название приложения. Нажмите Зарегистрировать по завершении.

6. Скачайте файл конфигурации: Скачайте файл google-services.json и поместите его в корень модуля вашего Android-приложения по пути android/app/

7. Сгенерируйте JSON файла учетной записи службы

  • В консоли Firebase нажмите значок Настройки рядом с «Обзор проекта» в верхнем левом углу, затем выберите Настройки проекта.
  • Перейдите на вкладку Учетные записи служб.
  • Нажмите Сгенерировать новый закрытый ключ и скачайте файл .json.
  • Сохраните этот файл в надежном месте, так как он понадобится вам для настройки на панели управления PushEngage.

8. Получите идентификатор отправителя

  • В консоли Firebase нажмите значок Настройки рядом с Обзор проекта в верхнем левом углу и выберите «Настройки проекта».
  • Выберите вкладку Cloud Messaging. Здесь вы найдете идентификатор отправителя, который необходим для инициализации PushEngage SDK.

Интегрируйте FCM с панелью управления PushEngage

Чтобы беспрепятственно интегрировать данные FCM с панелью управления PushEngage, выполните следующие шаги:

  1. Войдите в свою учетную запись PushEngage, используя свои учетные данные.
  1. Перейдите в Настройки » Установка, затем выберите вкладку Android SDK
  1. Теперь настройте параметры FCM
  • Введите ваш Firebase Sender ID (полученный из Firebase Console).
  • Загрузите файл Service Account JSON (скачанный из Firebase).
  • Нажмите кнопку Обновить, чтобы сохранить эти настройки.

5. Скопируйте App ID: После настройки параметров FCM вам будет предоставлен App ID. Скопируйте этот App ID, так как он требуется для инициализации PushEngage Android SDK в вашем приложении Flutter.

Настройка iOS

Настройка проекта

Мы просим вас выполнить следующие шаги после открытия вашего проекта.

Вот как вы можете открыть проект: your_project_name » iOS » Runner.xcworkspace.

1. Включите удаленные уведомления

  • Откройте ваш проект Xcode и выберите корневой проект в навигаторе проекта.
  • Выберите вашу основную цель приложения.
  • Перейдите в раздел «Подписи и возможности».
  • Убедитесь, что добавлена возможность Фоновые режимы. Если нет, добавьте ее, нажав кнопку «+ Возможность».
  • Аналогично, убедитесь, что добавлена возможность Push-уведомлений. Если нет, добавьте ее с помощью кнопки «+ Возможность».

Если возможность «Push-уведомления» не отображается в Xcode:

  • Перейдите в вашу учетную запись разработчика Apple.
  • Перейдите в раздел «Сертификаты, идентификаторы и профили». Выберите идентификатор вашего приложения.
  • Измените конфигурацию вашего App ID и убедитесь, что Push-уведомления включены.
  • Вернитесь в Xcode и попробуйте добавить возможность Push-уведомления снова.

2. Включите фоновые режимы

  • В вашем проекте Xcode перейдите в раздел «Подписи и возможности».
  • В разделе «Фоновые режимы» включите как «Удаленные уведомления», так и «Фоновое извлечение».
  • Этот шаг гарантирует, что ваше приложение сможет эффективно обрабатывать удаленные уведомления и фоновое извлечение данных.

Если у вас нет сертификата APN для iOS, вы можете создать его, следуя руководству здесь.

Далее вам нужно добавить расширение Notification Service и расширение Notification Content только для iOS.

Создание расширения Notification Service

Расширение Notification Service расширяет возможности вашего приложения iOS по получению уведомлений. Оно используется для изменения содержимого уведомления или для получения/обработки любых данных при получении уведомления. Следуйте этим шагам, чтобы создать расширение Notification Service:

  1. Откройте Xcode и перейдите к вашему проекту.
  2. Выберите Файл » Новый » Цель в меню.
  3. В окне выбора шаблона выберите Notification Service Extension и нажмите Далее.

4. Присвойте имя вашему расширению, например, PushEngageNotificationServiceExtension, и нажмите Готово.

4. Присвойте имя вашему расширению, например, PushEngageNotificationServiceExtension, и нажмите Готово.

5. По завершении создания Notification Service Extension вам может быть предложено активировать его. Не активируйте его сразу. Активация расширения переключит фокус отладки Xcode с вашего приложения на расширение. Если вы активируете его случайно, не волнуйтесь; вы можете вернуться к отладке вашего приложения в Xcode.

6. В навигаторе проекта выберите каталог верхнего уровня проекта и выберите цель NotificationServiceExtension в списке целей, созданных в шаге № 4.

7. Установите Deployment Target на iOS 10 или выше, так как это версия iOS, для которой Apple выпустила поддержку этого расширения. 

Инициализация SDK PushEngage для Notification Service Extension

Чтобы обеспечить надлежащее функционирование SDK PushEngage в вашем iOS Notification Service Extension, выполните следующие шаги:

  1. Откройте your_project_name » ios » Podfile.
  2.  Добавьте следующее в конец вашего Podfile:
post_install do |installer|

  installer.pods_project.targets.each do |target|

    flutter_additional_ios_build_settings(target)

    target.build_configurations.each do |config|

      config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'No'

     end

  end

end

target 'Your_Notification_Service_Extension_Name' do

  use_frameworks!

  pod 'PushEngage', '~>0.0.4'

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

Теперь вам нужно перейти в каталог iOS вашего проекта и выполнить следующую команду:

pod repo update 

pod install
  1. В вашей цели Notification Service Extension убедитесь, что вы импортировали фреймворк PushEngage и добавили необходимый код инициализации. Вот как вы можете сделать это с помощью Swift.
import UserNotifications
import PushEngage

@available(iOSApplicationExtension 10.0, *)
class PushEngageNotificationServiceExtension: UNNotificationServiceExtension {

    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?
    var request : UNNotificationRequest?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        self.request = request
        self.contentHandler = contentHandler
        self.bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
       
        if let bestContent = bestAttemptContent {
            PushEngage.didReceiveNotificationExtensionRequest(request, bestContentHandler: bestContent)
            contentHandler(bestContent)
        }
    }
   
    override func serviceExtensionTimeWillExpire() {
        // Called just before the extension will be terminated by the system.
        // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
        if let contentHandler = contentHandler, let request = request ,let bestAttemptContent =  bestAttemptContent {
            guard let content = PushEngage.serviceExtensionTimeWillExpire(request, content: bestAttemptContent) else {
                contentHandler(bestAttemptContent)
                return
            }
            contentHandler(content)
        }
    }

}

Создание Notification Content Extension

Чтобы улучшить отображение путем добавления пользовательского интерфейса, вам потребуется создать Notification Content Extension. Следуйте приведенным ниже шагам для настройки расширения:

  1. В Xcode перейдите в Файл » Новый » Цель.
  2. Выберите Notification Content Extension и нажмите Далее.

3. Не выбирайте «Активировать» в диалоговом окне, которое появляется после нажатия «Готово». Отмена сохранит отладку вашего приложения в Xcode вместо расширения. Если вы случайно активируете его, вернитесь к отладке вашего приложения в Xcode (рядом с кнопкой запуска).

4. В навигаторе проекта выберите каталог верхнего уровня проекта и выберите цель NotificationContentExtension в списке целей, созданных в шаге № 2.

5. Установите Deployment Target на iOS 10 или выше, так как это версия iOS, для которой Apple выпустила поддержку этого расширения. 

Инициализация SDK PushEngage для Notification Content Extension

Чтобы обеспечить надлежащее функционирование SDK PushEngage в вашем iOS Notification Content Extension, выполните следующие шаги:

Откройте your_project_name » iOS » Podfile.

Добавьте следующее в конец вашего Podfile:

target 'Your_Notification_Content_Extension_Name' do
  use_frameworks!
  pod 'PushEngage', '0.0.4'
end

  1. Установите зависимость: Вот код, который вам нужно выполнить в командной строке.

e

pod repo update 
pod install
  1. В вашем целевом объекте Notification Content Extension убедитесь, что вы импортировали фреймворк PushEngage и добавили необходимый код инициализации. Вот как вы можете сделать это с примерами элементов пользовательского интерфейса с использованием Swift.
import UIKit
import UserNotifications
import UserNotificationsUI
import PushEngage

@available(iOSApplicationExtension 10.0, *)

class NotificationViewController: UIViewController, UNNotificationContentExtension {
    fileprivate var hostingView: UIHostingController<ContentView>?
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .white
    }

    func didReceive(_ notification: UNNotification) {
        if(notification.request.content.categoryIdentifier == "your_identifier"){
            let payLoad = PushEngage.getCustomUIPayLoad(for: notification.request)
  //pass the payload to your custom View
            let view = CustomView(payLoadInfo: payLoad)
            hostingView = UIHostingController(rootView: view)
If let customView = self.hostingView {
            addChild(hostingView!)
}
        }
    }
}

Добавить группы приложений

Группы приложений необходимы для обеспечения связи между основным приложением, расширением службы уведомлений и расширением содержимого уведомлений. Следуйте этим шагам, чтобы добавить группы приложений в ваш проект iOS:

Если у вас есть существующая группа приложений, и вы хотите использовать только ее, перейдите к шагу № 4.

  1. В вашем проекте Xcode, в навигаторе проекта, выберите корневой каталог проекта и выберите основную цель приложения.
  2. Перейдите на вкладку Signing & Capabilities.
  3. Нажмите кнопку “+ Capability” и выберите App Groups из списка.

4. Нажмите кнопку +, чтобы добавить группу приложений.

5. Добавьте уникальное имя для вашей группы приложений и нажмите OK.

6. В основной области редактора выберите основную цель вашего приложения. создана группа приложений, укажите имя группы в вашем файле Info.plist приложения с ключом PushEngage_App_Group_Key.

7. Добавьте тот же ключ и значение в файл Info.plist расширения службы уведомлений.

8. Убедитесь, что вы выбрали одну и ту же группу приложений как для основной цели приложения, так и для вашего расширения службы уведомлений.

Инициализация PushEngage SDK

В вашем файле main.dart инициализируйте PushEngage SDK.

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});
  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  Future<void> initPlatformState() async {
    PushEngage.setAppId("your_pushengage_app_id");
  }
  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'PushEngage',
      debugShowCheckedModeBanner: false,
      home: Home(),
    );
  }
}

В вашем файле AppDelegate.swift приложения iOS

import Flutter
import UIKit
import PushEngage

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
    
    override init() {
        super.init()
        PushEngage.swizzleInjection(isEnabled: true)
    }
    
    override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        if #available(iOSApplicationExtension 10.0, *) {
            UNUserNotificationCenter.current().delegate = self
        }
        GeneratedPluginRegistrant.register(with: self)
        PushEngage.setBadgeCount(count: 0)
        PushEngage.setNotificationWillShowInForegroundHandler { notification, completion in
            if notification.contentAvailable == 1 {
                // in case developer failed to set completion handler. After 25 sec handler will call.
                completion(nil)
            } else {
                completion(notification)
            }
        }
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
    }
}

Обработка deepLink

deepLinkStream — это то, что выдает данные deepLink. 

class Home extends StatefulWidget {
  const Home({super.key});

  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  late StreamSubscription _deepLinkSubscription;

  @override
  void initState() {
    super.initState();
    PushEngage.deepLinkStream.listen((data) {
      _handleDeepLink(data);
    });
  }

  void _handleDeepLink(Map<String, dynamic>? data) {
    // Parse the deep link and navigate accordingly
    Uri uri = Uri.parse(data?['deepLink']);
    print('Path: ${uri.path}');
    updateResponseText(data.toString());
    switch (uri.path) {
      case 'trigger':
      case '/trigger':
        print(‘your_implementation’)
        break;
    }
  }

c

i

Вот и все, вы успешно интегрировали Flutter SDK для Android и iOS приложений.

Если у вас возникнут какие-либо проблемы, пожалуйста, свяжитесь с нами нажав здесь. Наша служба поддержки сможет вам помочь.

Все еще не можете разобраться? Чем мы можем помочь?
Последнее обновление: 9 марта 2026 г.

Вовлекайте и удерживайте посетителей после того, как они покинули ваш веб-сайт

Увеличьте ценность каждого посещения веб-сайта с помощью push-уведомлений, которые трудно пропустить.

  • Бесплатный тариф навсегда
  • Простая настройка
  • Поддержка 5 звезд