2017-01-22 23 views

回答

2

onMessageReceived()不需要PendingIntent被調用。如果你有正確的設置,它會一直打電話給你。你應該發送給FCM服務器這link提供的數據類型

隨着FCM,您可以發送兩種類型的消息給客戶:

  1. 通知郵件,有時認爲是「顯示的消息。」

  2. 數據消息,由客戶端應用程序處理。

如果你想始終觸發使用單純的數據信息,因此將始終觸發onMessageReceived()。如果您嘗試使用數據消息和通知消息一起當你的應用程序中的onMessageReceived()不會得到觸發在後臺。

只要做任何你想做的,如保存到數據庫中,sharedPeference等裏面的onMessageReceived()

那麼如何發送到活動?

使用廣播接收器這裏是你如何發送一個廣播接收器在你的情況下,你會喜歡把它放在你的onMessageReceived()裏,所以每當你收到一個新的通知時,這段代碼將幫助你發送數據到特定的活動。

Intent intent = new Intent("Use anything you like"); 
intent.putExtra("data","The data you receive"); 
sendBroadcast(intent); 

在你的活動中進行註冊您的onStart()

registerReceiver(broadCastReceiver,new IntentFilter("must match the intent filter parameter")); 

這裏是你如何處理你的數據

class broadCastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     Log.d("Your data",intent.getData()); 
    } 
} 

注:你的意圖過濾參數必須與意圖參數你匹配設置在你的onMessageReceived()

如果您的應用程序從未收到來自FCM的數據,這個答案將毫無用處,因爲您的問題仍不清楚,這是我能爲您做的最好的。

相關問題