簡體   English   中英

當app是后台FCM時,如何檢索通知消息intent.getExtras()

[英]How to retrieve notification message intent.getExtras() when app is background FCM

我正在使用FCM進行簡單通知

當應用程序處於前台時,一切正常。 我在onMessageReceived方法中收到通知和數據消息。

但是當應用程序處於后台時,我會在系統托盤中收到通知。 當我點擊控件時,它會轉到主要活動。 當我解析intent.getExtras(); ,我只獲得這些關鍵數據 - google.sent_timefromgoogle.message_idcollapse_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_titlenotification_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM