Firebase 云消息传递在后台无法正常工作



我正在尝试向我的应用程序发送推送通知。但是,如果该应用程序在后台,则不会收到通知。我正在使用 Firebase 云消息服务。

下面是 onMessageReceived 方法:

@Override
public void onMessageReceived(@NonNull final RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Map<String, String> data = remoteMessage.getData();
String body = data.get("body");
String title = data.get("title");
String id = data.get("android_channel_id");
int priority = remoteMessage.getPriority();

final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(getApplicationContext());
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new NotificationCompat.Builder(getApplicationContext(), id)
.setSmallIcon(R.drawable.notification)
.setContentTitle(title)
.setContentText(body)
.setPriority(priority)
.setContentIntent(pendingIntent)
.setStyle(new androidx.media.app.NotificationCompat.MediaStyle())
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.aajevan_logo))
.setAutoCancel(true)
.build();
notificationManager.notify(200, notification);

@Override
public void onNewToken(@NonNull String s) {
FirebaseInstanceId.getInstance().getInstanceId()
.addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
@Override
public void onComplete(@NonNull Task<InstanceIdResult> task) {
if (!task.isSuccessful()) {
Log.d("*******FAILED", task.getException().getMessage());
return;
}
String token = task.getResult().getToken();
Log.d("/**MY TOKEN", token);
}
});
}

当应用程序处于前台或后台时,没有问题。但是如果我杀死我的应用程序,它就不起作用。如果我打开应用程序一次,那么我就会立即收到所有通知。

首先,有两种类型的消息(通知和数据(。Firebase 控制台会发送通知消息。当您发送此类消息时,Firebase 会在您的应用程序关闭或后台(未终止(时自动处理它们。有关通知消息和数据消息的详细信息,请查看此项。

此外,已终止的应用程序是用户强制停止它或由于错误或操作系统决定终止它(电池管理(而崩溃的应用程序。已终止的应用程序不会收到任何类型的通知。

相关内容

  • 没有找到相关文章

最新更新