使用 Firebase Cloud Messaging ,当应用程序在后台运行且有消息到达时,该消息将进入系统托盘。当用户单击通知时,该应用将启动,启动器活动将在Intent
中获取消息数据。
就我而言,此通知是关于一些新结果的,因此,按此键时,我要启动ResultsActivity
。
为了实现这一点,我在OnStart
的{{1}}中进行了此操作
:
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
。
我知道有TaskStackBuilder
用于此类活动,但我不知道如何将that pattern应用于我的案例,在这里我从另一个活动“正常”开始活动,不是来自某些Notification Builder。
这里MainActivity
是正确的解决方案吗?如果是这样,如何更改上面的代码以使用它?如果没有,什么是正确的解决方案?
答案 0 :(得分:0)
我最终要做的是在服务器端,使用 firebase云消息传递管理员,而不是在我要发送的firebase_admin.messaging.Notification
对象中包含firebase_admin.messaging.Message
对象,我只是将通知标题和文本放在Message
的数据中,然后通常由我自己在MyFirebaseMessagingService
中构建通知。由于我现在自己建立通知,因此可以add the TaskStackBuilder
normally。
我猜这并没有真正回答不使用Notification.Builder
时如何添加后退堆栈的问题,但是无论如何它可能是一个更好的解决方案。