2

這是我的代碼火力地堡通知不會顯示在應用程序運行

private void showNotification(String message) { 

    NotificationCompat.BigTextStyle stil = new NotificationCompat.BigTextStyle(); 
    stil.setBigContentTitle("Başıl"); 
    stil.bigText(message); 
    Intent i=new Intent(this,Bilgi.class); 
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent pendingIntent=PendingIntent.getActivity(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT); 
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
    builder.setAutoCancel(true); 
    builder.setSmallIcon(R.mipmap.ic_launcher); 
    builder.setTicker("selam dost.mesaj geldi"); 
    builder.setDefaults(Notification.DEFAULT_ALL); 
    builder.setContentIntent(pendingIntent); 
    builder.setContentTitle("Bildirim"); 
    builder.setContentText(message); 
    builder.setStyle(stil); 
    NotificationManager notificationManager= (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    notificationManager.notify(0,builder.build()); 



} 

enter image description here

當我發送通知(如果應用程序在工作(畫面左側))我的通知不顯示。當應用程序在後臺工作時,我的通知顯示。我怎麼解決這個問題 ?非常感謝你的幫助。

回答

6

official documentation中所述,如果應用程序在後臺運行,通知只會自動添加到系統托盤中。如果應用程序在前臺運行,則通知將發送到您服務的onMessageReceived方法。

所以總結一下將火力地堡通知基於應用程序的狀態下做到:

  • 前景onMessageReceived將處理通知
  • 背景:火力地堡將處理通知,並把它放在系統托盤爲你
+0

那麼我的代碼會改變什麼?你可以幫我嗎 ?謝謝。 –

+0

顯示通知的代碼在哪裏?在'onMessageReceived'中?如果是這樣,你是否確認消息「String」不是空的。 – TR4Android

2

在你的onMessageReceived方法,你必須得到通知消息體並將其傳遞給showNotification(String message)方法。

這樣的:

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    String message = remoteMessage.getNotification().getBody(); 
    showNotification(message); 
} 

這樣,它會顯示您發送火力通知時設置的消息。