我看过一些帖子提到GCM消息是作为有序广播发送的,并且" android:priority"因此,属性可用于控制哪个(多个)接收器应首先处理广播。
例如:GCM BroadcastReceiver setResultCode use
但是,我无法从Google找到任何证实这一点的文档。无论我在不同的GCM接收器上设置了哪个优先级,广播似乎都是无序的。
GCM消息是否真的按订购广播发送?
答案 0 :(得分:1)
我想我已经找到了为什么我无法控制我的广播(这让我相信没有订购GCM广播):我忘了拨打abortBroadcast()来阻止第二台广播接收机处理广播消息:
http://developer.android.com/reference/android/content/BroadcastReceiver.html#abortBroadcast():
设置指示此接收器应中止当前广播的标志;仅适用于通过Context.sendOrderedBroadcast发送的广播。这将阻止任何其他广播接收机接收广播。
因此,当我调用abortBroadcast()时,只有第一个接收者处理广播。
答案 1 :(得分:0)
来自Google Documentation
带有效负载的#"消息"不仅仅是一个" ping"移动应用程序联系服务器以获取数据。例如,在上述IM应用程序中,您希望传递每条消息,因为每条消息都有不同的内容。要指定不可折叠的消息,只需省略collapse_key参数即可。因此,GCM将单独发送每条消息。请注意,不保证交货顺序。