Android 应用程序在前台使用Firebase时不显示通知
我正在使用来自服务器的firebase推送通知,但当应用程序位于前台时,通知未显示,请帮助我解决问题。参考完整参考 如果您打算根据收到的FCM生成自己的通知,请执行以下操作Android 应用程序在前台使用Firebase时不显示通知,android,Android,我正在使用来自服务器的firebase推送通知,但当应用程序位于前台时,通知未显示,请帮助我解决问题。参考完整参考 如果您打算根据收到的FCM生成自己的通知,请执行以下操作 public class MyFirebaseMessagingService extends FirebaseMessagingService { @Override public void onMessageReceived(RemoteMessage remoteMessage) { if
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
}
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
// Also if you intend on generating your own notifications as a result of a received FCM
// message, here is where that should be initiated. See sendNotification method below.
sendNotification(remoteMessage.getNotification().getBody());// or pass value fetched from data payload
...
}
然后像这样的delcare通知生成器
private void sendNotification(String messageBody) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
String channelId = getString(R.string.default_notification_channel_id);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.drawable.ic_stat_ic_notification)
.setContentTitle(getString(R.string.fcm_message))
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Since android Oreo notification channel is needed.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(channelId,
"Channel human readable title",
NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(channel);
}
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
在后台,通知生成器由firebase sdk处理和显示,但在前台,您必须在代码中执行此操作。您能建议我如何在代码中执行此操作吗?您使用的是“通知消息”还是“数据消息”?@NamrataRajgor检查我的答案。您好,我使用的是“数据消息”键入通知。非常感谢您的建议。问题已经解决。现在我在前台收到了通知。