Выполните следующие действия, чтобы настроить клиент FCM на Flutter.
Настройка и требования для конкретной платформы
Некоторые из необходимых шагов зависят от платформы, на которую вы ориентируетесь.
iOS+
Включить возможности приложения в Xcode
Прежде чем ваше приложение сможет начать получать сообщения, вы должны включить push-уведомления и фоновые режимы в своем проекте Xcode.
- Откройте рабочее пространство проекта Xcode (
ios/Runner.xcworkspace
). - Включите push-уведомления .
- Включите режимы Фоновая загрузка и Удаленные уведомления в фоновом режиме .
Загрузите свой ключ аутентификации APNs
Прежде чем использовать FCM, загрузите сертификат APNs в Firebase. Если у вас еще нет сертификата APN, создайте его в Apple Developer Member Center .
- Внутри вашего проекта в консоли Firebase щелкните значок шестеренки, выберите «Настройки проекта» , а затем выберите вкладку «Облачные сообщения» .
- Нажмите кнопку «Загрузить сертификат» для сертификата разработки, производственного сертификата или обоих. Требуется хотя бы один.
- Для каждого сертификата выберите файл .p12 и укажите пароль, если он есть. Убедитесь, что идентификатор пакета для этого сертификата совпадает с идентификатором пакета вашего приложения. Выберите Сохранить .
Метод swizzling
Чтобы использовать плагин FCM Flutter на устройствах Apple, вы не должны отключать переключение методов. Swizzling требуется, и без него ключевые функции Firebase, такие как обработка токенов FCM, не работают должным образом.
Андроид
Сервисы Google Play
Клиентам FCM требуются устройства под управлением Android 4.4 или более поздней версии, на которых также установлены службы Google Play, или эмулятор под управлением Android 4.4 с API Google. Обратите внимание, что вы не ограничены развертыванием приложений для Android через Google Play Store.
Приложения, использующие SDK Play Services, всегда должны проверять устройство на наличие совместимого 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. Импортируйте свой существующий открытый и закрытый ключ в безопасном кодированном виде base64 URL:
Откройте вкладку Cloud Messaging на панели настроек консоли Firebase и прокрутите до раздела веб-конфигурации .
На вкладке сертификатов Web Push найдите и выберите текст ссылки «импортировать существующую пару ключей».
В диалоговом окне «Импорт пары ключей» укажите открытый и закрытый ключи в соответствующих полях и нажмите «Импорт» . Консоль отображает строку открытого ключа и дату добавления.
Дополнительные сведения о формате ключей и способах их создания см. в разделе Ключи сервера приложений .
Установите плагин FCM.
Установите и инициализируйте плагины Firebase для Flutter, если вы еще этого не сделали.
В корне вашего проекта Flutter выполните следующую команду, чтобы установить плагин:
flutter pub add firebase_messaging
После завершения перестройте приложение Flutter:
flutter run
Доступ к регистрационному токену
Чтобы отправить сообщение на конкретное устройство, вам необходимо знать токен регистрации этого устройства. Поскольку для выполнения этого руководства вам потребуется ввести токен в поле консоли уведомлений, обязательно скопируйте токен или надежно сохраните его после извлечения.
Чтобы получить текущий токен регистрации для экземпляра приложения, вызовите getToken()
. Если разрешение на уведомление не было предоставлено, этот метод запросит у пользователя разрешения на уведомление. В противном случае он возвращает токен или отклоняет будущее из-за ошибки.
final fcmToken = await FirebaseMessaging.instance.getToken();
На веб-платформах передайте свой открытый ключ 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);
Это значение сохраняется при перезапуске приложения после его установки.
Следующие шаги
После настройки клиентского приложения вы готовы начать отправку нисходящих сообщений с помощью компоновщика уведомлений . См. раздел Отправка тестового сообщения фоновому приложению .
Чтобы добавить другое, более продвинутое поведение в ваше приложение, вам потребуется реализация сервера .
Затем в вашем клиенте приложения: