Hi,

i try to send a push notification via apns to a smart phone (apple).

The response status code indicates that the message was sent successfully and i 
also get a push notification. The problem is i always get two (!) push 
notifications to the phone for every single request I send!

I can't see the problem and hope somebody can help :).


I use jetty's libraries.

I orientated on this code:

https://judepereira.com/blog/sending-notifications-via-apples-new-http2-api-using-jetty-9-3-6/


To gradle dependencies I included

compile 'org.eclipse.jetty.http2:http2-client:9.4.10.v20180503'
compile 'org.eclipse.jetty:jetty-http:9.4.10.v20180503'
compile 'org.eclipse.jetty.http2:http2-http-client-transport:9.4.10.v20180503'


I could not handle to add the ALPN library to my boot classpath :/, so I 
included to my code

transport.setUseALPN(false);

and it works i.e. I did not get the error anymore. Maybe this is the problem?


Here's the code:


private ContentResponse sendMessage(String jsonMessage, String token, byte[] 
apnsCertificate, char[] apnCertificatePassword)  {

HTTP2Client http2Client = new HTTP2Client();
HttpClientTransportOverHTTP2 transport = new 
HttpClientTransportOverHTTP2(http2Client);
transport.setUseALPN(false);
ContentResponse response = null;

try {
http2Client.start();

KeyStore keyStore = KeyStore.getInstance(KEY_STORE_TYPE);
keyStore.load(new ByteArrayInputStream(apnsCertificate), 
apnCertificatePassword);

KeyManagerFactory kmf = 
KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(keyStore, apnCertificatePassword);

SslContextFactory ssl = new SslContextFactory(true); //todo
ssl.setKeyStore(keyStore);
ssl.setKeyStorePassword("");

HttpClient httpClient = new HttpClient(transport, ssl);
httpClient.setFollowRedirects(false);
httpClient.start();

Request req = httpClient.newRequest(“https://api.development.push.apple.com”)
.method(HttpMethod.POST)
.path(“/3/device/”+ token)
.content(new StringContentProvider("{ \"aps\" : { \"alert\" : \"Hello\" } }"));

response = req.send();
httpClient.stop();
} catch (Exception e) {
LOG.error(“Message could not be sent: ” + e.toString());
}
return response;
}


thx

Mel






_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to