Whatsapp的Web版本如何在iOS设备上运行,并在30秒内closures应用程序?

现在,对于那些不知道的人,可以去https://web.whatsapp.com/和通过交换QR码和通过应用程序的networking扩展聊天同步你的Whatsapp聊天。

我对他们如何进行初始握手(可能与whatsapp服务器通信)以及他们如何快速同步数据(可能正在使用直接从设备到客户端的Open套接字)感兴趣。

我很好奇这个应用程序如何在iOS的后台工作的 。 AFAIK运行后台Intent Service非常简单。 但不适用于iOS。 应用程序正常closures后,iOS只允许长达30秒。

1)我试图崩溃的应用程序(向上滑动)(仍然网页版本正常运行)

2)我禁用Background App refresh Web版本并没有停止。

3)即使禁用Notifications仍然Web版本正常工作。

4)当Google Maps给你指示应用程序在BG中运行的指示时,他们也没有Blue bar

5)他们是否使用虚拟Geo Fencing来保持他们的活力? (但那也需要BG App Refresh)

是否引入了iOS 8上的一些新function,但我不知道

正如一个侧面说明,苹果在iOS 10中引入了通知服务扩展点,可以用来实现这一点。 以下内容仅适用于iOS 9.x或更低版本。


iOS中的任何应用程序都不能长时间保持活动状态,或者保证通过远程通知(除了使用VoIP背景模式(OT:和IIRC蓝牙背景模式))唤醒。

  • 一个应用程序在applicationDidEnterBackground:上只有5秒的运行时间applicationDidEnterBackground:在被放置在后台之后,除非它被注册了任何背景模式或任务。 如果该代理方法耗尽时间,应用程序将被终止。
  • @xoail提到的后台任务模型具有特定于应用程序的系统时间限制(最多30秒…?),无法扩展。 这是一个应用程序完成其目前的工作,如上传媒体,在被暂停之前。 自iOS 7.0以来,后台传输服务是长时间运行文件传输的替代scheme。
  • 观察到无声远程通知只能在充电器和Wi-Fi上始终被触发,否则一直被iOS限制。 所以这是不确定的 – 更不用说可以通过翻转应用程序的后台应用程序刷新开关来切断这个事实。
  • VoIP背景模式(在iOS 8和更高版本中)保证在收到来自APN的VoIP通知时调用应用程序的处理程序。 但“应用程序审查指南”明确指出,背景模式只能用于其预期目的。

因此,苹果放弃WhatsApp使用VoIP背景模式来实现除WhatsApp Call以外的目的,或者WhatsApp恰好摆脱“使用手机同步”体系结构,为iPhone做些新的事情。

根据文档,该应用程序可以保持在对应用程序执行有限更新的后台。 您可以继续逐个扩展后台进程。 研究执行有限长度的任务。 我认为从后台查杀应用程序仍然执行系统注册的操作。

WhatsApp的一些聪明的networking会话令牌+后台应用程序令牌生成,以保持会议有效。

正如Steven Darbey在#32112433中提到的,这很可能是使用新的iOS 8 PushKit服务实现的,该服务包括VoIP服务通知types,允许应用程序从后台恢复。 对于非VoIP目的的API滥用,但苹果显然视而不见。

https://developer.apple.com/library/prerelease/ios/documentation/Performance/Conceptual/EnergyGuide-iOS/OptimizeVoIP.html

Interesting Posts