iOS APNS:两个通知提供程序服务器是否可以具有相同的设备令牌

Pra*_*yat 5 push-notification apple-push-notifications ios

苹果文档提到,多个提供商通知服务器向 iOS 设备发送推送通知没有限制。

是否有可能,相同的设备令牌可以在部署在两个不同网络中的两个不同提供商服务器中使用,以便随时向同一个应用程序发送推送通知。

Apple APNS 是否允许 2 个不同的提供商服务器使用相同的设备密钥将通知从每个设备发送到一台设备中的同一应用程序?

小智 5

是的,您可以将多个网关(SNS、Urban Airship、PushIO 等)连接到一个平台提供商(APNS、GCM、Amazon 等),最重要的是令牌/注册 ID(特定于设备和应用程序)和证书(如果您使用的是 APNS)。

很多人问,这种情况下,平台方发来的反馈是如何处理的?

由于反馈是幂等的,因此它对于不同的网关应该没有问题;保存在每个网关上的令牌可以在后端应用程序中处理。例如,如果 APNS 向 SNS 发送反馈,表明端点不再有效(可能是因为用户已卸载应用程序),则可以直接从所有其他网关更新/删除令牌。您还可以保持原样,等待 APNS 在向端点发送通知时向其他网关发送反馈,然后在这些网关中相应地更新您的端点列表。这里最需要注意的是,反馈是幂等的,如果 SNS 向端点发送推送通知并收到反馈,则向同一令牌发送推送通知的另一个网关将收到相同的反馈。


Pra*_*yat 1

这是我在使用 APNS 时的经验,这就像一个清单,在您开始在任何环境中测试通知之前,

  1. 证书将决定服务器是否可以连接到 APN。
  2. 根据您的前证书。开发证书或生产
    证书,指向相应的 APNS 沙箱。

    生产沙箱:- 主机名:gateway.push.apple.com,端口:2195

    开发环境:- 主机名:gateway.sandbox.push.apple.com ,端口:2195

  3. 没有限制生产证书只能在一台服务器或一个网络中使用。相同的生产证书可以在多个盒子或多个网络中使用,以向设备上的同一应用程序发送通知。

  4. 最重要的是检查防火墙是否阻止从您的网络到 APNS 开发或生产的连接。因此,对生产和开发环境 APNS 进行 telnet。连接不应被阻止。

  5. 如果防火墙阻止与 APNS 的连接,服务器代码将在发送推送通知时抛出“连接被拒绝”或“连接关闭”异常。

  6. 这是我在 APNS 和证书中看到的最奇怪的行为,因此我损失了 2-3 天。我根据具体情况经历了以下,

    • 服务器指向 APNS 开发环境,证书是“生产”,在向 APNS 发送通知时,有时 服务器会抛出“套接字关闭异常”。
    • 服务器指向 APNS 开发环境,证书为“生产”,向 APNS 发送通知时,服务器日志显示通知已发送到 APNS,但设备不会收到通知。

:) 如果你做了错误的配置,你应该幸运地得到“Socket Closed Exception”。

如果所有配置均正确(例如凭据、防火墙)、正确的证书并指向正确的 APNS 环境,设备将毫无疑问地收到推送通知。推送通知将像魅力一样发挥作用。这将是瞬间的。

希望此清单对您的实施和健全性检查有所帮助。