FirebaseMessagingService никогда не вызывается при установке приложения - PullRequest
0 голосов
/ 09 июля 2019

Я только что добавил 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'
   ...
 }

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Обнаружил проблему. Проблема заключалась в том, что мой проект использовал устаревшую FirebaseInstanceIdService. Удаление их из моего файла манифеста сработало

<receiver
        android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"
        tools:node="remove" />
    <receiver
        android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
        tools:node="remove" />

    <service
        android:name="com.google.firebase.iid.FirebaseInstanceIdService"
        tools:node="remove" />
0 голосов
/ 09 июля 2019

Можете ли вы попробовать с этими версиями.Потому что в моем приложении все работает нормально.

implementation 'com.google.firebase:firebase-core:16.0.8'
implementation 'com.google.firebase:firebase-messaging:17.6.0'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...