我是firebase控制台发送通知。它直接向系统托盘发送通知。我希望当用户点击它们时从它们获得有效负载。
当您的应用在后台时,Android会指示通知 消息到系统托盘。用户点击通知即可打开 应用程序启动器默认情况下。
这包括同时包含通知和数据有效负载的消息 (以及从Notifications控制台发送的所有消息)。在这些 例如,通知被传送到设备的系统托盘,和 数据有效负载是在您的意图的附加内容中提供的 发射器活动。
https://firebase.google.com/docs/notifications/android/console-audience
我可以收到我从控制台发送的通知 如何从额外的意图中获得通知有效负载?
答案 0 :(得分:4)
我倾倒额外的捆绑并找到答案。
这些是我一直在寻找的钥匙:
google.sent_time(长)
来自(字符串)
google.message_id(String)
collapse_key(String)
除此之外,您可以直接使用您用于自定义数据的密钥(发送消息时)。
当我们从firebase控制台触发消息时,我认为只有我们发送的自定义数据才能从额外的意图中接收。标题,消息等我无法从这里检索
正如其他人所观察到的那样,我认为不可能从额外的意图中提取标题和消息。我找到了一个工作区,再次用一把钥匙传递它们。一些代码如何从extras intent中提取数据是
Bundle Extras = getIntent().getExtras();
public static String Content_KEY = "NotificationContent"; //alterative to message
String Content = Extras.getString(Content_KEY);
我不记得确切的名字,但有2种模式可以发送信息。
第一种模式是firebase控制台使用的模式。它直接发送消息
你必须处理这两个问题,我最后通过我的应用程序本身向系统托盘发送通知,如果我在onMessageReceived中获取它,以便我可以从处理主要活动中额外意图的相同代码中管理它们。
如果通知丢失,您也会丢失数据。
答案 1 :(得分:1)
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v4.content.WakefulBroadcastReceiver;
public class FirebaseDataReceiver extends WakefulBroadcastReceiver {
private final String TAG = "FirebaseDataReceiver";
public void onReceive(Context context, Intent intent) {
String dataBundle intent.getExtras().getString("gcm.notification.message");
}
}
<receiver
android:name="PACKAGENAME.FirebaseDataReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</receiver>
这可能有助于我们