Чтобы настроить клиент FCM на Flutter, выполните следующие действия.
Настройка и требования, зависящие от платформы
Некоторые из необходимых шагов зависят от целевой платформы.
iOS+
Включить возможности приложения в Xcode
Прежде чем ваше приложение сможет начать получать сообщения, необходимо включить push-уведомления и фоновые режимы в вашем проекте Xcode.
- Откройте рабочее пространство проекта Xcode (
ios/Runner.xcworkspace
). - Включить push-уведомления .
- Включите режимы фонового выполнения « Фоновая загрузка» и « Удаленные уведомления» .
Загрузите свой ключ аутентификации APNs
Перед использованием FCM загрузите сертификат APNs в Firebase. Если у вас еще нет сертификата APNs, создайте его в Apple Developer Member Center .
- Внутри вашего проекта в консоли Firebase выберите значок шестеренки, выберите Параметры проекта , а затем выберите вкладку Облачные сообщения .
- Нажмите кнопку Загрузить сертификат для вашего сертификата разработки, вашего сертификата производства или обоих. Требуется как минимум один.
- Для каждого сертификата выберите файл .p12 и укажите пароль, если он есть. Убедитесь, что идентификатор пакета для этого сертификата совпадает с идентификатором пакета вашего приложения. Выберите Save .
Метод свизлинга
Для использования плагина 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 использует веб-учетные данные, называемые «Voluntary Application Server Identification» или ключами «VAPID», для авторизации отправки запросов на поддерживаемые веб-службы push-уведомлений. Чтобы подписать приложение на push-уведомления, вам необходимо связать пару ключей с вашим проектом Firebase. Вы можете либо сгенерировать новую пару ключей, либо импортировать существующую пару ключей через консоль Firebase.
Сгенерировать новую пару ключей
Откройте вкладку «Cloud Messaging» на панели настроек консоли Firebase и прокрутите до раздела «Web-конфигурация» .
На вкладке Web Push certificates нажмите Generate Key Pair . Консоль отобразит уведомление о том, что пара ключей была сгенерирована, а также отобразит строку открытого ключа и дату добавления.
Импортировать существующую пару ключей
Если у вас есть существующая пара ключей, которую вы уже используете с вашим веб-приложением, вы можете импортировать ее в FCM, чтобы иметь доступ к существующим экземплярам веб-приложения через API FCM. Для импорта ключей у вас должен быть доступ на уровне владельца к проекту Firebase. Импортируйте ваш существующий открытый и закрытый ключ в безопасной для URL-адресов форме base64:
Откройте вкладку «Cloud Messaging» на панели настроек консоли Firebase и прокрутите до раздела «Web-конфигурация» .
На вкладке «Сертификаты 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);
После установки это значение сохраняется при перезапуске приложения.
Следующие шаги
После настройки клиентского приложения вы готовы начать отправлять нисходящие сообщения с помощью Notifications composer . См. Отправка тестового сообщения в фоновое приложение .
Чтобы добавить в приложение другое, более продвинутое поведение, вам понадобится реализация сервера .
Затем в клиентском приложении: