Настройка клиентского приложения Firebase Cloud Messaging на Flutter

Выполните следующие шаги, чтобы настроить клиент FCM на Flutter.

Настройка и требования для конкретной платформы

Некоторые из обязательных шагов зависят от платформы, на которую вы ориентируетесь.

iOS+

Включить возможности приложения в Xcode

Прежде чем ваше приложение сможет начать получать сообщения, вы должны включить push-уведомления и фоновые режимы в своем проекте Xcode.

  1. Откройте рабочую область проекта Xcode ( ios/Runner.xcworkspace ).
  2. Включите push-уведомления .
  3. Включите режимы Фоновая выборка и Фоновое выполнение удаленных уведомлений .

Загрузите свой ключ аутентификации APNs

Прежде чем использовать FCM, загрузите свой сертификат APNs в Firebase. Если у вас еще нет сертификата APNs, создайте его в Центре участников Apple Developer .

  1. Внутри вашего проекта в консоли Firebase выберите значок шестеренки, выберите «Настройки проекта» , а затем выберите вкладку «Облачные сообщения» .
  2. Нажмите кнопку «Загрузить сертификат» для сертификата разработки, производственного сертификата или того и другого. Требуется хотя бы один.
  3. Для каждого сертификата выберите файл .p12 и укажите пароль, если таковой имеется. Убедитесь, что идентификатор пакета для этого сертификата соответствует идентификатору пакета вашего приложения. Выберите Сохранить .

Метод Swizzling

Чтобы использовать плагин FCM Flutter на устройствах Apple, вы не должны отключать функцию swizzling. Требуется Swizzling, и без него ключевые функции Firebase, такие как обработка токенов FCM, не будут работать должным образом.

Андроид

Сервисы Google Play

Клиентам FCM требуются устройства под управлением Android 4.4 или более поздней версии, на которых также установлены службы Google Play, или эмулятор под управлением Android 4.4 с API Google. Обратите внимание, что вы не ограничены развертыванием приложений Android через Google Play Store.

Приложения, использующие Play Services SDK, всегда должны проверять устройство на наличие совместимого APK-файла сервисов Google Play, прежде чем получать доступ к функциям сервисов Google Play. Рекомендуется делать это в двух местах: в методе onCreate() основного действия и в методе onResume() . Проверка onCreate() гарантирует, что приложение нельзя будет использовать без успешной проверки. Проверка в onResume() гарантирует, что если пользователь вернется к работающему приложению каким-либо другим способом, например, с помощью кнопки «Назад», проверка все равно будет выполнена.

Если на устройстве нет совместимой версии сервисов Google Play, ваше приложение может вызвать GoogleApiAvailability.makeGooglePlayServicesAvailable() чтобы разрешить пользователям загружать сервисы Google Play из Play Store.

Интернет

Настройка веб-учетных данных с помощью FCM

Веб-интерфейс FCM использует веб-учетные данные, называемые «Добровольная идентификация сервера приложений» или ключи «VAPID», для авторизации запросов на отправку поддерживаемых служб веб-push. Чтобы подписаться на push-уведомления вашего приложения, вам необходимо связать пару ключей с вашим проектом Firebase. Вы можете либо создать новую пару ключей, либо импортировать существующую пару ключей через консоль Firebase.

Создать новую пару ключей
  1. Откройте вкладку «Облачные сообщения» на панели «Настройки консоли Firebase» и прокрутите до раздела «Веб-конфигурация» .

  2. На вкладке Сертификаты Web Push нажмите « Создать пару ключей» . На консоли отображается уведомление о том, что пара ключей была создана, а также строка открытого ключа и дата добавления.

Импортировать существующую пару ключей

Если у вас есть существующая пара ключей, которую вы уже используете со своим веб-приложением, вы можете импортировать ее в FCM, чтобы иметь доступ к существующим экземплярам веб-приложения через API-интерфейсы FCM. Чтобы импортировать ключи, у вас должен быть доступ на уровне владельца к проекту Firebase. Импортируйте существующий открытый и закрытый ключ в безопасной закодированной форме URL-адреса Base64:

  1. Откройте вкладку «Облачные сообщения» на панели «Настройки консоли Firebase» и прокрутите до раздела «Веб-конфигурация» .

  2. На вкладке «Сертификаты Web Push» найдите и выберите текст ссылки «Импортировать существующую пару ключей».

  3. В диалоговом окне «Импорт пары ключей» укажите открытый и закрытый ключи в соответствующих полях и нажмите «Импортировать» . Консоль отображает строку открытого ключа и дату добавления.

Дополнительные сведения о формате ключей и способах их создания см. в разделе Ключи сервера приложений .

Установите плагин FCM.

  1. Установите и инициализируйте плагины Firebase для Flutter, если вы еще этого не сделали.

  2. Из корня вашего проекта Flutter выполните следующую команду, чтобы установить плагин:

    flutter pub add firebase_messaging
    
  3. После завершения перестройте приложение Flutter:

    flutter run
    

Доступ к регистрационному токену

Чтобы отправить сообщение на определенное устройство, вам необходимо знать токен регистрации этого устройства. Поскольку для завершения этого руководства вам потребуется ввести токен в поле консоли уведомлений, обязательно скопируйте токен или надежно сохраните его после получения.

Чтобы получить текущий токен регистрации для экземпляра приложения, вызовите getToken() . Если разрешение на уведомление не было предоставлено, этот метод запросит у пользователя разрешения на уведомление. В противном случае он возвращает токен или отклоняет будущее из-за ошибки.

// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);

// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
 // APNS token is available, make FCM plugin API requests...
}

На веб-платформах передайте свой открытый ключ VAPID в getToken() :

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

Чтобы получать уведомления при каждом обновлении токена, подпишитесь на поток onTokenRefresh :

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

Запретить автоматическую инициализацию

Когда создается регистрационный токен FCM, библиотека загружает идентификатор и данные конфигурации в Firebase. Если вы предпочитаете запретить автогенерацию токенов, отключите автоинициализацию во время сборки.

iOS

В iOS добавьте значение метаданных в свой Info.plist :

FirebaseMessagingAutoInitEnabled = NO

Андроид

На Android отключите сбор аналитики и автоматическую инициализацию FCM (вы должны отключить оба), добавив эти значения метаданных в свой AndroidManifest.xml :

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

Повторно включите автоинициализацию FCM во время выполнения.

Чтобы включить автоматическую инициализацию для конкретного экземпляра приложения, вызовите setAutoInitEnabled() :

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Это значение сохраняется при перезапуске приложения после установки.

Следующие шаги

После настройки клиентского приложения вы готовы начать отправку нисходящих сообщений с помощью композитора уведомлений . См. Отправка тестового сообщения в фоновое приложение .

Чтобы добавить в приложение другое, более продвинутое поведение, вам понадобится серверная реализация .

Затем в клиенте вашего приложения: