我正在研究设计和开发推送通知服务,并试图了解注册推送通知和令牌存储时Apple App中的处理顺序。 我目前正在开发的是一种服务,允许订阅在我们的服务器上进行特定处理的个别更改。 当它们发生时,电话用户可能会收到“A”,“B”或“C”类型的消息。 如果电话用户需要,他们必须单独“订阅”这些类型中的每一种。否则他们可以忽略它而不是订阅。
因此,用户Fred在电话号码4上启动我们的应用程序,登录,然后能够打开或关闭作为推送通知发送的事件的订阅。
所以我需要将Fred的登录信息与Phone#4的设备令牌绑定,并附上特定的订阅。
所以我特别重要的问题是。
当手机连接到APNS服务器以获取其设备令牌时,这是应用程序启动时的自动吗?或者这可以在以后的步骤中启动?即,在浏览我们的应用程序的登录屏幕后。
我们(可以允许)将设备令牌存储在App数据存储中的手机上吗?或者,每次应用程序运行时应用程序是否应连接到APNS服务器?
应用程序如何知道它是否已经被称为APNS服务器并检索了令牌,或者如上所述,它是否应该在应用程序运行时调用APNS服务器?
我们(我们是否允许)在运行时将令牌存储在应用程序的内存中,以便我们可以正确订阅和取消订阅特定邮件?
我们还需要能够列出特定用户可能在其所有设备上拥有的所有订阅,以便用户可以删除旧设备(如果他们更换手机)。或者,当我们尝试推送通知时,我们是否可以依赖来自APNS呼叫的数据 - 通知我们设备令牌不再有效?
还是有更好的方法将这一切联系在一起吗?
答案 0 :(得分:1)
当手机连接到APNS服务器以获取其设备令牌时,是 这个自动启动app?或者这可以在以后的步骤中启动? 即,登录我们的应用程序后。
应用启动后,应用会通过调用registerForRemoteNotificationTypes获取令牌。这将提示用户获得权限,如果授予权限,则使用设备令牌调用回调。
我们(我们是否允许)将设备令牌存储在手机中 应用数据存储?或者,应用程序是否应该连接到APNS服务器 每次运行应用程序?
您需要构建一个APN provider,这是一个调用apple来发送推送的Web服务器。与令牌有关的事情是将其发布到使用APN提供程序的服务器。该应用程序不会连接到APNS,您的提供商会这样做,而且它会在推送时发送。
我们(我们是否可以)将令牌存储在App的内存中 运行,所以我们可以正确订阅和取消订阅特定 消息?
您可以将令牌保留在客户端上,但实际上并不需要。这是您的Web服务调用APN,因此需要了解用户的订阅首选项。
我们还需要能够列出a的所有订阅 特定用户可能拥有所有设备,以便用户可以 删除旧设备(如果他们更换手机)。或者我们可以依赖数据 从呼叫回到APNS - 当我们尝试推送通知时 - 通知我们设备令牌不再有效?
APN还提供您批量调用的反馈服务,该服务返回不再有效的设备令牌。不仅可以您使用此服务,但必须。 Apple会对那些反复发送到不再有效设备的应用感到生气。
还是有更好的方法将这一切联系在一起吗?
是的! Parse.com为客户端代码提供了一个很好的包装器,提供者和反馈服务,将单个设备的想法抽象为“通道”的概念,这听起来就像您需要多种通知类型A,B, C,提供了一个超级简单的逐步设置,以及为iOS提供的其他有用的云服务。 (我不是附属的,但是很忠实的粉丝)。