【问题标题】:Building a task stack for activity started after Firebase Notification为 Firebase 通知后开始的活动构建任务堆栈
【发布时间】:2018-07-15 20:35:03
【问题描述】:

使用 Firebase 云消息传递,当应用在后台并且消息到达时,消息会转到系统托盘。当用户点击通知时,应用程序会启动,并且启动器活动会在Intent 中获取消息数据。

在我的例子中,这个通知是关于一些新结果的,所以当按下时,我想启动一个ResultsActivity。

为了实现这一点,我在OnStart 的LauncherActivity 中执行此操作 :

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 开始的,但这不是想要的行为。 想要的行为是将返回箭头发送到父 Activity,它恰好是 MainActivity。

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

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

【问题讨论】:

    标签: android android-intent firebase-cloud-messaging back-stack taskstackbuilder


    【解决方案1】:

    我最终做的是在服务器端,使用 firebase 云消息传递 管理员,而不是在我发送的 firebase_admin.messaging.Message 对象中包含 firebase_admin.messaging.Notification 对象,我只是把Message的数据中的通知标题和文本,然后我自己通常在MyFirebaseMessagingService中构建通知。由于我现在正在自己构建通知,所以我可以add the TaskStackBuilder normally。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多