iPhone推送通知在沙箱中工作,但不在生产模式下工作

问题描述 投票:6回答:5

正如标题所说,我有一个内置APNS的应用程序。 它在Sandbox模式下完美运行。 但在生产模式下,它失败了。

似乎我在服务器上有正确的证书,因为我没有收到APNS服务的错误。 一切似乎都很好。 我正在使用Aldo Armiento的ApnsPHP。 它具有内置功能,可以从APNS-Server中吐出结果。 当我尝试将Sandbox与商店中的应用程序一起使用时,我得到 - 正如预期的那样 - 一个无效的令牌错误(因为来自沙箱和生产的令牌不同)。 当我使用生产证书与商店中的应用程序时,我没有收到错误。 没什么,nada,zilch - 似乎它发出了通知。 唉,它没有到达我的手机上。

显然,证书必须没问题。 它连接到服务器,它发送通知,所有传递没有错误(我确实首先有错误的证书,所以我知道如果他们不正确会发生什么:)

任何想法如何找出bug隐藏的位置?

[编辑]这是我从APNS服务中得到的回复:

Tue, 03 Jan 2012 03:13:55 +0100 ApnsPHP[13049]: INFO: Trying ssl://gateway.push.apple.com:2195...
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Connected to ssl://gateway.push.apple.com:2195.
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Sending messages queue, run #1: 1 message(s) left in queue.
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: STATUS: Sending message ID 1 [custom identifier: Message-Badge-000] (1/3): 107 bytes.
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Disconnected.
iphone apple-push-notifications production-environment
5个回答
11
投票

以下是您可以在最后检查的三种情况: -

  1. 确保您在服务器端使用了正确的生产证书。 因为我们需要为生产和沙箱创建两个不同的证书。 确保在服务器上使用正确的证书。

  2. 第二,您可以检查您是否在服务器端使用了正确的网关和端口号。 由于生产和沙箱的网关是不同的。 用于生产的网关是: - gateway.push.apple.com。 并且您在服务器上使用正确的密码作为您在服务器上使用的证书。

  3. 第三,您可以检查设备上的通知是否已启用。 您还需要在iPhone上启用它。 确保您的设备上有。

请让我知道这对你有没有用。


7
投票

对我来说,我奋斗了好几天。 使用正确的生产证书和密钥,并正确的网关将消息发送到我正在开发的iPhone,它成功发送到沙箱模式,但生产模式失败。 这是因为还有两种设备令牌,测试iPhone设备令牌是沙盒令牌,不能在生产模式下使用。 最好使用其他设备的令牌来测试生产APN。

详细的说明是这里

最常见的问题是无效的设备令牌。 如果令牌来自沙箱环境,例如当您在内部测试开发构建时,则无法将其发送到生产推送服务。 每个推送环境都会为同一设备或计算机发出不同的令牌。 如果您确实将设备令牌发送到错误的环境,则推送服务会将其视为无效令牌并丢弃该通知。


1
投票

请参阅https://stackoverflow.com/a/11623162/496222中的答案

简而言之:确保两个SSL证书都在一个单独的PEM文件中。 拥有包含沙盒和生产证书的单个PEM文件将导致任一环境失败。


0
投票

另请检查您的App Id是否启用了推送通知


0
投票

这解决了我的问题,确保为kGGLInstanceIDAPNSServerTypeSandboxOption设置正确的值。 开发模式设置为YES,生产模式设置为“NO”。

© www.soinside.com 2019 - 2024. All rights reserved.