0

我正在使用node-gcm模塊向我的科爾多瓦應用程序發送推送通知。
服務器報告它已成功將消息傳遞到我的設備。當應用程序完全關閉時,Android推送通知不會顯示(使用node-gcm)

如果應用程序在後臺運行,則設備上會顯示通知,但如果應用程序未運行,則不會出現

my reading我相信我需要設置priority: 'high'來解決這個問題,然而從我的測試中這是行不通的。要麼我錯誤地設置,要麼我還需要做其他事情。

這裏是我的發送碼:

var msgJson = { 
       priority: 'high', 
       contentAvailable: true, 
       "data": { 
        title: title, 
        body: message_text, 
        icon: 'ic_launcher', 
        sound: true, 
        extra_data 
       } 
}; 


var message = new gcm.Message(msgJson); 

console.log(message); 

sender.send(message, { registrationTokens: push_tokens }, function (err, response) { 

    if(err) { 
     console.error('Error sending Google Cloud Message notification:', err, response); 
    } else { 
     console.log('Android notification successful send to', push_tokens, response); 
    } 

}); 

爲什麼我的通知,無法在設備上上來當應用程序完全關閉?

回答

0

在此thread中聲明強制停止應用程序的用戶將應用程序置於停止狀態,並且其代碼不會運行,包括在manifest中聲明的任何廣播接收器。只有在用戶明確啓動應用程序時,纔會將其置於接收者被解僱的狀態。

您還可以在此documentation中讀取delay_while_idle的值必須設置爲true。如果設備已連接但空閒,則消息仍將立即傳送,除非delay_while_idle標誌設置爲true。

這裏有一個相關的線程這可能有助於:

+0

我沒有張貼一個答案前做的研究我公平一點,我曾經碰到過同樣的信息廣播不如果應用程序完全關閉,則會到達 - 但我無法相信,有些應用程序(如Gmail)可以管理它。我也嘗試了delay_while_idle標誌,但我認爲這是一個網絡連接的東西,所以我把它從我的答案中拿出來,我試過了。我很感謝你的研究,並留下了答案 - 我真的希望得到一個真正面臨和解決同樣問題的人的回答。 – kris

+0

我遇到了一些我認爲可能要走的路,我將在下一次嘗試,但它需要修改我的客戶端代碼,所以我會推遲到最後:http://stackoverflow.com/a/ 24314088/1290746(http://stackoverflow.com/questions/24313539/push-notifications-when-app-is-closed)再次 - 謝謝你的回答,我希望我的回覆聽起來不是忘恩負義 - 我花了很長一段時間在這個運氣不好,沒有成功,我感到非常疲憊和難過。 – kris