在 Firebase 通知后开始为 activity 构建任务堆栈
Building a task stack for activity started after Firebase Notification
使用 Firebase Cloud Messaging,当应用程序在后台并且有消息到达时,消息会进入系统托盘。当用户点击通知时,应用程序启动,启动器 activity 获取 Intent
.
中的消息数据
在我的例子中,这个通知是关于一些新结果的,所以按下时,我想开始 ResultsActivity
。
为了实现这一点,我在 LauncherActivity
的 OnStart
中执行此操作
:
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);
}
这一切都很好。
现在的问题是 单击应用栏上的 "up" 箭头时,应用不会转到清单中定义的父级 activity(不是启动器 activity)而是启动器 activity。 这并不奇怪,因为 ResultActivity
是从LauncherActivity
,但这不是想要的行为。 想要的行为是将后退箭头发送给父级 activity,恰好是 MainActivity
。
我知道这里有 TaskStackBuilder
for that kind of stuff, but I don't know how I can apply that pattern 我的案例,我从另一个 activity 而不是从某些 Notification Builder 启动 activity "normally"。
这里TaskStackBuilder
是正确的解决方案吗?如果是这样,我如何更改上面的代码以使用它?如果不是,正确的解决方案是什么?
我最后做的是在服务器端,使用 firebase 云消息 管理员,而不是包括 firebase_admin.messaging.Notification
object in the firebase_admin.messaging.Message
object I am then sending, I just put the notification title and text in the Message
's data, and then build a notification by myself normally in MyFirebaseMessagingService
. Since I'm now building the notification by myself I can add the TaskStackBuilder
normally.
我想这并不能真正回答在不使用 Notification.Builder
时如何添加返回堆栈的问题,但无论如何它可能是一个更好的解决方案。
使用 Firebase Cloud Messaging,当应用程序在后台并且有消息到达时,消息会进入系统托盘。当用户点击通知时,应用程序启动,启动器 activity 获取 Intent
.
在我的例子中,这个通知是关于一些新结果的,所以按下时,我想开始 ResultsActivity
。
为了实现这一点,我在 LauncherActivity
的 OnStart
中执行此操作
:
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);
}
这一切都很好。
现在的问题是 单击应用栏上的 "up" 箭头时,应用不会转到清单中定义的父级 activity(不是启动器 activity)而是启动器 activity。 这并不奇怪,因为 ResultActivity
是从LauncherActivity
,但这不是想要的行为。 想要的行为是将后退箭头发送给父级 activity,恰好是 MainActivity
。
我知道这里有 TaskStackBuilder
for that kind of stuff, but I don't know how I can apply that pattern 我的案例,我从另一个 activity 而不是从某些 Notification Builder 启动 activity "normally"。
这里TaskStackBuilder
是正确的解决方案吗?如果是这样,我如何更改上面的代码以使用它?如果不是,正确的解决方案是什么?
我最后做的是在服务器端,使用 firebase 云消息 管理员,而不是包括 firebase_admin.messaging.Notification
object in the firebase_admin.messaging.Message
object I am then sending, I just put the notification title and text in the Message
's data, and then build a notification by myself normally in MyFirebaseMessagingService
. Since I'm now building the notification by myself I can add the TaskStackBuilder
normally.
我想这并不能真正回答在不使用 Notification.Builder
时如何添加返回堆栈的问题,但无论如何它可能是一个更好的解决方案。