我正在尝试从我的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)
.....
任何人都知道可能会发生什么?如何才能在开发方面做得很好而不是AdHoc(我也在猜测生产,因为他们使用相同的推送通知证书)?
答案 0 :(得分:1)
我在发布问题后立即找到答案! 基本上,在开发模式中,我有以下代码来初始化服务:
this.service = APNS.newService().withCert(p12Stream, passphrase).withSandboxDestination().build();
但是,使用生产证书时,您无法再使用沙盒目的地,而是需要使用以下内容:
this.service = APNS.newService().withCert(p12Stream, passphrase).withProductionDestination().build();