我想要的内容:我想从 Firebase控制台发送通知。当应用程序处于后台/终止状态并且用户点击推送通知时,它可以转到特定活动。我们称之为当前优惠活动。当应用程序处于前台时,应该发生同样的事情。
我的理解:从 firebase文档,当应用程序处于前台时,将从 Firebase控制台发送的推送通知会在{{ TextView
类的1}}方法。但是,当应用程序处于后台/ kill状态时,onMessageReceived
类的MyFirebaseMessagingService
方法将不会被调用。
我想要的内容:当应用程序处于后台/终止状态且用户在推送通知中轻按时,我要将用户重定向到特定活动(当前优惠活动)。< / p>
我尝试了this answer,但没有得到解决方案。
我的代码如下。
MyFirebaseMessagingService.java
onMessageReceived
MyFirebaseInstanceIDService.java
MyFirebaseMessagingService
ActivityOne.java
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private final String TAG = "mk";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.e(TAG, "Message Body: " + remoteMessage.getNotification().getBody());
}
}
谢谢。
答案 0 :(得分:3)
解决方案:
如果您是从Firebase控制台发送推送通知,并且您的应用处于后台或已被终止,则不会调用 MyFirebaseMessagingService 。 (firebase文档中未提及)
如果您是从Firebase控制台发送推送通知且您的应用程序处于前台,则将调用 MyFirebaseMessagingService 。
如果您从服务器发送推送通知(我的意思是后端,即网站或某些基于Web的仪表板),而您的应用处于后台或终止运行或处于前台,则 MyFirebaseMessagingService 将被呼叫。
答案 1 :(得分:0)
好吧,我降落在这里寻找另一个问题的解决方案,但我可以中途回答您的问题。
如果您要发送带有数据有效载荷的通知,则可以检查意图以了解其他额外功能。例如,如果您在控制台(firebase)中有一个具有某些值的键(“ custom_message”)(“这是我的消息”),如下图所示
您可以在启动活动中聆听Intent的附加功能,这些活动可以是启动画面或主要活动。
Intent intent = getIntent();
if (intent.getStringExtras("custom_message") != null) {
//go to specific activity when notification is opened
}
else{
//open open default launch activity
}
现在,我早些时候说过我将一半回答您的问题。为什么?这是因为我不知道当通知没有数据有效负载时您将如何实现。希望这对某人有帮助。
@Maulik Dodia信息也非常有用。赞赏