2013-02-07 35 views
7

我正面臨一個奇怪的問題。如果在從服務器端發送消息的時候連接到互聯網,那麼我的手機中會收到推送通知。但是,如果當時沒有連接到互聯網,而是在一段時間後連接到互聯網。我沒有收到該通知。根據我的知識,所有這些通知應該顯示在我們聯機的時候,因爲GCM服務器存儲所有這些消息。我收到所有其他應用的通知。我還給了清單中的wakelock權限。可能是什麼問題?來自服務器端,客戶端還是移動設備?請幫助...Sometime Not Receiving push notification GCM in Mobile

這個值是從第三方服務器發送到GCM服務器(.NET服務器):

String postdata= "collapse_key=score_update&time_to_live=2419200&delay_while_idle=1&data.message=‌​" + 
message + "&data.time=" + System.DateTime.Now.ToString() + "&registration_id=" + deviceToken + "" 

由於提前

回答

10

delay_while_idle=1矛盾Also I have given wakelock permission in manifest

delay_while_idle=1意味着如果消息處於空閒狀態(關閉,離線,鎖定屏幕等),則該消息不會到達該設備。如果你想讓你的wakelock許可有所作爲,請將其更改爲0。

只是爲了澄清 - 消息應該在設備停止空閒後才能到達設備(只要設備沒有空閒太久,其中「太長」由指定的time_to_live確定)。

下面是從GCM文檔相關報價:

delay_while_idle

如果包括,則表示該消息應該不會立即如果設備處於空閒狀態發送 。服務器將等待設備成爲 活動狀態,然後僅發送每個collapse_key值 的最後一條消息。可選的。默認值爲false,並且必須是JSON 布爾值。

time_to_live

多長時間(以秒計)的消息應該被保存在存儲GCM如果 裝置離線。可選(默認生存時間爲4周,並且必須將 設置爲JSON編號)。

+0

你確定。因爲在文檔中我發現delay_while_idle標誌應該是真的。所以在服務器端使用.net服務器我傳遞delay_while_idle = 1(true),因爲0(false)。如果您確認,請讓我知道...... – ARIJIT

+1

「空閒時延遲」意味着它所說的 - 在設備閒置時延遲信息傳遞。當設備返回激活狀態(在線,顯示屏顯示)時,應收到消息。如果您想喚醒設備並在設備被鎖定時顯示通知,則喚醒鎖定權限是相關的。這就是爲什麼當'delay_while_idle = 0'時才使用它。 – Eran

+0

非常感謝....還需要將增量值附加到摺疊鍵值,即score_update。 – ARIJIT

相關問題