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

时间:2015-10-03 23:12:17

标签: java ios push-notification apple-push-notifications javaapns

我正在尝试从我的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(我也在猜测生产,因为他们使用相同的推送通知证书)?

1 个答案:

答案 0 :(得分:1)

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

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

但是,使用生产证书时,您无法再使用沙盒目的地,而是需要使用以下内容:

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