iOS APNS开发[sandbox]与生产环境的区别

58
伙计们,我正在尝试弄清楚APNS(推送通知)开发者(沙盒)和生产模式之间的关键区别。特别是我有以下问题:
1)我能否使用仅注册了APNS开发者证书的应用程序在应用商店上启动具有推送通知功能的应用程序?还是我需要对我想要在应用商店上发布的应用程序使用APNS生产环境?
2)除了“在APNS开发环境中开发”和“在APNS生产环境中进行生产”之外,通常有哪些功能原因会影响我的决策?特别是为什么我会选择为我的应用程序实现APNS开发人员证书,而不仅仅在生产推送帐户上运行所有内容?
以下是苹果网站上的说明,但它并没有回答我问题的核心:
开发环境:用于提供程序的初始开发和测试。它提供与生产环境相同的一组服务,但服务器单元较少。开发环境还充当虚拟设备,使模拟端到端测试成为可能。您可以在网关.sandbox.push.apple.com上访问开发环境,出站TCP端口2195。
生产环境:在构建提供程序应用程序的生产版本时使用生产环境。使用生产环境的应用程序必须满足苹果的可靠性要求。

如果您在开发门户网站的证书列表中查看,则生产证书类型名为:_Apple Push Services_,而沙盒的证书类型名为:_APNs Development iOS_。FWIW - mfaani
2个回答

50
如果你想将你的应用程序发布到应用商店,你需要使用生产配置文件,因此所有使用APNS开发人员证书发送的通知都无法传递到使用生产配置文件签名的应用程序。
为什么不仅使用一个生产APNS证书呢?嗯,你可以这样做,但是...
- 为了进行测试,你需要使用生产Ad Hoc配置文件构建你的应用程序,这会增加编译工作量。 - 在开发中使用生产证书,并因此使用Ad Hoc构建,你不能使用调试器运行。使故障排除非常痛苦。 - 测试通知使一切进入生产环境,所以你必须特别小心。

1
“测试通知会让所有东西都进入生产环境”这句话是什么意思?你的意思是必须使用生产环境的配置文件、证书等吗? - Yaron U.
我的意思是,如果您为每个目的都使用一个Prod证书,则无法仅推送到沙盒设备。 - dminones
1
如果APN证书的类型由预配配置文件的类型确定,那么entitlements中的aps-environment是什么意思? - sesm
1
@Honey 是的,完全正确! - dminones
1
谢谢。我刚刚成功运行了Xcode,并使用了生产证书。我不需要做任何广告宣传的东西,就可以使用调试器。这是否使前两个问题无效? - mfaani
显示剩余4条评论

26

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


1
我相信Azure Notification Hubs现在也对应于Apple(APNS)证书配置页面中的“生产与沙箱”切换。 - Frank
完全有道理 - Bigair

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接