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

Устранение неисправностей генерации токена FCM

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

Понимание проблемы

Push-уведомления требуют действительного токена Firebase Cloud Messaging (FCM), который генерируется при входе пользователя в систему или регистрации на физическом устройстве. Этот токен обычно хранится в подколлекции fcm_token документа пользователя в Firestore. Если эта подколлекция отсутствует, устройство не может получать push-уведомления.

Возможные причины отсутствия токенов включают:

  • Сбои при генерации токена FCM.
  • Неполные потоки аутентификации.
  • Проблемы с разрешениями, препятствующие созданию токена.
  • Недействительные входные данные, переданные в Cloud Functions.

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

  1. Проверьте Firestore на наличие подколлекции fcm_token

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

    Если она присутствует, пользователь может получать push-уведомления.

Устранение неисправностей отсутствующей генерации токена FCM

  1. Проверьте выполнение Cloud Function

    Cloud Function addFcmToken отвечает за генерацию и хранение токенов FCM. Если генерация токена не удалась, просмотрите её логи:

    1. Откройте Firebase Console.
    2. Перейдите в Functions.
    3. Найдите функцию addFcmToken.
    4. Откройте Logs, чтобы просмотреть ошибки или предупреждения.

  2. Устранение ошибок разрешений

    Для разрешения Cloud Function записи токенов FCM в Firestore требуются соответствующие разрешения.

    Проверьте правила безопасности Firebase

    • Убедитесь, что правила безопасности Firebase разрешают запись в коллекцию users и её подколлекции.

    Проверьте разрешения учетной записи службы FlutterFlow

    Учетная запись службы firebase@flutterflow.io должна иметь следующие роли:

    • Editor
    • Cloud Functions Admin
    • Service Account User

    Как назначить роли:

    1. Откройте Firebase Console.
    2. Перейдите в Project Settings > Users & Permissions.
    3. Найдите учетную запись службы firebase@flutterflow.io.
    4. Назначьте недостающие роли.

    См. это руководство для получения полных инструкций.

  3. Проверьте входные данные, переданные в Cloud Function

    Если Cloud Function завершается сбоем с кодом состояния 400, она может получать недействительные входные данные.

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

    Это особенно важно, если вы используете пользовательскую логику аутентификации. Если вы используете встроенную аутентификацию FlutterFlow, эта проблема маловероятна.

  4. Проверьте ошибки сервера FCM

    Дополнительные причины, по которым может не удаться генерация токена FCM, включают:

    • Простой сервера FCM или временные сбои.
    • Некорректные или поврежденные запросы, отправляемые из Cloud Function на сервер FCM.
    • Недостаточные разрешения доступа к API.
    • Недействительные или отсутствующие входные данные (например, токен устройства).

    Если проблемы с сервером сохраняются, рассмотрите возможность обращения в службу поддержки Firebase за помощью.

Следуя этому полному процессу устранения неисправностей, вы можете обеспечить успешное получение push-уведомлений вашими пользователями.