【问题标题】:Apple Push Notification (APN) - when to use sandbox and production?Apple Push Notification (APN) - 何时使用沙盒和生产?
【发布时间】:2019-11-05 15:06:05
【问题描述】:

我想知道何时使用沙盒 APNS (gateway.sandbox.push.apple.com) 以及何时使用生产 APNS (gateway.push.apple.com) 发送推送通知。

目前我们正在使用生产 APNS

  • 应用商店版本,以及
  • 试飞版

本地(调试)版本的应用程序和沙盒 APNS。这是正确的吗?

问题是,虽然我们正确收到了 App Store 版本的推送通知,但我们没有收到 testflight 和本地版本的推送通知。

我们对所有版本都使用相同的生产证书。它是否正确?

【问题讨论】:

  • 生产证书只能用于 AppStore 和 AdHoc Release。对于其他类型的构建..使用沙盒..

标签: ios apple-push-notifications testflight


【解决方案1】:

推荐的方法:首先将您的请求发送到生产 APNS,然后在失败时将其发送到沙盒 APNS。并且总是这样做,无一例外。

原因:在实践中,99.9% 的推送通知将由生产 APNS 正确处理。有 0.09% 是由开发人员发送的,处理速度会慢一些(一个拒绝,一个成功),还有 0.01% 应该在生产 APNS 上成功,但由于某种原因没有(而不是失败一次,你尝试了两次,失败了两次)。

最大的优势是它可以正常工作。您不必配置服务器将推送通知发送到哪里,也不必配置客户端来告诉服务器将推送通知发送到哪里。您只需发送推送即可。

【讨论】:

  • 你的推荐来源在哪里?
  • 如何检查故障?
  • 这听起来像是 Apple 对 InAppPurchases 的推荐,但是我还没有看到任何推荐这种方法用于推送通知的东西。在我的实现中,应用程序知道我处于调试模式并告诉服务器将我的推送通知注册为测试设备。当服务器提交推送时,它会检查设备是否注册为调试设备(用于沙盒 APNS url)或发布/TestFlight 构建(用于实时 APNS url)
  • 我认为这不是一个好建议 - 假设您计划将“测试测试香蕉”发送到沙箱中的特定设备 ID,但沙箱暂时离线,然后将在生产中尝试此测试消息,可能会发送到错误的设备 - 发送给现场客户。诚然,令牌可能完全不同,但让我们假设最坏的情况并避免这种情况。如果 Apple 添加“广播”功能,这将是一个更大的问题,在这种情况下,向沙盒中的所有用户发送“测试测试香蕉”然后意外发送给 LIVE 用户是非常有效的。
【解决方案2】:

使用 iOS 开发证书(调试默认)签名的应用的沙盒

使用 iOS 分发证书 签名的应用程序的生产(发布默认,包括 testFlight)

请注意,如果您没有不同版本或内部版本号的完整单独上传,则 testFlight 版本与 AppStore 版本完全相同。

【讨论】:

  • 谢谢,我如何在运行时知道应用程序是如何签名的?
  • 为什么需要在运行时知道?您只需将令牌传递给服务器,让它决定发送到开发版本还是生产版本。
  • 如果你知道怎么做,请告诉我。为什么我们需要它是我们自己的内部逻辑。
猜你喜欢
  • 2017-01-15
  • 1970-01-01
  • 2017-02-01
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多