移动推送通知使用哪种协议? (答案):移动推送通知使用的协议是什么?

4

移动推送通知使用的协议是什么?

以安卓为例。 首先,从第三方服务器向Firebase服务器发起HTTP请求。 接下来的问题是: Firebase服务器如何从众多手机中选择所需的手机并发送推送通知?

当然,我知道我可以不用担心这个问题就能发送推送通知。 但是,我很好奇。

在TCP/IP上,通信需要IP地址和MAC地址,但是如何将推送通知发送到手机呢?

学习所用的链接

谢谢。


1
你看过吗:Google I/O 2010-构建Android推送应用程序 - Morrison Chang
非常感谢。我现在在办公室,回家后会看一下。 - fsk5304
1个回答

12
在iOS上,当应用程序注册远程通知时,它会收到一个名为“token”的标记。苹果将此标记存储在其数据库中,与设备的实际唯一标识符相对应。
iOS设备本身保持与苹果服务器上5223端口的持久TCP连接。协议本身是专有的,属于苹果。
当向苹果服务器发送推送通知时,它们会交叉引用推送中指定的标记,以确定推送所针对的实际设备。
然后,在已建立的TCP连接上向设备传递通知。
如果设备当前未连接(例如处于飞行模式),则保留有效负载直至重新连接或因过期而丢弃该消息。
我想安卓系统也会以类似的方式工作。

3
这正是我寻找的答案。非常感谢。我还有几个问题,请见谅我的知识匮乏。①该设备本身会保持一个永久的TCP连接。这是否会导致不必要的通信和耗电?②如果在设备上安装了使用多个推送通知的应用程序,那么维护该应用程序的TCP连接数量会增加吗? - fsk5304
1
当从飞行模式返回时,手机会重新建立与苹果服务器的永久TCP连接吗?如果应用程序没有运行,我感觉TCP连接没有建立。我再次深表歉意。 提前致谢。 - fsk5304
2
iOS 设备会尝试保持连接。当它重新联网时,它会建立连接。这与任何可能正在运行的应用程序无关。连接是由 iOS 自身中的任务完成的。 - Paulw11
非常感谢!你的回答让我很开心。 - fsk5304
2
抱歉,我错过了你的前两个问题。1-维护TCP连接需要偶尔进行保持活动,但通常不会消耗太多电力。推送实际发送的数据量非常小。手机正在网络上执行定期任务,我相信苹果利用无线电开机来执行其中许多任务。2.只需要一个连接,因为通知不直接传递给应用程序。iOS接收并处理它们。 - Paulw11
再次感谢您。 这正是您的答案所寻找的。 为什么您如此详细?如果可能的话,我想成为您的门徒并向您学习。 非常感谢您。 - fsk5304

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接