【问题标题】:Push Notifications for iPhone - accepted methodolgyiPhone 推送通知 - 接受的方法
【发布时间】:2012-04-23 04:28:18
【问题描述】:

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

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

所以我需要将 Fred 的登录信息与电话 #4 的设备令牌以及特定订阅相关联。

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

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

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

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

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

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

或者有什么更好的方法可以将这一切联系在一起?

【问题讨论】:

    标签: iphone push-notification


    【解决方案1】:

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

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

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

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

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

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

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

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

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

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

    【讨论】:

    • “应用程序启动后”有点宽泛。您能否回答这是否可以延迟,直到进入应用程序,例如在第三页屏幕上?
    • 谢谢,我很清楚我们需要建立一个 APN 提供商。我想我在描述我们正在构建服务时已经涵盖了这一点。我们是将令牌存储在手机上、应用程序的数据存储中,还是我们可以随时调用 APNS 服务器来检索令牌?应用程序如何知道是否已经这样做了?
    • 在请求推送订阅registerForRemoteNotificationsOfType: 后,这是您将在 AppDelegate 类(与 -didFinishLaunchingWithOptions: 一样)上获得的生命周期事件的一部分。注册远程通知后,您将获得令牌,因此您可以在登录之前或之后执行此操作。请记住,这不是永久令牌,您需要在服务器的令牌注册表更改时更新它。
    • 1) 通过注册获得token。只要您认为合适,您就可以进行登记。 2) 如果用户允许,令牌会在回调中出现。无需将其存储在手机或苹果上。将其存储在您的服务中。操作系统记录用户权限,并会在没有ui的注册时再次给你令牌,但你在手机上并不需要它。
    • 感谢 Sveinung。令牌不是永久性的这一事实非常重要,因为即使令牌更改,我们的订阅也需要维护到设备上。这意味着我们还必须存储 UDID。如果用户在设备上进行了恢复出厂设置,那么他们实际上已经删除了我们的应用,这很好。
    猜你喜欢
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多