j p*_*mel 335 android push-notification
我最近了解到iPhone应用程序能够接收几乎即时通知应用程序的应用程序 通知.
这是以推送通知的形式提供的,这是一种定制的协议,它始终保持与iPhone的数据连接,并将二进制数据包发送到应用程序,从服务器应用程序发送到手机应用程序0.5到5秒之间,可以非常快速地弹出警报响应时间.这是作为数据而不是SMS发送的,这些数据包作为数据计划的一部分而非作为传入消息收费.
我想知道,使用Android,是否有类似的工具,或者是否可以使用Android API实现与此类似的东西.为了澄清,我将类似定义为:
我很欣赏这个应用程序可能是基于拉取的,HTTP请求/响应风格,但理想情况下我不想仅仅为了检查通知而进行大量轮询; 除此之外,它就像滴水排放数据计划.
j p*_*mel 211
Firebase Cloud Messaging FCM FAQ是GCM的新版本.它继承了GCM的核心基础架构,可在Android,iOS和Chrome上可靠地传递消息.然而,他们将继续支持GCM,因为许多开发人员现在使用GCM SDK来处理通知,而客户端应用程序升级需要时间.
截至2012年6月26日,Google Cloud Messaging是向设备上运行的应用程序发送邮件的首选方式.
以前(现在已弃用),该服务称为Cloud To Device Messaging.
fle*_*esh 46
XMPP是一个很好的解决方案.我已将它用于推送启用的实时Android应用程序.XMPP功能强大,高度可扩展,易于集成和使用.
有大量免费的XMPP服务器(虽然不礼貌,你不应该滥用它们),并且有一些开源服务器可以在你自己的盒子上运行.OpenFire是一个很好的选择.
你想要的库不是Smack,如上所述,它是aSmack.但请注意,这是一个构建环境 - 您必须构建库.
这是我对XMPP解决方案的电池寿命影响所做的计算:
Android客户端必须通过定期唤醒以将心跳发送到XMPP服务器来维护持久性TCP连接.
这显然在功率使用方面造成了成本.下面提供了对此费用的估算:
- 使用1400mAh电池(Nexus One和HTC Desire提供)
- 连接到3G网络的空闲设备使用大约5mA
- 唤醒,心跳,睡眠周期每5分钟发生一次,需要3秒钟才能完成并使用300mA
- 因此,每小时电池使用成本是:
- 36秒300mA = 3mAh发送心跳
- 空闲时3600秒5mA = 5mAh
- 4:95 + 3 = 7:95mAh合计
- 1400mAh电池在闲置时持续约11.6天,在运行应用程序时持续7.3天,这意味着电池寿命减少约37%.
- 然而,由于设备很少完全闲置,电池寿命减少37%代表了绝对最糟糕的情况.
dal*_*ane 32
我最近开始使用MQTT http://mqtt.org for Android作为一种方式来做你想要的事情(即不是短信而是数据驱动,几乎是即时消息传递,可扩展,不是轮询等)
我有一篇博客文章,附有关于此的背景信息,以防它有用http://dalelane.co.uk/blog/?p=938
(注意:MQTT是一种IBM技术,我应该指出我在IBM工作.)
Wil*_* L. 12
谷歌正在贬低C2DM,但取而代之的是他们推出的GCM(谷歌云消息传递),我不认为他们的任何配额及其免费!它确实需要Android 2.2+!http://developer.android.com/guide/google/gcm/index.html
如果您可以依赖Google库作为目标市场,那么您可能希望重新使用GTalk功能(在现有用户名上注册资源 - 在广播接收器进入时拦截消息).
如果没有,我希望你不能,那么你将捆绑自己的XMPP版本.这很痛苦,但如果XMPP作为独立库单独捆绑,可能会更容易.
您也可以考虑PubSubHubub,但我不知道它的网络使用情况.我相信它是在XMPP的基础上构建的.
我一直在研究这个问题,jamesh推荐的PubSubHubBub不是一个选项.PubSubHubBub用于服务器到服务器的通信
"我在NAT后面.我可以订购一个集线器吗?集线器无法连接到我."
/匿名
不,PSHB是服务器到服务器协议.如果你是NAT背后,你真的不是一个服务器.虽然我们已经开始考虑可选的PSHB扩展的想法,为这些客户端执行挂起("长轮询")和/或消息框轮询,但它不在核心规范中.核心规范仅限服务器到服务器.
/ Brad Fitzpatrick,旧金山,加利福尼亚州
来源:http://moderator.appspot.com/#15/e=43e1a&t=426ac&f=b0c2d(不可能直接链接)
我得出结论,最简单的方法是使用Comet HTTP推送.这既是一个简单易懂的解决方案,但它也可以重复用于Web应用程序.
由于GTalk是从SDK消失了,这可能是一个好主意,以"标准"的消息推送系统.这样,只需要运行一个服务,只需要打开一个额外的tcp连接.应用程序应使用此服务进行通信,Intents并应首先请求发送和接收服务通知的权限.然后,该服务应通知用户新应用程序想要发送和接收消息.然后,用户将授予或拒绝许可,以便他保持控制权.然后,应用程序将向服务注册操作+类别,以便服务知道如何传递推送的消息.
这是一个好主意吗?
小智 6
为什么不选择XMPP.现在有很多公共服务器可用,包括gtalk,jabber,citadel等.对于Android,有一个SDK也可以命名为SMACK.我们不能说推送通知但是使用XMPP可以保持客户端和服务器之间的连接打开,这将允许双向通信.意味着Android客户端和服务器都可以相互通信.目前这将满足Push in android的需求.我已经实现了一个示例代码,它真的很棒
| 归档时间: |
|
| 查看次数: |
180221 次 |
| 最近记录: |