Служба сообщений Firebase не вызывается, но только один раз - PullRequest
0 голосов
/ 07 ноября 2018

Я использую службу сообщений Firebase, чтобы получать уведомления для моего приложения для Android, но эта служба не вызывается, но один раз! как справиться с этим, чтобы он вызывался всякий раз, когда я получал сообщение? вот мой код:

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);

    String user_id = "0";

    if (remoteMessage.getData().size() > 0) {
        Log.d(TAG, "Message data payload: " + remoteMessage.getData());
        user_id = remoteMessage.getData().get("from_user");

    }

    String click_action = remoteMessage.getNotification().getClickAction();
    Log.d(TAG, "Message data payload: " + click_action);

    //Calling method to generate notification
    sendNotification(remoteMessage.getNotification().getBody(), remoteMessage.getNotification().getTitle(), user_id, click_action);
}

private void sendNotification(String messageBody, String messageTitle, String user_id, String click_action) {
    Intent intent = new Intent(click_action);
    intent.putExtra("user_id", user_id);

    PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent,
            PendingIntent.FLAG_ONE_SHOT);


    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
    notificationBuilder.setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle(messageTitle)
            .setContentText(messageBody)
            .setAutoCancel(true)
            .setContentIntent(pendingIntent);

    NotificationManager notificationManager = (NotificationManager) 
getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0, notificationBuilder.build());
}

и есть моя полезная нагрузка:

  const payload = {
    notification: {
        title: "New Friend Request",
        body: `${userName} has sent you a Friend Request`,
        icon: "default",
        click_action: "com.example.alaa.lapitchatapp.Target_Notification"

    },
    data:{
        from_user: from_user_id
    }
};

Это услуга на Mainfest:

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

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

После долгого копания я понял, что

Уведомление доставляется в системный трей устройства, а полезная нагрузка данных доставляется в дополнениях намерения моего средства запуска.

Таким образом, я должен был справиться с дополнительными операциями, в которые отправлял уведомление. Ответ был в здесь

Следовательно, не было необходимости писать какой-либо код внутри onMessageReceived ().

Спасибо большое за вас. Очень ценю это

0 голосов
/ 08 ноября 2018

То, как вы отправляете уведомление, ваше onMessageReceived() не будет вызываться, когда ваше приложение находится в фоновом режиме или убито для решения этой проблемы удалить поле уведомления при отправке уведомления и отправлять только данные, подобные этой

{ data:{ from_user: from_user_id // you can add more field if you want } };

включите "priority": "high", поданную в вашем запросе на уведомление, чтобы вы получили уведомление как можно скорее, для более подробной информации проверьте этот ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...