簡體   English   中英

應用程序在后台時的Firebase控制台消息傳遞

[英]Firebase Console Messaging when app is in background

我在Firebase控制台(而非api)的通知正文中發送JSON,然后在onMessageReceived方法中對其進行轉換。 當應用程序位於前台時,當應用程序位於后台時,不會調用onMessageReceived方法,並且通知主體在通知托盤中顯示為字符串,此方法有效。

有什么辦法或解決方法嗎?

注意:由於具有定位功能,我正在通過控制台發送。

來自官方文檔

大多數消息類型都提供onMessageReceived,但以下情況除外:

在后台接收時同時具有通知和數據有效負載的消息。 在這種情況下,通知將傳遞到設備的系統托盤,而數據有效載荷將在啟動器活動的意圖之外傳遞。

這意味着,默認情況下,通知將由android系統顯示,您對此無能為力。 但是,您可以在通知中附加鍵值數據有效負載,該有效負載將作為活動的預期附加信息提供。 您可以接收這些數據值並執行您想做的任何事情。

我已經創建了一個如下所示的輔助函數,並將其放在活動的onCreate()

public void FCM()
    {
        if (getIntent().getExtras() != null) {
            String pack=(String) getIntent().getExtras().get(YOUR_KEY);
            if(pack!=null) {

                Log.e("fcm main pack", pack);
                try {
                    Uri uri = Uri.parse("market://details?id=" + pack);
                    Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);

                    goToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY |
                            Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
                            Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
                    startActivity(goToMarket);
                } catch (android.content.ActivityNotFoundException anfe) {
                    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + pack)));
                }
            }



        }
        //else Log.e("fcm main","null");
    }

在控制台中,它會在通知數據中添加"notification" ,而當應用程序在后台運行時,firebase會自行處理"notification"數據。 即使您在"data"對象中還有任何其他數據! 您將無法訪問。

因此,從控制台您無法觸發onMessageReceived()您必須通過刪除"notification"數據來手動發送推送,以在應用程序處於后台時觸發onMessageReceived()

像這樣

{
 "to":"/topics/topic_name",//or token id of specified user

"data" : {
  "x" : "true",
  "y" : "Abc",
  "z" : "123"
  }
}

更新資料

如果要更改系統生成的通知(如圖標),可以將其添加到manifest.xml文件中

<meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/notification_icon" />
<meta-data android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/google_blue" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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