Intereting Posts
Использование FragmentTransaction с помощью DialogFragment Android: Sugar ORM Нет такого исключения таблицы Перемещение фокуса с одного текстового поля Редактировать на другое RxJava: ошибка при попытке распространения ошибки на Observer.onError Переход общего элемента: активность в фрагмент, вложенный в другую активность Android.mk – создать весь исходный файл в каталоге Как установить переменную GNUMAKE для работы ndk-build Как подключиться к локальному хосту от VS Android Emulator ExpandableListAdapter onClickListener, вызов notifyDataSetChanged () Есть ли стандартный способ добавления разделителей между элементами панели действий в Android 3.0? Метод фабрики фрагментов Android и перегрузка конструктора Android, что не так с openFileOutput? Обновить текст уведомления, а не целое уведомление Курсив TextView с wrap_contents, кажется, закрепил текст на правом краю Я не могу установить / запустить Android Studio для Windows 7 64 бит

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 из консоли проекта.