3

在 Widows Phone Store 上的 Whatsapp 最新更新后,我注意到现在,一旦他们在我的设备上显示消息敬酒,他们就会将消息标记为已传递(通知发件人消息已到达我的设备)。

在我让 toast 通知消失后,我关闭了所有数据连接并打开了 Whatsapp,并在我的应用程序中发现了该特定消息。这在 wp7 和 wp8 设备上始终如一地发生。即使我禁用了后台代理,也会发生这种情况!除了应用程序的后台代理不会一直运行。

所以我的问题是,在 Windows Phone 平台上,不允许应用程序一直在后台运行,Whatsapp 应用程序如何获取这些消息?当它不在前台时,它是否使用任何特定的 api/hack 来获取(在应用程序中)这些消息。

4

3 回答 3

4

您提出的问题有两个部分:一个针对 wp7,另一个针对 wp8。我会一一分析。

视窗电话 7

根据我的研究,我发现 whatsapp 仍在 wp7 设备上使用音频流 api 在后台流式传输消息,即当应用程序未运行时。Whatsapp 因使用此 API 而受到批评,因为不断使用此 API 会导致电池耗尽并妨碍用户的音乐体验。

视窗电话 8

一旦 whatsapp 迁移到 wp8,他们就停止使用音频 API 并迁移到 VOIP API。请注意,whatsapp 不会出于任何目的使用 VOIP,但它们的清单显示了 VOIP api 的使用,并且在阅读了许多文章后,我得出的结论是,他们正在使用此 API 来激活后台代理并在后台池消息。

在发送类型 4 的原始推送时,VOIP 的后台代理被激活,您实际上可以在其中执行任何操作,从读取有效负载到建立新的套接字连接,但受限于某些 API 的使用

我还发现,即使用户禁用应用程序的 bg 代理,一些基本的 bg 代理仍会继续运行,例如音频流 API 和 VOIP API 中的 bg 代理。

我希望这回答了你的问题。

于 2014-02-03T11:11:35.243 回答
0

通过这个链接

Windows Phone 的推送通知

能帮助你理解的是

服务器为每个 URI 维护最多 30 个通知(无论类型如何)。一旦达到 30 的限制,所有发送到服务器的新消息都将被丢弃,直到设备重新连接并且可以刷新队列。

于 2013-09-12T07:19:34.430 回答
0

在windows phone 中有一种叫做原始通知的东西,这些与推送通知不同,推送通知显示一个通知,但是原始通知会触发一个后台任务,该任务可以在某些api 限制下运行大约15 秒。(我认为,我不确定持续时间),我认为 whatsapp 的作用是下载消息并将其保存在设备中维护的本地数据库中。打开 whatsapp 时,它将读取本地数据库并与服务器同步。

如果我错了,请纠正我。

于 2015-08-16T10:11:47.467 回答