FCM - 单击系统托盘通知时如何遍历特定活动

时间:2017-10-09 14:00:28

标签: android firebase-cloud-messaging android-push-notification

我们正在使用FCM向最终用户显示推送通知。 FCM成功提出通知,用户正在从系统托盘中看到通知。我正在使用FCM控制台通知编写器进行测试。

我会将我的应用程序保留在后台并从FCM控制台发送消息。

要求是在用户点击托盘消息时(当应用程序在后台时)导航到应用程序中的特定活动。现在,默认情况下会打开应用启动器页面。

我无法从谷歌获得正确答案。大多数答案都是针对GCM的,大多数都不是解决方案。我在FCM页面中找不到合适的文档。

处理后台应用程序中的通知消息

当您的应用在后台时,Android会将通知消息定向到系统托盘。用户点按通知会默认打开应用启动器。

FCM page - 
  

这包括同时包含通知和数据的邮件   有效负载(以及从通知控制台发送的所有消息)。在   在这些情况下,通知将传递到设备的系统   托盘,数据有效负载是在意图的附加内容中提供的   你的发射器活动。

由于

3 个答案:

答案 0 :(得分:1)

您必须在 AndroidManifest.xml 中添加<intent-filter>操作并在通知有效负载中设置click_action,然后当应用处于后台或被杀时,它将起作用。< / p>

您可以参考以下链接:

open a specific activity from firebase notification

答案 1 :(得分:0)

将此代码放在onMessageReceived()方法

 private void sendNotification(String messageBody) {
            Intent intent = new Intent(this, YOUR_TARGET_ACTIVITY.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
                    PendingIntent.FLAG_ONE_SHOT);

            Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_stat_ic_notification)
                    .setContentTitle("FCM Message")
                    .setContentText(messageBody)
                    .setAutoCancel(true)
                    .setSound(defaultSoundUri)
                    .setContentIntent(pendingIntent);

            NotificationManager notificationManager =
                    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

            notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
        }

答案 2 :(得分:0)

您需要自己处理推送,并且不允许Google自动添加状态通知。默认情况下,Firebase控制台将为您接管状态通知的传递,并且不允许其他情况发生。在您的Firebase接收器中,只需build your own notification根据推送中的数据模式(您设置的),并在通知中添加PendingIntent