android上的XMPP客户端:潜在电池问题
我是android开发的新手。我正在实现一个XMPP客户端,以便与服务器上运行的XJabberd服务进行通信。我相信它将保持与服务器的持久连接,afaik将需要定期发送保持活动的消息 这是电池寿命的问题吗?我相信是的,GCM是减少这种影响的方法。但是,GCM不保证 1.立即交付和 2.维护设备脱机时发送的消息 是否有任何其他替代/方法来减少电池冲击。任何解释Whatsapp应用程序工程方面的文件 我相信它将保持与网络的持久连接 afaik需要定期发送保持活动状态的服务器 信息 你不需要那个。根据我的经验,如果在这段时间内没有任何活动,那么每30分钟向服务器发送一次XMPP Ping就足够了。Smack's会自动为你这么做 在您希望过时的连接不被检测到的时间和测试TCP连接是否仍然存在的频率之间,您总是要进行权衡。没有任何机制或实体可以避免为其中任何一个做出决定,即使是GCM或WhatsApp 立即交货 信息的维护android上的XMPP客户端:潜在电池问题,android,xmpp,battery,whatsapp,Android,Xmpp,Battery,Whatsapp,我是android开发的新手。我正在实现一个XMPP客户端,以便与服务器上运行的XJabberd服务进行通信。我相信它将保持与服务器的持久连接,afaik将需要定期发送保持活动的消息 这是电池寿命的问题吗?我相信是的,GCM是减少这种影响的方法。但是,GCM不保证 1.立即交付和 2.维护设备脱机时发送的消息 是否有任何其他替代/方法来减少电池冲击。任何解释Whatsapp应用程序工程方面的文件 我相信它将保持与网络的持久连接 afaik需要定期发送保持活动状态的服务器 信息 你不需要那个。根据
CGM应该用于发送关于现有消息的通知,而不是消息本身。您的服务器应该维护消息,并使用GCM进行通知。即使用户不会收到通知,它也会在下一个XMPP连接上收到消息。WhatsApp不是XMPP。在完全控制服务器的情况下,他们可以在不丢失消息的情况下使用推送通知。问题是您通过发送服务器ping或空格keep alives来检查连接的频率。这是持久连接导致电池消耗的主要原因。我相信这一定是XMPP的某个变体。不管怎样,正如Flow所提到的,XMPP客户端将需要继续向服务器发送保持活动的消息,但我从来没有在我最耗电的应用程序中看到Whatsapp。这是否意味着与其他应用程序相比,它的电池消耗量是最小的?你没有抓住我评论的要点——像WhatsApp这样的私有筒仓不会受到与遵循标准(如XMPP)相同的限制。如果您可以完全控制服务器的运行方式,那么您就不需要让客户端频繁地保持连接的活动状态。客户端可以通过推送通知得到警报,也可以通过comet连接获得低延迟响应。我想我现在明白你的意思了。为了确认我的理解是否正确,我相信你的建议是:为了节省电池,没有必要一直保持连接。然而,服务器可以使用GCM发送推送通知,并且在收到该通知后,客户端可以恢复连接。但是,这不能保证即时通信。这听起来不错。谢谢