【发布时间】:2015-03-31 14:31:57
【问题描述】:
我正在尝试让我的服务器通过 Apple 的推送通知服务发送推送通知。 (APN)
我的设置如下:
- Cordova HTML/JS 应用程序
- 通过 https 在 VPS 上的 Rails 中的 API
- 用于推送通知的休斯顿 gem
我已经在我的 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 并在我的服务器上与休斯顿一起使用时,它会引发证书无效的错误。
我尝试的另一件事是将我的 VPS 生成的 CSR 上传到 Apple Push Certificates Portal。这会引发一个错误,指出证书无效。
有几件事我不确定:
1.我是处于开发模式还是生产模式?
该应用尚未在应用商店中,但它处于测试模式,可通过 TestFlight 下载,并且需要从我的服务器发送推送通知。这是生产环境还是开发环境,还是我需要在构建应用程序之前在某处手动定义?
2。是否可以将本地生成的 CSR 用于我的服务器上使用的 PEM?
当我最终需要一个 PEM 来从我的服务器发送推送通知时,我需要一个服务器生成的 CSR 开始吗?
3.现在做什么,我应该如何调试?
从我本地生成的 CSR 生成的 PEM 现在已上传到我的服务器,Houston 不会抛出任何错误。但是推送通知没有到达,所以,我该怎么办,我可以在某处追踪这些推送通知吗?是否有一些我可以阅读的 APN 日志文件?
【问题讨论】:
标签: ios push-notification apple-push-notifications pem csr