【问题标题】:XMPP client on android: potential battery issuesAndroid 上的 XMPP 客户端:潜在的电池问题
【发布时间】:2015-02-09 18:33:17
【问题描述】:

我是 android 开发的新手。我正在实现一个 XMPP 客户端来与我的服务器上运行的 XJabberd 服务通信。我相信它将保持与服务器的持久连接(afaik)需要定期发送保持活动消息。

这是对电池寿命的担忧吗?我相信确实如此,而 GCM 是减少这种影响的方法。但是,GCM 不保证 1. 立即交货和 2. 维护设备离线时发送的消息

是否有任何其他替代/方法可以减少对电池的影响。任何解释 Whatsapp 应用程序工程方面的文档?

【问题讨论】:

  • WhatsApp 不是 XMPP。通过完全控制服务器,他们可以很好地使用推送通知而不会丢失消息。
  • 问题是您多久会通过发送服务器 ping 或空白保持活动来检查连接。这是造成持久连接导致电池消耗的主要因素。
  • @323go 我相信它一定是 XMPP 的一些变体。尽管如此,正如 Flow 所提到的,XMPP 客户端将需要继续向服务器发送保持活动消息,但我从未在我的最耗电应用程序中看到 Whatsapp。这是否意味着与其他应用相比,电池消耗是最小的
  • 您错过了我评论的要点——像 WhatsApp 这样的私有筒仓不受的限制,与您遵循 XMPP 等标准时的限制相同。如果您可以完全控制服务器的行为方式,那么您不需要让客户端频繁地保持连接处于活动状态。客户端可以通过推送通知收到警报,或者可能会保持彗星连接以实现低延迟响应。
  • 我想我现在明白你的意思了。只是为了确认我的理解是否正确,我相信您的建议是:为了节省电池,无需一直保持连接。但是,服务器可以发送推送通知(比如使用 GCM),并且在收到此通知时,客户端可以恢复连接。但是,这并不能保证即时通信。这对我来说听起来不错。谢谢!

标签: android xmpp battery whatsapp


【解决方案1】:

我相信它将与 服务器(afaik)需要定期发送保持活动状态 消息。

你“不需要”那个。根据我的经验,每 30 分钟向服务器发送一次 XMPP Ping 就足够了如果在那段时间内没有任何活动。 Smack 的 ServerPingWithAlarmManager 会自动为您执行此操作。

您总是需要在希望“陈旧”连接不被检测到多长时间和测试 TCP 连接是否仍然有效之间进行权衡。没有任何机制或实体可以避免为其中任何一个做出决定,甚至 GCM 或 WhatsApp。

【讨论】:

    【解决方案2】:

    立即发货

    消息的维护

    CGM 应该用于发送关于现有消息的通知而不是消息本身。 您的服务器应维护消息,并使用 GCM 进行通知。即使用户不会收到通知,它也会在下一次 XMPP 连接时收到消息。

    【讨论】:

      猜你喜欢
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      相关资源
      最近更新 更多