Esm*_*eem 10 android whatsapp google-cloud-messaging
我正在尝试使用GCM服务,除了GCM推送通知或提供有效负载的长时间延迟之外,每件事情都可以......有时我需要花5分钟接收通知或有效负载.我需要立即交付...我知道GCM的角色,等到其他设备上线,但在我的情况下,我持有两台设备,他们在线,但我得到了延迟通知!
WhatsApp(作为使用GCM的应用程序的示例)如何克服这个问题..并立即发送?
[即(类型的消息:打字,在线 - 上次见过)不能延迟...]
GCM延迟推送已知问题:这个问题 我的问题是:使用GCM的其他应用程序如何克服此问题
pul*_*ion 11
大玩家
让我们从规模的角度关注 WhatsApp。它们的规模是全球性的,是市场份额最大的公司之一。对于这样的玩家,无论情况如何,都必须提供一致且流畅的用户体验。这意味着像我们这样的“小鱼开发商”被大鱼公司留给了预先定义的规则。有时,正是实现具有足够的挑战性,以至于许多小时间开发人员不得不处理任何可用的事情。
我想以WhatsApp的Push Notification为例来说明上面的内容。
首先,我们必须停止将推送通知与 Google 的服务(即 Google Play 服务)排他性地关联起来。没有 Google Play 服务的设备会不会收到推送通知?不,当然可以——尝试关注推送通知的核心机制
推送通知如何工作 - 套接字!
与 HTTP 等采用客户端-服务器架构并且是单向协议(服务器无法自行发起通信)的协议相反,普通套接字可以实现双向通信。
您想通过套接字实现自己的文件传输协议吗?你可以!
您想通过套接字实现自己的聊天协议吗?你可以!
您想通过套接字实现自己的推送通知协议吗?你可以!
套接字是网络通信的画布。你几乎可以做任何事情。我们个人已经在我们的组织中开发了一个自定义的请求-响应协议。
多种实现
不要坚持使用默认的 GCM/FCM 通知消息协议或实现。您可以部署一种机制来维护与设备的持久套接字连接,并且可以侦听服务器想要推送的任何内容。
来自 WhatsApp 的最新版本 (2.19.203):
请注意,存在 FCM 的相关权限。
疑似套接字实现: https : //android.stackexchange.com/questions/43970/how-is-whatsapp-able-to-receive-messages-when-not-in-use
基于 XMPP 的推送通知
来自,https://www.quora.com/Does-WhatsApp-use-GCM-to-exchange-messages
不,whatsapp 不使用 GCM [不完全正确]。它改用名为 FunXMPP 的 XMPP 修改版本。它更改消息帧中的 XML 关键字以节省带宽,因为它的用户主要是移动网络用户,没有良好的互联网连接。可以在这里找到替代品:mgp25/Chat-API(虽然我不是作者)
他们甚至要求将他们使用的任何端口(自定义)列入白名单。
所以,WhatsApp 做到了。脸书做到了。谷歌做到了。很多这样的公司都是这样做的。您也可以(在一定程度上)使用 Ejjaberd、Openfire 或其他一些技术并为此具有适当的客户端实现来做到这一点。
中文ROM
一些中文 ROM 更进一步,从根本上改变了 Android 中管理内存和进程的方式。例如,在 Oppo 中,如果应用程序没有打开自动启动,一旦您的应用程序被杀死,它就不会让您做任何事情。除了希望用户再次打开该应用程序之外,不希望有任何体验。在这些情况下,这些 OEM 有选择地将 WhatsApp、Facebook、谷歌和其他玩家列入白名单。那么,谁受苦?
我们。时期。
ssc*_*mid 10
发送通知时,您可以将priority-parameter设置为"high".
来自文档:
默认情况下,邮件以正常优先级发送.普通优先级可优化客户端应用程序的电池消耗,除非需要立即交付,否则应使用该优先级.对于具有正常优先级的消息,应用程序可能会收到具有未指定延迟的消息.
当以高优先级发送消息时,会立即发送消息,应用程序可以唤醒正在睡眠的设备并打开与服务器的网络连接.
我知道这个答案来得很晚,但如果你仍然面对这个问题(或其他任何人)请告诉我它是否有帮助.
| 归档时间: |
|
| 查看次数: |
4860 次 |
| 最近记录: |