0

我正在研究为推送通知设计和开发服务,并试图了解 Apple 应用程序在注册推送通知和存储令牌时的处理顺序。我目前正在开发的是一项服务,它允许订阅我们服务器上特定处理发生的个别更改。当它们发生时,电话用户可能会收到“A”、“B”或“C”类型的消息。如果需要,电话用户必须单独“订阅”每种类型。否则他们可以忽略它而不订阅。

因此,电话 4 上的用户 Fred 启动我们的应用程序,登录,然后能够打开或关闭对作为推送通知发送的事件的订阅。

因此,我需要将 Fred 登录的详细信息与 Phone #4 的设备令牌以及特定订阅相关联。

所以我特别重要的问题是。

当手机连接到 APNS 服务器以获取其设备令牌时,这是在应用程序启动时自动进行的吗?或者这可以在以后的步骤中启动吗?即,在通过我们的应用程序的登录屏幕之后。

我们可以(我们被允许)将设备令牌存储在手机上的应用程序数据存储中吗?或者,应用程序是否应该在每次运行应用程序时都连接到 APNS 服务器?

应用程序如何知道它是否已经调用了 APNS 服务器并检索了令牌,或者如上所述,它是否应该在应用程序运行时调用 APNS 服务器?

我们可以(是否允许)在应用程序运行时将令牌存储在应用程序的内存中,以便我们可以正确订阅和取消订阅特定消息?

我们还需要能够列出特定用户在其所有设备上可能拥有的所有订阅,以便用户可以移除旧设备(如果他们更换手机)。或者我们是否可以依赖从调用 APNS 返回的数据——当我们尝试推送通知时——来通知我们设备令牌不再有效?

或者有没有更好的方法把这一切联系在一起?

4

1 回答 1

1

当手机连接到 APNS 服务器以获取其设备令牌时,这是在应用程序启动时自动进行的吗?或者这可以在以后的步骤中启动吗?即,登录我们的应用程序后。

应用启动后,应用通过调用 registerForRemoteNotificationTypes 获取令牌。这将提示用户授予权限,如果授予权限,则使用设备令牌调用回调。

我们可以(我们被允许)将设备令牌存储在手机上的应用程序数据存储中吗?或者,应用程序是否应该在每次运行应用程序时都连接到 APNS 服务器?

您需要构建一个APN 提供程序,它是一个调用苹果发送推送的 Web 服务器。与令牌有关的事情是将其发布到使用 APN 提供程序的服务器上。该应用程序不会连接到 APNS,您的提供商会,并且它会在推送发送时进行。

我们可以(是否允许)在应用程序运行时将令牌存储在应用程序的内存中,以便我们可以正确订阅和取消订阅特定消息?

您可以将令牌保留在客户端上,但实际上并不需要。调用 APN 的是您的 Web 服务,因此需要注意用户的订阅偏好。

我们还需要能够列出特定用户在其所有设备上可能拥有的所有订阅,以便用户可以移除旧设备(如果他们更换手机)。或者我们是否可以依赖从调用 APNS 返回的数据——当我们尝试推送通知时——来通知我们设备令牌不再有效?

APN 还提供您批量调用的反馈服务,该服务返回不再有效的设备令牌。您不仅可以使用此服务,而且必须. 苹果会对重复发送到不再有效设备的应用程序感到愤怒。

或者有没有更好的方法把这一切联系在一起?

是的! Parse.com为客户端代码提供了一个很好的包装器,提供提供者和反馈服务,将单个设备的概念抽象为“通道”的概念,这听起来就像您需要多种通知类型 A、B、C、提供超级简单的分步设置,并为 iOS 加载其他有用的云服务。(我不是附属的,而是一个大粉丝)。

于 2012-04-23T05:03:09.407 回答