在Firebase通知

时间:2018-07-15 20:35:03

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

使用 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是正确的解决方案吗?如果是这样,如何更改上面的代码以使用它?如果没有,什么是正确的解决方案?

1 个答案:

答案 0 :(得分:0)

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

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