Не создаётся токен FCM

Push-уведомления доставляются по токену Firebase Cloud Messaging. Токен создаётся, когда пользователь входит в приложение на настоящем устройстве, и хранится в подколлекции fcm_token его документа. Нет подколлекции — уведомления до устройства не дойдут.

Почему токена может не быть:

  • сбой при создании токена;
  • незавершённый вход;
  • нехватка прав на запись;
  • некорректные данные, переданные в облачную функцию.

Проверьте, есть ли токен

  1. Откройте консоль Firebase.
  2. Перейдите в Firestore Database.
  3. Найдите документ пользователя.
  4. Посмотрите, есть ли подколлекция fcm_token.

Есть — уведомления этому пользователю доставятся.

Подколлекция fcm_token в документе пользователя

Что делать, если токена нет

  1. Посмотрите логи облачной функции

    Токены создаёт функция addFcmToken. Откройте консоль Firebase, перейдите в Functions, найдите её и посмотрите Logs.

    Логи облачной функции addFcmToken

  2. Разберитесь с правами

    Функции нужно право записи в Firestore.

    • Правила безопасности должны разрешать запись в коллекцию users и её подколлекции.
    • Сервисному аккаунту firebase@flutterflow.io нужны роли Editor, Cloud Functions Admin и Service Account User.

    Роли назначаются в Project Settings > Users & Permissions консоли Firebase — подробности в разделе про подключение существующего проекта Firebase.

  3. Проверьте данные, которые уходят в функцию

    Код 400 означает, что функция получила некорректные данные.

    • Убедитесь, что идентификатор пользователя действительно получен до вызова функции.
    • Он не должен быть пустым или null.
    • Добавьте проверку перед вызовом и логирование в поток аутентификации.

    Это особенно важно при собственной аутентификации: со встроенной такое встречается редко.

  4. Проверьте сторону FCM

    Токен может не создаться и по внешним причинам: сбой на серверах FCM, некорректный запрос от облачной функции, нехватка прав доступа к API. Если проблема повторяется, обращайтесь в поддержку Firebase.

перевод официальной документации FlutterFlow

обновлено

⌕ ESC