Перейти к основному содержимому

Push-уведомления

Push-уведомления позволяют отправлять пользователям срочные сообщения в реальном времени даже в том случае, если приложение не активно. За кулисами эти уведомления используют Firebase Cloud Messaging (FCM), который маршрутизирует сообщения на устройства Android и iOS. При правильной интеграции вы можете использовать push-уведомления для:

  • Отправки оповещений о новом контенте (например, сообщениях в чате или обновлениях).
  • Возобновления взаимодействия с пользователями с помощью своевременных напоминаний или предложений.
  • Предоставления релевантной информации (например, статуса заказа или оповещений, основанных на местоположении).

Push-уведомления включают несколько ключевых компонентов, которые взаимодействуют для доставки сообщений на устройства пользователей. В FlutterFlow вы можете формировать и отправлять полезную нагрузку уведомлений — такую как заголовок, тело сообщения и дополнительные данные, например изображение, — в службу push-уведомлений Firebase Cloud Messaging (FCM). FCM принимает уведомления и маршрутизирует их на соответствующие устройства.

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

Настройка push-уведомлений

Вы можете добавлять и отправлять push-уведомления вручную или запускать их на основе действий пользователя в приложении. Вот подробные шаги:

Общие предварительные требования

Перед началом убедитесь, что вы:

  • Выполнили все шаги из раздела Настройка Firebase. Обратите внимание, что при настройке обязательно тщательно следуйте шагам 5 и 8 из раздела Разрешение доступа FlutterFlow к вашему проекту, чтобы правильно добавить роль Cloud Functions Admin пользователю firebase@flutterflow.io.
  • Обновили проект Firebase до плана Blaze, чтобы активировать Cloud Functions, которые необходимы специально для настройки push-уведомлений в FlutterFlow, например для получения токена FCM и запуска отправки уведомлений из FlutterFlow.
Предварительные требования для iOS

Чтобы отправлять push-уведомления на устройства iOS, вам необходимо:

Включение push-уведомлений

warning

Обратите внимание, push-уведомления не будут работать в следующих сценариях:

  • Push-уведомления не работают в симуляторе iOS. Для тестирования потребуется настоящее устройство.
  • Push-уведомления не доставляются пользователям, вышедшим из приложения. Чтобы отправлять push-уведомления пользователям, не вошедшим в систему, рассмотрите возможность реализации анонимного входа в Firebase в вашем приложении.
  • Push-уведомления не работают, если приложение открыто на устройстве.

Чтобы включить push-уведомления:

  1. Перейдите в раздел Settings and Integrations > Push Notifications и включите Push Notifications.
  2. Теперь нажмите кнопку Deploy. Это создаст и развернет Cloud Functions в вашем проекте Firebase, необходимые для работы push-уведомлений.
  3. Опционально вы можете включить Allow Scheduling, чтобы отправлять push-уведомления в более позднее время. После включения вы сможете выбрать Scheduler Granularity, которая определяет точность отправки уведомлений. Вы можете выбрать гранулярность в зависимости от того, насколько критичны уведомления по времени; например:
    • Если уведомление нужно отправить в точное время (например, в 11:37 утра), выберите "1 minute".
    • Если небольшая задержка допустима, вы можете выбрать "15 minutes" или "1 hour", что означает отправку уведомления в пределах этого интервала.
    • Высокая точность (например, интервалы в 1 минуту) требует больше вычислительных ресурсов, что может немного увеличить затраты (до $0.50 в месяц).
    • Низкая точность (например, интервалы в 1 час) более экономична, поскольку снижает частоту выполнения функций (около $0.05 в месяц).
Обновление до плана Blaze

Если вы сталкиваетесь с ошибками развертывания, которые предлагают обратиться в поддержку, это может быть связано с тем, что вы недавно обновили проект Firebase до плана Blaze. После обновления Firebase может потребоваться около 10–15 минут для распространения изменений. Если вы получили эту ошибку, подождите 10–15 минут и попробуйте развернуть снова.

img.png

к сведению

По умолчанию включена опция Automatically Prompt Users for Permission, что означает, что приложение автоматически запросит у пользователей разрешение на получение push-уведомлений при запуске. Однако это может нарушить поток входа пользователя в систему.

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

Настройка приложения для iOS

Чтобы получать push-уведомления в приложении для iOS, выполните следующие дополнительные шаги.

Шаг 1: Создание ключа

Apple требует, чтобы разработчики создавали ключ для push-уведомлений в консоли Apple Developer, чтобы верифицировать отправителя push-уведомлений.

Чтобы создать ключ APNs в аккаунте Apple Developer, перейдите в раздел Keys и нажмите кнопку (+). Введите Key Name, выберите Apple Push Notifications service (APNs) и нажмите Configure. Выберите подходящую Environment (Sandbox, Production или обе) и установите любые необходимые Key Restriction. После настройки нажмите Save, затем Continue и Register. Наконец, скачайте и надежно сохраните файл ключа, поскольку он потребуется для интеграции с вашим проектом Firebase.

подсказка

После тестирования push-уведомлений в среде разработки рекомендуется создать новый ключ специально для продакшена и загрузить его в ваш проект Firebase.

Шаг 2: Добавление ключа APNs в проект Firebase

Чтобы добавить ключ APNs в ваш проект Firebase, перейдите в панель управления Firebase Project Dashboard > Project Settings и выберите вкладку Cloud Messaging. Прокрутите вниз до раздела Apple app configuration и найдите APNs Authentication Key.

Нажмите Upload и выберите файл ключа аутентификации APNs (который вы скачали на предыдущем шаге). Введите Key ID, который можно найти в записи ключа на странице Keys. Наконец, введите Team ID, доступный в Apple Developer Account в разделе Membership details.

Отправка push-уведомлений

Чтобы отправить push-уведомления, перейдите в FlutterFlow > Settings and Integrations > Push Notifications, затем откройте раздел Manually Trigger Notifications. Введите детали уведомления и нажмите Send Notification. Появится всплывающее окно подтверждения — введите "Send Notification" и снова нажмите Send Notification, чтобы доставить сообщение.

Чтобы отправить push-уведомления, вам нужно указать следующие детали:

  • Notification Title: Введите заголовок уведомления.

  • Notification Text: Укажите содержимое сообщения для уведомления.

  • Notification Image (Optional): Загрузите изображение, которое будет отображаться вместе с уведомлением.

  • Target Audience (Optional): Выберите, отправлять ли уведомления пользователям iOS, Android или All независимо от типа устройства.

  • Deliver With Sound (Optional): Включите эту опцию, если хотите, чтобы уведомление воспроизводило звук.

  • Batch Notifications (Optional): Включите эту настройку, если хотите отправлять уведомления пакетами. Включайте это только при наличии более 10K пользователей.

  • Scheduled Time (Optional): Выберите конкретную дату и время для отправки уведомления. Эта опция доступна только при включенной опции Allow Scheduling, и выбранная дата и время соответствуют вашему часовому поясу.

  • User References (Optional): Отправьте push-уведомления конкретному пользователю или нескольким пользователям. Введите ссылку на документ пользователя (из коллекции 'users' в Firestore) в поле User References в этом формате: /users/user_id.

    подсказка

    Вы можете легко скопировать и вставить ссылку на документ прямо из Firestore Data Manager в FlutterFlow.

    pn-with-data-2

  • Initial Page (Optional): Выберите страницу, которую должно открыть приложение при нажатии пользователем на уведомление.

Push-уведомления с данными

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

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

warning

В настоящее время мы поддерживаем отправку только ссылок на документы Firestore в качестве данных.

Чтобы отправить push-уведомление с данными, вам нужна страница, которая принимает параметр типа DocumentReference. Сначала создайте уведомление и установите Initial Page на страницу, принимающую этот параметр. В разделе Parameter Data скопируйте и вставьте ссылку на документ из Firestore. Наконец, нажмите Send Notification, чтобы доставить push-уведомление с указанными данными.

подсказка

На странице, которая получает DocumentReference, вы можете получить дополнительные детали элемента с помощью Backend Query.

pn-with-data.avif

Действие Trigger Push Notification [Action]

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

Вы можете отправить push-уведомление при таком событии, добавив действие Trigger Push Notification.

В этом действии вы можете определить, кто должен получить push-уведомление, установив Audience в Single Recipient или Multiple Recipients.

  • Single Recipient: Отправляет уведомление одному конкретному пользователю. Например, оповещение создателя группы о присоединении нового участника.
  • Multiple Recipients: Отправляет уведомление нескольким пользователям. Например, оповещение всех участников группы о присоединении кого-то.
подсказка
  • Вы должны предоставить ссылку на документ пользователя, который должен получить уведомление.
  • Вы можете установить другие детали уведомления в соответствии с вашими требованиями.

trigger push notifications

Тестирование Cloud Function для push-уведомлений

Вы также можете протестировать Cloud Function для push-уведомлений прямо из консоли Google Cloud, без необходимости запуска из FlutterFlow. Это особенно полезно для отладки. Для пошаговых инструкций, включая пример и структуру запроса, обратитесь к разделу Тестирование Cloud Functions в консоли Google Cloud.

Действие Update App Badge Count (только для iOS) [Action]

Действие Update App Badge Count позволяет вручную отображать числовой бейдж на иконке вашего приложения для iOS. Этот бейдж обычно указывает на ожидающие задачи или обновления, такие как непрочитанные сообщения, уведомления или напоминания.

Поддержка платформ

В Android бейджи автоматически появляются на иконках приложений вместе с push-уведомлениями. Мы хотели бы добавить эту функцию для iOS. Однако мы заблокированы этой проблемой. Поэтому важно отметить, что это действие не устанавливает счетчик бейджа автоматически при получении push-уведомления в iOS — оно должно запускаться вручную во время работы приложения.

badge-count

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

Для реализации просто введите число Badge Count, которое приложение должно отображать на иконке домашнего экрана.

set-app-badge-count-ios

Часто задаваемые вопросы

Push-уведомления не работают; Получаю ошибку cloud function: PERMISSION_DENIED: Missing or insufficient permissions

Если вы сталкиваетесь с ошибкой push-уведомлений, конкретно с сбоем cloud function из-за проблем с разрешениями, это может быть связано с настройками организации Google Cloud. Организации могут отключать автоматические гранты IAM для учетных записей служб по умолчанию, что приводит к этой ошибке.

Чтобы исправить эту проблему, вручную предоставьте роль Editor учетной записи службы по умолчанию, используемой вашим проектом. Вы можете сделать это, посетив страницу IAM в GCP и назначив роль Editor следующей учетной записи службы:

  • Для App Engine (Gen 1): {firebase-project-id}@appspot.gserviceaccount.com
  • Для Compute Engine (Gen 2): {project-number}-compute@developer.gserviceaccount.com

pn-faq-img-1

Также убедитесь, что эти principals (электронные адреса) и их роли присутствуют на вкладках разрешений в App Engine Default service account, Default compute service account и firebase-adminsdk. Вы можете сделать это, посетив страницу GCP Service Accounts, кликнув на каждый email учетной записи службы и предоставив доступ этим principals на вкладке permissions.

Ниже приведено примерное изображение для App Engine Default service account. pn-faq-img-2