0

當測試parse.com推送通知(從CloudCode發送到afterSave時)時,出現了一些奇怪現象。Parse.com推送通知延遲或僅在Android應用重新啓動後

有時Android應用程序會立即獲取通知(低於1秒),但其他時間會在多秒延遲之後發出。
重新啓動應用似乎會導致尚未收到的通知立即顯示。

可能是什麼原因?
這可能是一個錯誤,例如,parse.com服務?

有多少通知可以發送或接收(每單位時間)有限制嗎?

問題發生在自定義的BroadcastReceiver和默認的系統欄通知上。

服務器端JavaScript CloudCode:在科特林

Parse.Cloud.afterSave("Timer", function(request) { 
    // from https://www.parse.com/docs/js/guide#cloud-code 
    console.log("Before Parse.Push.send -- without alert"); 
    var query = new Parse.Query(Parse.Installation); 

    // http://blog.parse.com/announcements/pushing-from-the-javascript-sdk-and-cloud-code/ : 
    Parse.Push.send({ 
    where: query, 
    data: { 
     //alert: "afterSave on a Timer -- Parse.Push.send" 
    } 
    }); 

    console.log("After Parse.Push.send -- without alert"); 
}); 

自定義廣播接收器(但問題也恰好沒有定製的BroadcastReceiver):

override fun onCreate(savedInstanceState: Bundle?) { 
    super<BaseActivity>.onCreate(savedInstanceState) 

    setContentView(R.layout.main_activity) 
    // ... 

    registerReceiver() 
} 

private fun registerReceiver() { 
    val intentFilter = IntentFilter() 
    intentFilter.addAction("com.parse.push.intent.RECEIVE") 

    registerReceiver(MyBroadcastReceiver(), intentFilter) 
} 

inner class MyBroadcastReceiver : BroadcastReceiver() { 
    override fun onReceive(context: Context, intent: Intent) { 
     Toast.makeText(context, "MyBroadcastReceiver 2: onReceive: " 
       + context + ";" + intent, Toast.LENGTH_SHORT).show() 

     loadTimers() 
    } 

} 

我們使用一個非付費解析。 com目前的帳戶。這可能會影響對推送通知的反應的及時性嗎?

編輯:如果您認爲使用推送通知來觸發近實時項目更新/同步不是一個好主意(無論是在一般還是在parse.com中),那也是一個有價值的答案,尤其是如果另一種方法是提出了...

+0

我只得到了同樣的問題,當我測試小米手機的推動。 – iForests

+3

我不認爲有即時傳送推送通知的任何保證。 – nasch

+0

@nasch例如,如果你可以用某種文章來支持它,你可以在這裏把它作爲一個答案。 – KarolDepka

回答

1

在karolvrn的建議,這是我的答案:

我不認爲有推送通知的即時交貨的任何保證。

https://developers.google.com/cloud-messaging/concept-options#setting-the-priority-of-a-message

您有下游 消息分配優先級交付兩種選擇:正常和高優先級。高和正常 優先郵件的傳遞是這樣的:

  • 高優先級。 GCM 嘗試立即提供高優先級的消息,讓GCM服務喚醒一個沉睡的設備時 可能和打開網絡連接到你的應用服務器...
  • 普通優先級。這是消息傳遞的默認優先級...

我強調「嘗試」,這意味着它不保證該信息將被立即傳遞。

這裏的另一個開發與可靠性問題經驗GCM:

https://eladnava.com/google-cloud-messaging-extremely-unreliable/