APNS - 将应用程序退出生产并投入开发

Posted

技术标签:

【中文标题】APNS - 将应用程序退出生产并投入开发【英文标题】:APNS - Taking App Out of Production and into Development 【发布时间】:2014-06-12 01:03:18 【问题描述】:

我有一个通过 Parse.com 使用推送通知的 ios 应用,我想做一些测试,通知只发送到测试设备。如果我只是切换到开发证书,我认为通知不会发送到生产设备。

但是,我有点担心做错了什么,并且不小心尝试通过开发证书向生产设备发送数十万条推送通知。

我知道生产设备不会收到通知,但是否会出现更广泛的问题来解决这种情况 - 即我的应用被标记为垃圾邮件或类似情况?

【问题讨论】:

就像 Eran 提到的,生产代币不同于开发代币。因此,如果您将消息发送到 Apple Sandbox 服务器,它不会到达带有生产令牌的设备。 【参考方案1】:

如果您尝试使用开发证书(并连接到 APNS 沙盒服务器)向生产设备令牌发送通知,您将收到每个通知的设备令牌无效错误,并且在您发送每条消息后连接将关闭。大多数消息甚至不会到达 Apple,因为一旦发现无效消息就会关闭连接,并且在该消息之后发送的所有消息都将被丢弃。

如果您将沙盒(=开发)设备令牌存储在与生产令牌相同的数据库中,则会出现更大的问题。如果您不区分这两种类型的令牌,当您切换回生产推送通知时,您会冒着尝试使用生产推送证书向沙盒令牌发送通知的风险,这会给您带来错误并关闭与APNS,从而中断了对生产代币的推动。因此我强烈建议您使用不同的数据库来存储沙盒设备令牌。

【讨论】:

同意。最好区分生产服务器和测试(开发)服务器。 我正在使用 Parse.com,而不是自己实现数据库。那么,如果我确实使用开发证书向生产令牌发送通知,这些通知会被忽略吗?我只是希望能够在测试时向开发设备发送通知,但是由于我使用 Parse.com 并且没有实现数据库,我认为我无法控制通知是哪些令牌送至。所以,我想,如果我只是切换到开发证书,生产令牌将被忽略,而开发令牌将被交付给开发设备。这是个坏主意吗? @user1718136 我不知道 Parse 是如何实现数据库的(当您将设备令牌发送给他们时,您是否有办法指定您是发送生产令牌还是沙盒令牌?) .我只是说在同一个数据库中同时拥有开发和生产令牌会在推送到生产时给您带来问题(因为沙盒令牌可能会导致连接一直关闭)。 @user1718136 使用开发证书向生产令牌发送通知将导致与 APNS 的连接因设备令牌无效而关闭。你没有办法从 Parse 请求推送到特定的设备令牌吗?

以上是关于APNS - 将应用程序退出生产并投入开发的主要内容,如果未能解决你的问题,请参考以下文章

使用 Appstore 生产证书测试 APNS

APNS-开发推送 SSL 还是生产推送 SSL?

更新企业应用程序的 iOS 开发和 APNs 生产 [AirWatch]

iOS:生产推送通知,来自 APNS 服务器的无效令牌

即使 http2 返回代码 200,iOS APNS 也不会在设备上用于开发和生产

iPhone APNS 沙盒与尚未批准应用的生产对比