如何在收到Firebase的通知时打开不同的活动

时间:2017-05-22 22:56:57

标签: android firebase push-notification

在我的应用中,有不同的类别,主页面(MainActivity),评论活动和聊天活动等。 当我收到来自评论,聊天或主页的通知时,它仍会打开主要活动。我想要的是,如果我收到关于聊天的通知,它应该打开聊天活动,如果有关于评论,它应该打开评论活动等等... 请帮助谢谢。

3 个答案:

答案 0 :(得分:1)

message notification data中,使用操作字符串的值添加属性click_action。对于要启动的活动,请更新清单以定义与操作匹配的意图过滤器。

例如,带有消息:

{
  "to": "dhVgCGVkTSR:APA91b...mWsm3t3tl814l",
  "notification": {
    "title": "New FCM Message",
    "body": "Hello World!",
    "click_action": "com.example.FCM_NOTIFICATION"
  },
  "data": {
    "score": "123"
  }
}

像这样定义意图过滤器:

    <activity android:name=".MyFcmNotificationActivity">
        <intent-filter>
            <action android:name="com.example.FCM_NOTIFICATION" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

答案 1 :(得分:0)

在您的MainActivity onCreate()中,您需要获取启动活动的意图并从通知中重新收回数据。

    Bundle bundle = getIntent().getExtras();
    if (bundle != null && bundle.get("data")!=null) {
        //here can get notification message
        String datas = bundle.get("data").toString();
    }

从此处,您可以根据从通知中收到的数据重定向用户。 https://firebase.google.com/docs/cloud-messaging/android/receive#backgrounded

  

处理后台应用程序中的通知消息

     

当您的应用在后台时,Android会指示通知   消息到系统托盘。用户点击通知即可打开   应用程序启动器默认情况下。

     

这包括同时包含通知和数据有效负载的消息   (以及从Notifications控制台发送的所有消息)。在这些   例如,通知被传送到设备的系统托盘,和   数据有效负载是在您的意图的附加内容中提供的   发射器活动。

答案 2 :(得分:0)

您的问题的答案是PendingIntent。您需要向FCM有效负载发送通知类型(聊天,评论等),然后在onMessageReceived()处理通知,知道类型并使用所需活动创建PendingIntent。当用户点击通知时,android将启动PendingIntent中指定的活动。请参阅此android documentation。我希望这会有所帮助。

[更新]我更喜欢Bob's answer,但我自己从未尝试过