FCM возвращает ошибку: NotRegistered после первого сообщения

Я выполнил инструкции на firebase.google.com, чтобы добавить FCM в свой проект.
Все было в порядке, у меня появилось сообщение" Инициализация FirebaseApp успешно "и свежий токен в моих журналах. Но он не работает... Только первое push-уведомление, которое я отправляю на токен, получаю успех. Во втором нажатии и отдыхе появляется ошибка" NotRegistered ".
Документация говорит

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

но приложение не было удалено, а клиентское приложение настроено на прием сообщений, потому что первое сообщение приходит на клиент

Ответ 1

Я боролся несколько часов, но я нашел проблему. Было очень трудно найти и объяснить. Я попробую:

Мой проект имеет зависимость от другой зависимости внутри: My project > Dependency > Sub-dependency

Субзависимость содержит файл AndroidManifest.xml с тегом <application>. Что-то вроде этого:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.my_sub_library">

    <application android:allowBackup="true">

    </application>

</manifest>

Из-за этого тега приложения моя зависимость должна была сделать это:

<manifest package="br.com.ilhasoft.support.databinding"
    xmlns:tools="http://schemas.android.com/tools">
    <application tools:node="replace"/>
</manifest>

Мое решение состояло в том, чтобы обновить субзависимость, удалив тег приложения и обновив зависимость, удалив действие замены.

Как-то, firebase игнорировал мой FirebaseMessagingService и отменял токен регистрации FCM.

Я предлагаю вам проверить свои зависимости, чтобы узнать, какой из них имеет тег приложения и обновить/заменить его. Это сработало для меня!