Я только что добавил FCM в свое существующее приложение, и похоже, что это не FirebaseMessagingService вообще не вызывается.
Я создал POC для того же, и он работал нормально. При установке приложения вызывался обратный вызов onNewToken и вызывался onMessageReceived, когда приложение находилось на переднем плане.
Но в моем существующем проекте это, похоже, не работает. Обратите внимание, что мой проект уже поддерживает удаленную конфигурацию Firebase
Файл google-services.json уже загружен и помещен в каталог приложения.
AndroidManifest.xml
<service
android:name=".MyFirebaseMessaging"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
MyFirebaseMessaging.java
public class MyFirebaseMessaging extends FirebaseMessagingService {
private final String TAG = MyFirebaseMessaging.class.getSimpleName();
public final static String channel1ID = "channel1ID";
public final static String channel1Name = "channel1Name";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.i(TAG, "<<notification>> onMessageReceived");
if (remoteMessage == null) {
return;
}
if (remoteMessage.getData() != null && remoteMessage.getData().size() > 0) {
Map<String, String> data = remoteMessage.getData();
String body = data.get("body");
String title = data.get("title");
generateNotification(title, body);
} else if(remoteMessage.getNotification() != null) {
RemoteMessage.Notification notification = remoteMessage.getNotification();
String title = notification.getTitle();
String body = notification.getBody();
generateNotification(title, body);
}
}
private void generateNotification(String title, String body) {
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel1 = new NotificationChannel(channel1ID, channel1Name,
NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(channel1);
}
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_large_icon);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, channel1ID)
.setSmallIcon(R.drawable.my_icon)
.setContentTitle(title)
.setContentText(body)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setLargeIcon(bitmap)
.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(bitmap).bigLargeIcon(null));
notificationManager.notify(0, builder.build());
}
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.i(TAG, "<<notification>> onNewToken: " + s);
}
}
build.gradle - приложение
dependencies {
...
implementation 'com.google.firebase:firebase-core:17.0.0'
implementation 'com.google.firebase:firebase-messaging:19.0.1'
...
}
apply plugin: 'com.google.gms.google-services'
build.gradle - проект
dependencies {
...
classpath 'com.google.gms:google-services:4.2.0'
...
}