我需要Android中的推送逻辑消息广播功能,将数据消息推送到订阅内容的其他应用程序。订阅应用程序应注册过滤器设置和权限,以便它们只接收他们感兴趣的数据。这样可以确保不会不断进行不必要的传输,因为这会浪费资源。
Android中是否有任何现成的机制来实现这一目标?
我查看了意向广播,但似乎我将数据打包成一个parcelable我没有内置的过滤功能。我将始终必须将所有数据发送到一个parcelable然后解压缩并提取我感兴趣的一小部分(?)
然后我查看了ContentProviders,但似乎他们没有将消息推送到收件人,而是使用类似sql的查询字符串查询要获取的内容。 ContentProvider可以使用查询作为过滤器将邮件推送到已注册的收件人吗?
也许是一个复杂的问题要回答,但我试一试;我应该使用哪种机制,还是我必须自己编写?
答案 0 :(得分:1)
1您可以使用意图来广播用于在应用中过滤的密钥,然后感兴趣的应用可以使用内容提供商来获取完整数据。 2对不同的数据集使用不同的意图?
答案 1 :(得分:1)
Android中是否有任何现成的机制来实现这一目标?
这取决于您希望考虑的“准备使用”问题的哪个部分。通过广播Intents
处理将数据推送到另一个应用程序。
我查看了意向广播,但似乎我将数据打包成一个parcelable我没有内置的过滤功能。我将始终必须将所有数据发送到一个parcelable然后解压缩并提取我感兴趣的一小部分(?)
您的应用会进行过滤,然后发送比赛广播。这是基于代理的“发布/订阅”推送模型采用的典型方法:代理进行过滤,仅通过通信信道向订户发送相关消息。例如,GCM不会将每个设备的每个消息发送到每个设备,并期望设备自己进行过滤 - GCM服务器进行过滤,然后将特定消息发送到特定设备。
在某些情况下,您可以利用IntentFilter
功能为您进行过滤。例如,假设消息确实代表一个文件。文件具有MIME类型。您可以在正在广播的Intent
中包含文件的MIME类型,接收者可以通过其过滤器指定他们感兴趣的MIME类型。接收方只会从相关广播中获取消息。
但是,对于更多任意类型的订阅(例如,“向我发送在某些JSON编码对象中具有特定值的所有消息”),您必须自己实现过滤。
ContentProvider可以使用查询作为过滤器将邮件推送到已注册的收件人吗?
不,抱歉。