Выполните следующие действия, чтобы настроить клиент FCM на Flutter.
Настройка и требования, специфичные для платформы
Некоторые из необходимых шагов зависят от целевой платформы.
iOS+
Включить возможности приложения в Xcode
Прежде чем ваше приложение сможет начать получать сообщения, необходимо включить push-уведомления и фоновые режимы в вашем проекте Xcode.
- Откройте рабочее пространство проекта Xcode (
ios/Runner.xcworkspace
). - Включить push-уведомления .
- Включите режимы фонового выполнения « Фоновая выборка» и « Удаленные уведомления» .
Загрузите свой ключ аутентификации APNs
Перед использованием FCM загрузите свой сертификат APNs в Firebase. Если у вас ещё нет сертификата APNs, создайте его в Центре разработчиков Apple .
- Внутри вашего проекта в консоли Firebase выберите значок шестеренки, выберите Настройки проекта , а затем выберите вкладку Облачные сообщения .
- Нажмите кнопку «Загрузить сертификат» для вашего сертификата разработки, сертификата производства или обоих. Требуется как минимум один сертификат.
- Для каждого сертификата выберите файл .p12 и укажите пароль, если он есть. Убедитесь, что идентификатор пакета этого сертификата совпадает с идентификатором пакета вашего приложения. Нажмите «Сохранить» .
Метод свизлинга
Для использования плагина FCM Flutter на устройствах Apple не нужно отключать функцию «переключение методов». Переключение методов необходимо, и без него ключевые функции 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.
Сгенерировать новую пару ключей
Откройте вкладку Cloud Messaging на панели настроек консоли Firebase и прокрутите до раздела Веб-конфигурация .
На вкладке «Сертификаты Web Push» нажмите «Сгенерировать пару ключей» . В консоли отобразится уведомление о создании пары ключей, а также строка открытого ключа и дата добавления.
Импортировать существующую пару ключей
Если у вас есть пара ключей, которую вы уже используете в своём веб-приложении, вы можете импортировать её в FCM, чтобы получить доступ к существующим экземплярам веб-приложения через API FCM. Для импорта ключей вам необходим доступ на уровне владельца к проекту Firebase. Импортируйте существующие открытый и закрытый ключи в формате, безопасном для URL, закодированном в формате base64:
Откройте вкладку Cloud Messaging на панели настроек консоли Firebase и прокрутите до раздела Веб-конфигурация .
На вкладке «Сертификаты Web Push» найдите и выберите текст ссылки «импортировать существующую пару ключей».
В диалоговом окне «Импорт пары ключей» введите открытый и закрытый ключи в соответствующие поля и нажмите кнопку «Импорт» . В консоли отобразится строка открытого ключа и дата его добавления.
Дополнительную информацию о формате ключей и порядке их генерации см. в разделе Ключи сервера приложений .
Установить плагин FCM
Установите и инициализируйте плагины Firebase для Flutter, если вы еще этого не сделали.
Из корня вашего проекта Flutter выполните следующую команду для установки плагина:
flutter pub add firebase_messaging
После завершения перестройте свое приложение 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 отключите сбор Analytics и автоматическую инициализацию 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);
После установки это значение сохраняется при перезапуске приложения.
Следующие шаги
После настройки клиентского приложения вы готовы начать отправку сообщений с помощью редактора уведомлений . См. раздел Отправка тестового сообщения приложению, работающему в фоновом режиме .
Чтобы добавить в приложение другое, более продвинутое поведение, вам понадобится реализация сервера .
Затем в клиентском приложении: