1

我已經創建了android應用程序來接收來自服務器的推送通知,但它不起作用。當應用程序被終止時,Android Firebase推送通知不起作用

當應用程序在前臺時,它可以很好地工作。但是當我們從系統托盤強制關閉應用程序時,它不起作用。

以下是我發送給FCM的我的json代碼。

{"to":"\/topics\/global","data":{"title":"Title","body":"Body"}} 

下面是我的Android功能

public void onMessageReceived(RemoteMessage remoteMessage) { 
     super.onMessageReceived(remoteMessage); 

     Log.d("Msg", "Message received ["+remoteMessage+"]"); 

     Map<String, String> data = remoteMessage.getData(); 


     DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 
     db.addData(data.get("body")); 

     Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class); 
     resultIntent.putExtra("message", data.get("body")); 

     showNotificationMessage(getApplicationContext(), data.get("title"), data.get("body"), "", resultIntent); 
    } 

下面的代碼顯示通知。

private void showNotificationMessage(Context context, String title, String message, String timeStamp, Intent intent) { 
     notificationUtils = new NotificationUtils(context); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
     notificationUtils.showNotificationMessage(title, message, timeStamp, intent); 
    } 

我找不到任何問題,任何人都可以幫助我。

非常感謝您提前。

編輯:

我已經改變手機,三星設備代碼解決我的問題是工作的罰款,但它與MI設備本身的問題。

我也有MI設備的解決方案,使用下面的步驟來啓用自動啓動應用程序。

轉到設置 - >權限 - >自動啓動。從那裏,選擇您想要接收通知的應用程序,然後切換開關將其打開。

+0

什麼是您的測試手機? – Jay

+1

檢查此鏈接是否可以幫助您: https://stackoverflow.com/a/37845174/6021469 –

+0

[Android應用程序在多任務托盤停止時未收到Firebase通知]的可能重複(https:// stackoverflow .com/questions/39504805/android-app-not-receiving-firebase-notification-when-app-is-stopped-from-multi-t) –

回答

0

here

當在背景中,應用接收在通知托盤中的通知有效載荷,並且當用戶點按通知僅處理所述數據有效負載。

而且從this

這包括同時包含通知和數據有效載荷(從通知控制檯發送的所有消息)消息。在這些情況下,通知被傳遞到設備的系統盤,數據有效載荷在你的發射活動的意圖的額外交付

你可能會從receive message tutorial

4

得到完整的幫助,每doc通知到達時有兩種可能性。

  1. 應用程序在前臺。

您將在onMessageReceived中得到通知,您可以通過此方法獲取數據。您需要在系統托盤中生成本地通知。

手柄通知

在問題中提到你已經這樣做了代碼。

  1. 應用程序在後臺。

您在系統托盤中收到通知。您無需在此處生成通知。您將以啓動器活動的意圖獲取數據。

手柄通知

這裏是發射活動

@Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Intent intent = getIntent(); 
     if (intent == null || intent.getExtras() == null) { 
      // your code to handle if there is no notification 
     } else { 
      // handle notification 
      String body = intent.getStringExtra("body"); 
      String title = intent.getStringExtra("title"); 
      //TODO your code to open activity as per notification 
     } 
    } 

我這樣做的代碼,它爲我工作。

+0

但問題是,當應用程序被終止時,通知不會進入系統托盤本身。 –

+0

你可以分享你的基本Android項目谷歌驅動器或其他地方,如果你有? –

相關問題