Parse.com 推送通知延迟或仅在 Android 应用重启后
Posted
技术标签:
【中文标题】Parse.com 推送通知延迟或仅在 Android 应用重启后【英文标题】:Parse.com push notifications coming delayed or only after Android app restart 【发布时间】:2015-06-16 16:36:30 【问题描述】:在测试 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 中),这也是一个有价值的答案,特别是如果提出了替代方案...
【问题讨论】:
我在小米手机上测试推送时遇到同样的问题。 我认为无法保证立即发送推送通知。 @nasch 例如,如果你可以用某种文章来支持它,你可以在 SO 上将它变成一个答案。 【参考方案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/
【讨论】:
以上是关于Parse.com 推送通知延迟或仅在 Android 应用重启后的主要内容,如果未能解决你的问题,请参考以下文章