0

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

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

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

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

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

当您的应用程序处于后台时,Android 会将通知消息定向到系统托盘。默认情况下,用户点击通知会打开应用启动器。

FCM page - 

这包括同时包含通知和数据负载的消息(以及从通知控制台发送的所有消息)。在这些情况下,通知会被传递到设备的系统托盘,而数据负载会在启动器 Activity 的意图的附加部分中传递。

谢谢

4

3 回答 3

1

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

您可以参考以下链接:

从 firebase 通知中打开特定活动

于 2017-10-09T14:16:57.833 回答
0

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

于 2017-10-09T14:05:26.590 回答
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());
        }
于 2017-10-09T14:03:37.430 回答