[英]Parse.com push notifications coming delayed or only after Android app restart
测试parse.com推送通知(从AfterSave上的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帐户。 这会影响对推送通知的及时性吗?
编辑:如果您认为,使用推送通知来触发近乎实时的项目更新/同步不是一个好主意(无论是在一般情况下还是在parse.com中),那也将是一个有价值的答案,尤其是如果提出了替代方案...
根据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/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.