Android Firebase在点击时获取通知数据

Android Firebase在点击时获取通知数据,android,android-intent,firebase,firebase-cloud-messaging,firebase-notifications,Android,Android Intent,Firebase,Firebase Cloud Messaging,Firebase Notifications,我使用firebase控制台发送通知。它直接向系统托盘发送通知。我想在用户点击它们时从它们那里获得有效载荷 当你的应用程序在后台时,Android会发出通知 将邮件发送到系统托盘。用户点击通知打开 默认情况下,应用程序启动器 这包括同时包含通知和数据负载的消息 (以及从通知控制台发送的所有消息)。在这些 在这种情况下,通知会发送到设备的系统托盘,并且 数据有效负载是按照用户的意图额外交付的 发射装置活动 我能够获得从控制台发送的通知 如何从extra of my intent中获取通知负载?我

我使用firebase控制台发送通知。它直接向系统托盘发送通知。我想在用户点击它们时从它们那里获得有效载荷

当你的应用程序在后台时,Android会发出通知 将邮件发送到系统托盘。用户点击通知打开 默认情况下,应用程序启动器

这包括同时包含通知和数据负载的消息 (以及从通知控制台发送的所有消息)。在这些 在这种情况下,通知会发送到设备的系统托盘,并且 数据有效负载是按照用户的意图额外交付的 发射装置活动

我能够获得从控制台发送的通知
如何从extra of my intent中获取通知负载?

我转储了extras捆绑包并找到了答案

这些是我一直在寻找的钥匙:

google.sent\u时间(长)
from(string)
google.message\u id(字符串)
折叠键(字符串)

除此之外,您还可以直接使用用于自定义数据的密钥(在发送消息时)

当我们从firebase控制台触发消息时,我认为只有我们发送的自定义数据才能从extra的意图接收。标题、消息等我无法从这里检索

更新 正如其他人所观察到的,我认为不可能从额外的意图中提取标题和信息。我用另一把钥匙再次传递它们,找到了一个解决办法。一些如何从extras中提取数据的代码是

Bundle Extras = getIntent().getExtras(); 
public static String Content_KEY = "NotificationContent"; //alterative to message
String Content = Extras.getString(Content_KEY);
我不记得确切的名字,但有两种方式发送消息

  • 第一种模式是firebase控制台使用的模式。它直接发送消息

  • 到系统托盘(如果在后台)(作为通知)
  • 如果在前台,则发送至onMessageReceived
  • 你们必须同时处理这两个问题,若我在onMessageReceived中收到通知,我会将通知从我的应用程序本身发送到系统托盘,这样我就可以从处理主活动中的额外意图的相同代码中管理它们

    如果通知丢失,您还将丢失数据

  • 直接从服务器或应用程序向firebase服务器发送消息。我认为消息将始终发送到onMessageReceived,这样就省去了再次发送消息的痛苦,因为它是单独的密钥,如果删除通知,就会丢失数据。但在这里,您必须设置自己的通知应用程序/服务器

  • 我把多余的东西扔掉,找到了答案

    这些是我一直在寻找的钥匙:

    google.sent\u时间(长)
    from(string)
    google.message\u id(字符串)
    折叠键(字符串)

    除此之外,您还可以直接使用用于自定义数据的密钥(在发送消息时)

    当我们从firebase控制台触发消息时,我认为只有我们发送的自定义数据才能从extra的意图接收。标题、消息等我无法从这里检索

    更新 正如其他人所观察到的,我认为不可能从额外的意图中提取标题和信息。我用另一把钥匙再次传递它们,找到了一个解决办法。一些如何从extras中提取数据的代码是

    Bundle Extras = getIntent().getExtras(); 
    public static String Content_KEY = "NotificationContent"; //alterative to message
    String Content = Extras.getString(Content_KEY);
    
    我不记得确切的名字,但有两种方式发送消息

  • 第一种模式是firebase控制台使用的模式。它直接发送消息

  • 到系统托盘(如果在后台)(作为通知)
  • 如果在前台,则发送至onMessageReceived
  • 你们必须同时处理这两个问题,若我在onMessageReceived中收到通知,我会将通知从我的应用程序本身发送到系统托盘,这样我就可以从处理主活动中的额外意图的相同代码中管理它们

    如果通知丢失,您还将丢失数据

  • 直接从服务器或应用程序向firebase服务器发送消息。我认为消息将始终发送到onMessageReceived,这样就省去了再次发送消息的痛苦,因为它是单独的密钥,如果删除通知,就会丢失数据。但在这里,您必须设置自己的通知应用程序/服务器
  • 导入android.content.Context;
    导入android.content.Intent;
    导入android.content.SharedReferences;
    导入android.support.v4.content.WakefulBroadcastReceiver;
    公共类FirebaseDataReceiver扩展WakefulBroadcastReceiver{
    私有最终字符串标记=“FirebaseDataReceiver”;
    公共void onReceive(上下文、意图){
    字符串dataBundle intent.getExtras().getString(“gcm.notification.message”);
    }
    }
    
    这可能有助于我们导入android.content.Context; 导入android.content.Intent; 导入android.content.SharedReferences; 导入android.support.v4.content.WakefulBroadcastReceiver; 公共类FirebaseDataReceiver扩展WakefulBroadcastReceiver{ 私有最终字符串标记=“FirebaseDataReceiver”; 公共void onReceive(上下文、意图){ 字符串dataBundle intent.getExtras().getString(“gcm.notification.message”); } }
    这可能会帮助我们

    当用户按下推送通知时,我们如何使用firebase sdk在活动中获取推送通知消息?我无法检索该邮件,因为在extras intent中找不到它,我用另一个密钥(如myMessageOK yourkey)将其副本发送给它,它位于Notification对象下,对吗?如果可能的话,您可以在这里共享一个代码,这样我就可以查看它。当应用程序处于kill的后台时,我无法获取密钥。当用户按下推送通知时,我们如何使用firebase sdk在活动中获取推送通知消息?我无法检索该邮件,因为在extras intent中找不到它,我用另一个密钥(如myMessageOK yourkey)将其副本发送给它,它位于Notification对象下,对吗?如果可能的话,你可以在这里共享一段代码,这样我就可以查看它了。当应用程序处于kill的后台时,我无法获取密钥。请记住:“这个类在API级别26.1.0中被弃用了。”请记住:“这个类在API级别26.1.0中被弃用了。”