![](/img/trans.png)
[英]How to get intent.getExtras from notification.addaction to work?
[英]How to retrieve notification message intent.getExtras() when app is background FCM
我正在使用FCM進行簡單通知
當應用程序處於前台時,一切正常。 我在onMessageReceived
方法中收到通知和數據消息。
但是當應用程序處於后台時,我會在系統托盤中收到通知。 當我點擊控件時,它會轉到主要活動。 當我解析intent.getExtras();
,我只獲得這些關鍵數據 - google.sent_time
, from
, google.message_id
, collapse_key
。
如何從intent.getExtras()
系統托盤中可見的通知消息標題和消息?
我正在使用FCM控制台發送通知我沒有我的專用服務器來執行此操作。
接收郵件的代碼:
final Bundle extras = intent.getExtras();
final Set<String> keySet = extras.keySet();
final Iterator<String> iterator = keySet.iterator();
while (iterator.hasNext()) {
final String key = iterator.next();
final Object o = extras.get(key);
System.out.println(key + ":" + o);
}
如處理Android FCM文檔的消息中所示 ,如果您發送的有效負載同時包含通知和數據,則將單獨處理。 通知部分將由通知托盤處理,而數據部分將在意圖的附加部分中處理。
AFAIK,當應用程序處於后台時,無法獲取通知有效負載(始終由通知托盤處理)。 但是,您可以做的是將自定義鍵值對添加到數據有效負載中,如下所示:
{
"data": {
"notification_title": "title here",
"notification_message": "message here"
}
}
當然,您必須確保notification_title
和notification_message
的數據值與您在通知有效負載中設置的數據值相同。 然后就像往常一樣從Intent extras中檢索它。
當您的應用處於后台或被殺時,Firebase Notfication將充當數據消息。 在這些方案中,如果要檢索通知消息,則必須在“鍵值對”下對其進行定義
FCM控制台的高級選項
然后在您的活動中使用此鍵來檢索此消息,該鍵將通過標記通知打開。
if (getIntent().getExtras() != null) {
Object value ;
for (String key : getIntent().getExtras().keySet()) {
if(key.equals("Message Key")) {
value = getIntent().getExtras().get(key); // value will represend your message body... Enjoy It
Log.d("NotificationTag" , key+"____" + value);
}
}
}
只需覆蓋FirebaseMessagingService .class的handleIntent()方法,它將在前台和后台模式下調用,在這里您可以獲取和解析通知密鑰和有效負載數據
public void handleIntent(Intent intent)
{
String title = bundle.getString("gcm.notification.title");
String body = bundle.getString("gcm.notification.body");
}
注意:它適用於游戲服務11
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.