2016-08-22 2 views
14

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

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

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

+0

Проверьте, вызван ли метод 'onTokenRefresh()'. Это означает, что токен обновлен, и вам нужно использовать новый токен. Вы используете консоль firebase для отправки уведомления? или вы используете свою собственную реализацию сервера. – GeorgeLBA

+0

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

+0

Nikita. Попробуйте распечатать маркер после отправки первого уведомления. Просто чтобы убедиться, что токен не меняется. Используйте 'FirebaseInstanceID.getToken()' и проверьте, совпадает ли токен после отправки уведомления. Если оно равно null, это потому, что по какой-то причине токен был удален. – GeorgeLBA

ответ

4

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

Мой проект имеет зависимость с другой зависимостью внутри, что: 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.

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

+0

+100 Вы экономите мой день. –

+0

Разве это не «подзависимость» в пакете npm? Если да, то как вы его обновили? – jbarradas

Смежные вопросы