Среда
- Физическое устройство (Samsung)
- Установлен Google Play Store
- Обновленная версия сервисов Google Play
- Спецификация Firebase 34.8.0
- Android 15
- com.google.firebase:firebase-messaging
- Имя пакета соответствует google-services.json
- Firebase инициализировано правильно (FirebaseApp.getApps().size() == 1)
- Приложению предоставлено разрешение POST_NOTIFICATIONS
Что я сделал
- Добавлен FirebaseMessagingService
- Выполнено onNewToken()
- Вызывается FirebaseMessaging.getInstance().getToken() из LoginActivity
- Приложение установлено на реальном устройстве (не эмуляторе)
- Приложение переустановлено несколько раз
- Подтвержденная декларация службы манифеста
- Подтвержденная конфигурация проекта Firebase
- Приложение работает нормально
- Firebase инициализируется (без ошибок)
- Сеть работает
- Другие приложения на устройстве явно получают токены FCM (видны в logcat под SmpLog)
- FirebaseMessagingService.onNewToken() никогда не вызывается
- FirebaseMessaging.getInstance().getToken() никогда не возвращает токен
- Нет журнала успехов, нет журнала ошибок
Проект Gradle:
id 'com.google.gms.google-services' version '4.4.4' apply false
gradle:app
plugin{id 'com.google.gms.google-services'}
implementation platform('com.google.firebase:firebase-bom:34.8.0')
implementation 'com.google.firebase:firebase-messaging'
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "FCM";
@Override
public void onNewToken(@NonNull String token) {
super.onNewToken(token);
Log.d("FCM", "NEW TOKEN = " + token);
SessionManager session = new SessionManager(getApplicationContext());
session.saveFcmToken(token);
}
В моем LoginActivity onCreate() я добавил:
FirebaseMessaging.getInstance().getToken()
.addOnCompleteListener(task -> {
if (!task.isSuccessful()) {
Log.e("FCM", "getToken FAILED", task.getException());
return;
}
Log.d("FCM", "FCM TOKEN RECEIVED: " + task.getResult());
});
Подробнее здесь: https://stackoverflow.com/questions/798 ... p-gettoken
Мобильная версия