在应用程序处于后台/终止状态时处理推送通知(FCM)-Android

时间:2018-07-04 16:10:04

标签: firebase android-intent android-activity firebase-cloud-messaging deep-linking

我想要的内容:我想从 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());
    }
}

谢谢。

2 个答案:

答案 0 :(得分:3)

解决方案:

  1. 如果您是从Firebase控制台发送推送通知,并且您的应用处于后台或已被终止,则不会调用 MyFirebaseMessagingService (firebase文档中未提及)

  2. 如果您是从Firebase控制台发送推送通知且您的应用程序处于前台,则将调用 MyFirebaseMessagingService

  3. 如果您从服务器发送推送通知(我的意思是后端,即网站或某些基于Web的仪表板),而您的应用处于后台或终止运行或处于前台,则 MyFirebaseMessagingService 将被呼叫。

答案 1 :(得分:0)

好吧,我降落在这里寻找另一个问题的解决方案,但我可以中途回答您的问题。

如果您要发送带有数据有效载荷的通知,则可以检查意图以了解其他额外功能。例如,如果您在控制台(firebase)中有一个具有某些值的键(“ custom_message”)(“这是我的消息”),如下图所示

enter image description here

您可以在启动活动中聆听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信息也非常有用。赞赏