【问题标题】:Push notification delivers from local env, but not from server推送通知从本地环境传递,而不是从服务器传递
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

    • Musad 感谢您的明确回答,我猜是端口,让我检查一下!
    • 如果是端口问题,可以使用第三方api如parse。检查parse.com/tutorials/ios-push-notifications
    • 我打开了 2195 端口,但它似乎不起作用。我宁愿使用标准 APN 而不是第三方解决方案。我今天将重做整个事情,看看是否能解决任何问题。困难的一件事是 TestFlight 和 Xcode 都导出到同一个应用程序,并且都使用我的 VPS 作为 API。我在我的 mac (HTML/JS) 上使用 Chrome 进行开发,这使用了我的本地 API,这样我就不需要在开发时进行构建。困难在于我的服务器不知道设备是在生产环境还是开发环境中。
    • 最后搞定了,不知道到底是什么,但是我按照你的建议使用了本地生成的开发证书,在服务器上打开了2195、2196和5223端口,这个一切从头开始,再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2019-06-03
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 2020-10-10
    • 1970-01-01
    相关资源
    最近更新 更多