我无法使用GCM
,我正在寻找在我的应用程序中支持Push服务的解决方案。
我在PPNS
看到了Parse.com
,我现在正在使用它。我启动一致的websocket
连接并每15分钟检查一次连接。它还会在每次设备唤醒时检查它。
这个PushService
系统对电池的近似影响是什么?
是否有人使用它并对其进行测试?
答案 0 :(得分:1)
TL; DR:这就是推送通知的工作方式。如果它是您应用中的必需功能,请不要担心电池使用情况。
长版: 根据我的理解(实际上,已经使用我自己的MQ在我自己的应用程序上开发),这就是处理推送通知的大多数/所有其他API所做的事情,即它们维持与各种MQ的持久连接(ActiveMQ,MSMQ等) 。)并订阅将“推送”消息发送给客户的特定主题。
所有这些都需要一个WakeLock,以便在手机“休眠”或恢复网络连接的情况下保持此连接,以确保通知已发送。其中一些甚至保持一定程度的持久性,以防邮件在连接丢失时到达,以便他们可以在重新连接时回放消息(尽管这在服务器资源方面是一个昂贵的功能)。
您的用户很可能已经在其中一个/多个已安装的应用程序中拥有WakeLock(WhatsApp,Skype等) - 您可以通过查看WhatsApp所需的权限来检查这一点。其中一个将是“阻止电话从睡觉“)。
这反过来意味着添加一个额外的WakeLock将没有任何实质性影响,因为无论如何电话永远不会真正完成睡眠。如果你的应用程序是唯一具有此WakeLock的应用程序,那么电池将会有实际成本,但除非您确保在队列中保留消息并且仅在用户解锁手机时显示通知,这是不可避免的,这是(1)昂贵的保持你的队列和(2)不是很方便,因为用户将错过通知,除非他们已经积极使用手机,所以后台通知将是错误的。
如果您只是每15分钟左右对服务器执行一次ping操作,我也不会想到电池寿命会受到很大影响(间隔通常是基础消息队列的保持活动时间)。
此链接应该可以帮助您了解本地消息传递的实现方式,并且应该让您知道为什么需要ping以及为什么要维护WakeLock:
http://dalelane.co.uk/blog/?p=1599
编辑:添加TL; DR