121

iOS“推送”通知如何在不需要轮询服务器的情况下传递到特定设备?

例如,假设我在 Facebook 上收到一条新消息。Facebook 通知 Apple 我的设备应该收到这样的通知。但是 Apple 是如何知道将消息推送到哪个设备/IP 的呢?

4

5 回答 5

107

每个设备都可以使用自己唯一的设备令牌更新数据。这张照片说明了一切。.

在此处输入图像描述

于 2015-06-03T10:46:59.663 回答
62

这对我来说太多了,无法发表评论。

从文档。

Apple 推送通知服务 (APN) 将推送通知传播到已注册应用程序以接收这些通知的设备。每台设备都与服务建立认证和加密的 IP 连接,并通过此持久连接接收通知。提供者通过持久且安全的通道与 APN 连接,同时监控为其客户端应用程序输入的数据。当应用程序的新数据到达时,提供者准备并通过通道向 APNs 发送通知,APNs 将通知推送到目标设备。

我建议阅读文档以获取更多信息以及如何使用和配置。这一切都在那里。

推送通知

于 2013-06-23T16:09:31.400 回答
25

我创建了一个信息图来解释推送通知的工作流程。希望这会有所帮助。

在此处输入图像描述

于 2016-01-04T08:55:40.100 回答
15

设备不会继续轮询服务器以获取推送通知。

为简单起见,请考虑将 iPhone 连接到互联网。在连接到互联网时,iPhone 会建立与 Apple Push Notifications 服务器的连接,此连接是开放连接,这意味着数据可以在数据到达服务器的那一刻从服务器发送到 iPhone。

Apple 不使用 HTTP 协议进行推送通知,但如果您了解 HTTP 协议,它几乎是一种类似的方法。

http://en.wikipedia.org/wiki/Push_technology#HTTP_server_push

于 2014-11-13T14:44:15.940 回答
2

这篇文章中对推送通知有一个非常好的解释。

在 iOS 中,应用程序不能在后台做很多事情。应用程序只允许执行有限的活动集,因此可以节省电池寿命。

但是,如果发生了一些有趣的事情,并且您希望让用户知道这一点,即使他们目前没有使用您的应用程序,该怎么办?

于 2014-12-08T22:29:31.703 回答