将数据从服务器发送到Android设备的最佳方法

new*_*ing 22 android

我正在开发一个需要与服务器双向通信的Android应用程序.通过这种方式,我的意思是服务器或设备可以随时发送消息,消息之间有任意的时间量.将数据从设备发送到服务器是一种常见的,我认为很容易理解的任务,但我不确定最好的方法是从服务器到设备的相反方向.

我认为让设备定期轮询服务器可能是一个坏主意,因为延迟和电池耗尽,但我愿意考虑这个选项.我目前的计划是通过电子邮件到SMS桥接器从服务器发送文本消息,并让我的应用程序运行服务来接收和处理这些消息.

我的问题是,如果有这种情况的最佳实践,并且如果使用短信有一些我没有考虑的缺点.为了这个问题,我想假设用户拥有无限制的文本数据计划,因此按文本付费不会成为问题.

Chr*_*Orr 19

这就是XMPP擅长的.:)

查看Smack Java库,或者获取 Android定制版本的asmack.

对于使用asmack进行长期双向通信的Android应用程序,请参阅BuddyDroid.

编辑,答复如下评论:
在你的情况下,这种方法的好处是,你可以立即推无限量的给客户端,无需短信延迟(或非保证交付).XMPP还为您提供连接安全性,压缩以及在其上层叠您自己的扩展的能力.
另外-我不知道你的目标是谁或这是否适用-这样你就不需要依赖于具有无限的文字计划的用户(当然你需要一个数据计划).

韵律Tigase如果你有兴趣,并寻找一个服务器(有一些开源的).

但是,重新阅读您的问题后,您似乎意味着活动率较低,因此无论您的应用程序是什么,都可能不值得维护(登录,检测连接丢失,重新连接)XMPP会话.

最后..虽然您可以拦截Android设备上收到的短信,但您无法阻止它们显示在用户的短信收件箱中.因此,您可以处理传入的SMS,但是您无法告诉系统丢弃该消息.
我最近发现这不是真的:如果你android:priority在短信收听中定义了一个属性intent-filter,你就会收到一个" 有序广播 ",它允许你在传播到其他应用程序(如短信收件箱)之前取消传入的短信广播.请注意,这仅适用于Android 1.6及更高版本.