我已经按照几个教程从firebase向Android应用程序发送通知,我能够收到通知没问题。
我想了解两件事:
如何在用户查看未处理通知的活动时处理通知的接收?
- 醇>
当应用程序正在运行但不在前台并且我收到通知时,当我从系统托盘中单击它时,应用程序会打开已定义广播者的活动 - 如何控制哪个活动是打开?
以下是处理通知的活动的代码
public returnType method(arguments) {
if (an argument is invalid)
throw new IllegalArgumentException("Message");
// At this point, you can assume arguments are valid
// ... the rest of the method ...
}
如果您需要查看代码的其他部分,请告诉我。
答案 0 :(得分:0)
如何在用户查看未处理通知的活动时处理通知的接收?
我会尽量缩短它。当您的应用处于前台时,系统会以您onMessageReceived()
的{{1}}方式收到通知。现在应该将哪个活动广播到?创建一个基本活动类,并使所有活动扩展它。在BaseActivity中,您可以使用Broadcast方法或尝试使用某些FirebaseMessagingService
库,就像我喜欢这样:
Eventbus
任何扩展基本活动的活动都将能够接收通知事件。你可以相应地处理它。
当应用程序正在运行但不在前台并且我收到通知时,当我从系统托盘中单击它时,应用程序会打开已定义广播者的活动 - 如何控制打开哪个活动? / p>
通常,当您单击系统生成的通知时,您的第一个活动就会打开。您必须在onCreate()示例中检查@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onNotificationReceived(NotificationReceieveBean bean){
if(bean != null){
ViewUtils.showJobOfferSnackBar(this, bean.map);
EventBus.getDefault().removeStickyEvent(bean);
}
}
实例中的数据与您从服务器发送的数据具有相同的密钥:
Bundle
** 编辑 **
Bundle bundle = getIntent().getExtras();
if(bundle != null){
// if the below condition is true then it means you have received notification
if(bundle.getString("notification_key_sent_from_server") != null) {
ViewUtils.handleIncomingFCMNotification(bundle);
finish(); // finishing the first activity since I want to go to some other activity
return;
}
}