iOS APNS 开发 [沙盒] 与生产

iOS APNS Development [sandbox] vs Production

伙计们,我在弄清楚 APNS(推送通知)开发人员(沙盒)和生产模式之间的主要区别时遇到了一些麻烦。特别是我有以下问题:

1) 我能否在应用商店中启动仅注册了 APNS 开发者证书的带有推送通知的应用程序?或者我是否需要使用 APNS Production 才能将应用程序用于我想在应用程序商店中启动的应用程序?

2) 一般来说,除了 "development on development APNS" 和 "production on production APNS" 之外,还有哪些功能性原因会影响我的决定。特别是为什么我要选择为我的应用程序实施 APNS 开发人员证书,为什么不只是 运行 生产推送帐户上的所有内容?

以下是 Apple 在其网站上所说的内容,但并未触及我问题的核心:

Development: Use the development environment for initial development and testing of the provider app. It provides the same set of services as the production environment, although with a smaller number of server units. The development environment also acts as a virtual device, enabling simulated end-to-end testing. You access the development environment at gateway.sandbox.push.apple.com, outbound TCP port 2195.

Production: Use the production environment when building the production version of the provider app. Apps using the production environment must meet Apple’s reliability requirements.

如果您想 post 您的应用程序进入应用程序商店,您将需要使用生产配置文件,因此使用 APNS 开发人员证书发送的所有通知都不会到达您使用生产配置文件签名的应用程序.

为什么不只使用生产 APNS 证书?好吧,你可以这样做,但是...

  • 为了进行测试,您需要使用 Production Ad Hoc Provisioning Profile 来构建您的应用,这在编译时需要做很多额外的工作
  • 在开发中使用生产证书,因此使用临时构建,您不能 运行 使用调试器。使故障排除非常痛苦。
  • 测试通知使一切都投入生产,因此您必须格外小心

dminones 的回答非常准确。我想指出,您现在可以在开发中使用生产证书。不同之处在于,您将发送给 'gateway.sandbox.push.apple.com' 进行开发,发送给 'gateway.push.apple.com' 进行生产。我认为将沙箱和生产分开的原因是为了避免向真实用户发送测试推送通知。想象一下,你做了爆炸通知,你的所有用户都会收到通知。