При тестировании push-уведомлений parse.com (отправляемых из CloudCode после сохранения) происходит что-то странное.
Иногда приложение 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");
});
Пользовательский широковещательный приемник в Kotlin (но проблема возникает и без пользовательского 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()
}
}
На данный момент мы используем бесплатную учетную запись parse.com. Могло ли это повлиять на своевременность реакции на push-уведомления?
Редактировать: если вы считаете, что использование push-уведомлений для запуска обновлений/синхронизации элементов в режиме, близком к реальному времени, не является хорошей идеей (как в целом, так и на parse.com), это также будет ценным ответом, особенно если предлагается альтернатива ...