Intereting Posts
Libgdx не корректно отображает шрифты после возобновления Как получить случайный цвет материала? Как получить уведомление о завершении перехода между мероприятиями? Android – определение цветов путем ссылки на другие определенные цвета Встраивание объявлений в Android-приложение? Как преобразовать строку в заголовок в android? Не удалось сгенерировать предпочтения, класс java / lang / AutoCloseable не найден в C: \ Program Files (x86) \ Android \ android-sdk \ platform \ android-19 \ android.jar Повернуть рамку, содержащую динамические кнопки Android studio Ошибка «Неподдерживаемые модули обнаружены: компиляция не поддерживается для следующих модулей» Android обнаруживает событие блокировки телефона Проблема с Cover CoverDroid на 4.0.3 Samsung Galaxy S2 Facebook Android Intent Что такое инструмент «dumpsys» для Android ADB и каковы его преимущества? Изменить стиль элементов Android в ActionBar WebSocket поддерживается в Android Stock Browser или нет?

Firebase Cloud Messaging не вызывает FirebaseInstanceId

Я только что обновил GCM до FCM в соответствии с этим руководством здесь . Сайт говорит, что моя служба, которая расширяет FirebaseInstanceIdService, будет вызываться, как только будет создан токен. По какой-то причине моя служба никогда не onTokenRefresh а onTokenRefresh никогда не выполняется.

Мои услуги регистрируются следующим образом: согласно руководству:

 <service android:name=".fcm.FcmService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service> <service android:name=".fcm.InstanceIdService"> <intent-filter> <action android:name="com.google.firebase.INSTANCEID_EVENT"/> </intent-filter> </service> 

Мой сервис:

 public class InstanceIdService extends FirebaseInstanceIdService { private static final String TAG = "InstanceIdService"; @Override public void onTokenRefresh() { String token = FirebaseInstanceId.getInstance().getToken(); Log.e(TAG, "Got token: " + token); } } 

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

Нужно ли мне начинать эту службу где-то в моей деятельности? Я делаю что-то неправильно? Может ли кто-нибудь вести меня в правильном направлении?

EDIT: использование Log.e("TOKEN", "Token: " + FirebaseInstanceId.getInstance().getToken()); Правильно печатает мой токен, так что это означает, что он был сгенерирован успешно. Услуга по-прежнему не называется …

EDIT 2: изменение INSTANCEID_EVENT на INSTANCE_ID_EVENT устранило проблему, хотя мне пришлось переустановить приложение. Поскольку я уже выпустил бета-версию, содержащую новый FCM, мои бета-тестеры не смогут подписаться на темы, чтобы выявлять входящие сообщения. Итак, как мне это решить?

Solutions Collecting From Web of "Firebase Cloud Messaging не вызывает FirebaseInstanceId"

Спасибо Endanke за то, что вы поняли это со мной. Похоже, что документация Firebase несовместима. На одной странице говорится, что ваш фильтр намерений в вашем файле манифеста должен быть INSTANCE_ID_EVENT , а другой – INSTANCEID_EVENT .

Вы должны использовать INSTANCE_ID_EVENT , и после внесения изменений вам нужно будет полностью удалить и переустановить приложение для внесения изменений.

FCM следует использовать в качестве замены GCM. В вашем случае похоже, что у вас есть услуги как для FCM, так и для GCM в вашем манифесте. Попробуйте удалить gcm.GcmService и используйте только тот, который расширяет FirebaseInstanceId.

У меня была такая же проблема, и, удалив и переустановив приложение на устройстве onTokenRefresh() один раз. Поэтому я предполагаю, что это изменилось с GCM, где его часто вызывали, чтобы просто вызвать один раз, когда на самом деле нет токена.

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

От: https://firebase.google.com/docs/android/setup#prerequisites

Примечание. Если у вас несколько вариантов сборки с разными именами пакетов, каждое приложение должно быть добавлено в ваш проект в консоли Firebase.

Просто измените INSTANCE_ID_EVENT на INSTANCEID_EVENT. Это сработало для меня

Также проверьте дату своего телефона! У меня когда-то была разница в 5-7 дней! Фиксация дня и повторная установка приложения исправили это!

Убедитесь, что ваш файл Firebase «MyFirebaseInstanceIDService.java» находится непосредственно под деревом имен пакетов «com.company»

Не помещайте их в отдельный подпакет, например «com.company.services». Это связано с тем, что ваш google-services.json будет искать файлы непосредственно в каталоге «com.company».

Добавьте в тег манифеста приложения ниже метатег (если есть)

 <service android:name=".MyFirebaseInstanceIDService"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> </intent-filter> </service> 

Вы получите свой TOKEN в общедоступном void onTokenRefresh () методе

PS: Загрузите и замените последнюю версию google-services.json из консоли проекта.