向 APNS 发送推送通知(AdHoc 部署)

Send push notifications to APNS (AdHoc deployment)

我正在尝试将推送通知从我的 Java 后端发送到我的移动应用程序。为此,我正在使用 notnoop java-apns 库。 我设法设置了一切,一切都在开发上完美运行(开发证书和配置文件)。

我想尽快发布该应用程序,但首先我想设置所有内容,以便在它上线后做好准备。所以我创建了一个 'App Store and Ad Hoc' 证书,还有一个 'Ad Hoc' 配置文件。 然后我尝试使用该 P12 文件,该文件应该与应用程序上线后我将使用的文件相同。 但不幸的是,我遇到了以下异常:

java.net.SocketException: Connection closed by remote host
    at sun.security.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1510)
    at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123)
    at java.io.OutputStream.write(OutputStream.java:75)
    at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:328)
    at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:312)
    at com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:46)
    at com.notnoop.apns.internal.AbstractApnsService.push(AbstractApnsService.java:56)
    at com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:36)
    at com.notnoop.apns.internal.AbstractApnsService.push(AbstractApnsService.java:45)
    .....

有人知道会发生什么吗?怎么可能在 Development 而不是 AdHoc 上正常工作(我猜生产也是如此,因为他们使用相同的 Push Notification 证书)?

发布问题后立即找到了答案! 基本上,在开发模式下,我有以下代码来初始化服务:

this.service = APNS.newService().withCert(p12Stream, passphrase).withSandboxDestination().build();

但是,当使用生产证书时,您不能再使用沙箱目标,而是需要使用以下内容:

this.service = APNS.newService().withCert(p12Stream, passphrase).withProductionDestination().build();