3

使用Firebase Cloud Messaging,当应用程序在后台并且有消息到达时,消息会转到系统托盘。当用户点击通知时,应用程序被启动并且启动器活动在Intent.

就我而言,这个通知是关于一些新结果的,所以当按下时,我想启动一个ResultsActivity.

为了做到这一点,我这样OnStartLauncherActivity

Intent intent = getIntent();
String searchId = intent.getStringExtra("search_id");
if(searchId != null){
    Intent resultsIntent = new Intent(LauncherActivity.this, ResultsActivity.class);
    resultsIntent.putExtra(ResultsActivity.SEARCH_ID_EXTRA, searchId);
    startActivity(resultsIntent);
}

这一切都很好。

现在的问题是,当单击应用栏上的“向上”箭头时,应用不会转到清单中定义的父活动(不是启动器活动),而是转到启动器活动。这并不奇怪,因为ResultActivity是从 开始的LauncherActivity,但这不是想要的行为。想要的行为是让后退箭头发送到父活动,它恰好是MainActivity.

我知道有TaskStackBuilder那种东西,但我不知道如何将这种模式应用到我的案例中,在这里我从另一个活动而不是从某个通知生成器开始“正常”活动。

这里有TaskStackBuilder正确的解决方案吗?如果是这样,我该如何更改上面的代码以使用它?如果不是,那么正确的解决方案是什么?

4

1 回答 1

0

我最终做的是在服务器端,使用firebase云消息传递管理员,而不是在我发送的firebase_admin.messaging.Notification对象中包含一个对象,我只是将通知标题和文本放在数据中,然后构建一个通知我自己通常在. 由于我现在正在自己构建通知,因此我可以正常添加.firebase_admin.messaging.MessageMessageMyFirebaseMessagingServiceTaskStackBuilder

我想这并不能真正回答不使用时如何添加回栈的问题Notification.Builder,但无论如何它可能是一个更好的解决方案。

于 2018-07-19T13:18:18.270 回答