I need to get this working but I'm completely out of options...any help would be greatly appreciated.
I'm trying to send notifications to my iOS device using Java and have followed many tutorials and forum posts, mainly these: raywenderlich.com, JavaPNS Basic Example, and the java-apns example shown below.
I am, however, able to send notifications using PHP. Can someone see anything I'm doing wrong? I've been working for several days on this and can't figure out what the issue is b/c I've copied the exact code that other people claim works. Here's my code:
public static void main(String[] args) {
try {
// Not my real token
String token = "2919333333333545F19B427AE7E98307B1B2AA9390A38BC0E533E77E11111111";
ApnsService service = APNS.newService()
.withCert("C://code//Dev.p12", "password") // (path to cert, password)
.withSandboxDestination()
//.withProductionDestination()
.build();
//System.out.println("Testing the connection...");
//service.testConnection();
//System.out.println("...Successful!");
String payload = APNS.newPayload()
.alertBody("Java test message!")
.sound("default")
.build();
System.out.println("About to send the message...");
service.push(token, payload);
System.out.println("...message sent!");
} catch (Exception e) {
e.printStackTrace();
}
}
Here is the exception I get:
About to send the message...
com.notnoop.exceptions.NetworkIOException: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at com.notnoop.apns.internal.Utilities.wrapAndThrowAsRuntimeException(Utilities.java:284)
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:342)
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)
at utilities.APNSTestUtility.main(APNSTestUtility.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:992)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:747)
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)
... 11 more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:505)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973)
... 16 more
When I include a wrong password I get an exception for an incorrect password so I know it's finding the .p12 file. I can send notifications with the PHP example I found online but there MUST be something I'm missing with the Java code. I have tried both the java-apns library (shown above) and the JavaPNS library and I get the same results.