3

當我的應用程序處於後臺時,我無法再收到任何數據消息。 請注意,它直到最近纔在我的應用程序中完美運行。也許它在我的開發環境中最近更新後停止工作,我不能說....我無法在後臺應用程序中收到任何FCM消息

所以我試着用quickstart-android project進行測試,看它效果更好。

答案是否定的!

我毫不懷疑,快速入門,Android項目是配置良好的使用FCM能力......

我從高級REST客戶端發送以下信息,我用它成功地測試我目前發佈的應用程序。

{ 
    "to" : "dLN4paNl3uw:APA91bH0lpkEMxGp...._7EdxkB2cRbPKFxT2Ti3OPw-7fCSwXCSfGG", 
    "data": { 
    "id": 19, 
    "title": "Title test", 
    "msg": "Text of the test", 
    "code": 2, 
    }, 
    "delay_while_idle" : false, 
    "priority" : "high", 
    "content_available" : true 
} 

我能說的是時候,我每次發送消息,而應用程序是在後臺,我得到的logcat下面的顯示

07-22 12:54:21.400 14316-14316/? W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000 pkg=com.google.firebase.quickstart.fcm (has extras) } 

所以該消息由獲好評設備但未傳輸到onMessageReceive()。

我看到很多關於這個問題的帖子,但答案總是含糊不清,因爲我們可以說它對一些人有用,對其他人不起作用。 所以我想知道最近是否有人對這個問題找到更精確的解釋,因爲我不知道它是否來自開發環境,因爲我試圖用新更新的工作室,SDK,構建工具構建舊的工作項目並且我面臨同樣的問題,GCM/FCM消息不再由新建應用程序接收。

編輯

更多的調查後,我在logcat中,我的應用程序強制關閉時,我刷出來從最近的應用程序列表中看到。這當然可以解釋它無法處理設備收到的消息。

07-23 23:12:29.002 671-31254/? I/ActivityManager: Killing 17453:com.google.firebase.quickstart.fcm/u0a297 (adj 9): remove task 
07-23 23:12:29.016 14316-14524/? D/GCM: Removing messenger 0:com.google.firebase.quickstart.fcm 
07-23 23:12:29.017 671-2998/? I/WindowState: WIN DEATH: Window{2a27cf7 u0 com.google.firebase.quickstart.fcm/com.google.firebase.quickstart.fcm.MainActivity} 
07-23 23:12:30.148 671-4851/? I/ActivityManager: Force stopping com.google.firebase.quickstart.fcm appid=10297 user=0: from pid 18289 

我也試過我的一個工作項目建成幾個星期前,基於GCM 8.4.0,SDK 23,JAVA 1.7,這是工作,我也得到了同樣的問題;應用程序已關閉。

這是我成功地用於測試我的工作項目2個不同的設備觀察:的Nexus 7 LTE 6.0.1和GT-9295 5.0.1
我現在看到的唯一區別的是Android工作室/ gradle這個版本。工作項目使用1.5.2構建,現在我使用2.1.2,我無法再構建任何工作應用程序。
我在2臺不同的計算機上遇到這個問題,其中一臺我重新安裝了所有東西!

回答

0

這是完全不可思議的

我已重新安裝的Android 1.5工作室捆綁141.2422023,SDK 23.0.3,JAVA jdk1.7。0_79和重建火力地堡快速入門,Android的消息應用程序,其結果是驚人的

我沒有Force stopping消息了,當我把應用程序在後臺:

07-24 12:00:10.409 671-3321/? I/ActivityManager: Killing 11067:com.google.firebase.quickstart.fcm/u0a297 (adj 9): remove task 
07-24 12:00:10.425 671-31254/? D/GraphicsStats: Buffer count: 4 
07-24 12:00:10.425 671-31254/? I/WindowState: WIN DEATH: Window{996cbf7 u0 com.google.firebase.quickstart.fcm/com.google.firebase.quickstart.fcm.MainActivity} 

和應用程序是正確的接收和處理數據有效負載消息

我還成功地在Studio 1.5.2下使用sdk 24,buildtools 24.0.0和java 1.8.0_92重建了應用程序

請告訴我,從Studio 1.5遷移到Studio 2.1.2時,如果在應用程序中有什麼關鍵變化!

+0

從1.5到2.1沒有變化,應該對您的項目產生這種影響。您是否對quickstart-android消息傳遞項目進行了調整?如果你做一個git狀態有沒有改變? –

+0

@ArthurThompson沒有亞瑟,正如我在[GitHub](https://github.com/firebase/quickstart-android/issues/89)上所說的那樣,並深深地解釋了[這裏](https://code.google.com/p /安卓/問題/細節?can = 2&start = 0&num = 100&q =&colspec = ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened&groupby =&sort =&id = 217489): -/ – 2ndGAB

0

我也看到這個錯誤,也採用了Android 2.1工作室,並發現了這一點:

當您退出過Android Studio,它將終止應用程序(被調試),並把它放到某種「停止」狀態。

這不同於從最近刷卡,如果我這樣做,那麼我的GCM消息通過罰款。

但這個週期 - 調試與AS,辭去了,應用程序就會被殺死 - 導致GCM消息失敗,result=CANCELLED forIntent

+0

我真的不明白。對我來說,它實際上並不依賴於Android Studio狀態。我可以從設備啓動應用程序,而無需連接,並且我可以獲得有關接收FCM信息的相同行爲。 – 2ndGAB

0

我希望你做這種類型的數據在你的web API添加。

$fields = array(
    'to'      => $reg_id , 
    'priority'     => "high", 
    'notification'    => array("title"=>"Food Shop", "body" => $message , "click_action"=> "OPEN_ACTIVITY_1"), 
    'data' => array(
      "noti_title"=>"Food Shop One", 
      "noti_body"=> "some body" 
     ), 
); 
1

FCM有兩種類型的通知靜音和非靜音: -

靜音通知: - 你總是在得到回調onMessageReceived方法

非靜默通知: - 當應用處於前臺時,您在onMessageReceived方法中得到回調,但當應用在後臺時,FCM會生成默認通知在通知欄中。

只有數據部分的通知在FCM中被視爲無聲通知。

當您生成服務器通知你傳遞一個JSON對象類似的東西: -

{ 
    "notification":{ 
    "title":"Test Notification", 
    "body":"Notification is delivered!", 
    "sound":"call", 
    "icon": "ic_app_icon" 
    }, 
    "data":{ 
    "someData":"Great" 
    }, 
    "to": "app_token", 
    "priority":"high" 
} 

上面一個是一個非靜默的通知,如果你想從服務器發送無聲通知,則結構應類似的東西: -

{ 
    "data":{ 
    "someData":"Great" 
    }, 
    "to": "app_token", 
    "priority":"high" 
} 

正如你可以它是相同的結構只是沒有通知對象的有效載荷。

+0

好吧,但正如我所說的,問題不是來自我的代碼,而是來自Android Studio。由於任何未知原因,如果我使用Android Studio 2構建應用程序,但無法正常工作,但在使用Android Studio 1.5構建應用程序時可以完美工作https://code.google.com/p/android/issues/detail?id= 219084 – 2ndGAB

相關問題