推送通知来自本地环境,但不是来自服务器

时间:2015-02-01 15:22:31

标签: ios push-notification apple-push-notifications pem csr

我试图让我的服务器通过Apple的Push Notification服务提供推送通知。 (APN的)

我的设置如下:

  • Cordova HTML / JS app
  • VPS上的Rails API通过https
  • 休斯顿宝石推送通知

我已在mac上创建了开发证书。当我在本地运行我的服务器时,它成功地将通知发送到我的iPhone。

我现在正试图让它在我的服务器上工作,但没有运气。我在本地生成了CSR,将其上传到Apple的iOS App ID编辑器中并下载了CER。然后,我使用Keychain Access将CER导出到p12,并使用以下命令将其转换为PEM文件:

openssl pkcs12 -in apn_production.p12 -out apn_production.pem -nodes -clcerts

休斯顿需要这个PEM文件来发送推送通知,我已经为开发做了同样的工作,但它现在需要从服务器发送,这可能是问题,我不能得到但是有任何错误。通知无法到达,这可能是我正在制作的生产/开发错误。

我还尝试在我的服务器上创建一个CSR文件并通过iOS App ID的编辑器上传,但是当我下载CER并在Keychain Access中打开它时,我无法将其导出到P12,仅限CER,PEM和P7B。此文件中也没有私钥,这是我本地创建的开发证书中的私钥。此外,当我将其导出到PEM并在我的服务器上与Houston一起使用时,它会抛出证书无效的错误。

我尝试的另一件事是将我的VPS生成的CSR上传到Apple推送证书门户。这会引发错误,提到证书无效。

还有一些我不确定的事情:

1。我处于开发或生产模式吗?

该应用程序尚未在应用程序商店中,但它处于测试版模式,需要通过TestFlight下载,并且需要从我的服务器发送推送通知。这是一个生产环境或开发,还是我需要在构建App之前手动定义它?

2。是否可以使用本地生成的CSR来在我的服务器上使用PEM?

我是否正确,当我最终需要PEM从我的服务器发送推送通知时,我需要一个服务器生成的CSR?

第3。现在做什么,我该怎么调试?

从我本地生成的CSR生成的PEM现在上传到我的服务器,休斯顿不会抛出任何错误。推送通知虽然没有到达,所以,我该怎么做,我可以在某处跟踪这些推送通知吗?是否有一些我可以阅读的APN日志文件?

1 个答案:

答案 0 :(得分:0)

1)您需要使用生产证书通过试飞来发送推送通知。

2)您不需要服务器生成的CSR。您只需要一个有效的“.pem”来发送推送通知。

3)您需要在推送发送脚本中从推送通知网址中删除sanbox(沙箱模式)。还要检查服务器的端口2195是否打开以进行通信,因为APNS通过此端口进行通信。