Skip to content
Java API to access the Unified Push Server
Latest commit 3796c78 Apr 13, 2016 @matzew matzew Merge branch 'priority'
Failed to load latest commit information.
src Adding priority to the sender Mar 31, 2016
.gitignore Adding better java support Jun 3, 2013
.travis.yml Using JDK8 on travis Apr 13, 2016
LICENSE.txt Adding License file Aug 1, 2014 lastet version Nov 16, 2015
pom.xml Using released alpha Apr 12, 2016

aerogear-unifiedpush-java-client Build Status

A Java API for sending Push Notifications to the AeroGear UnifiedPush Server. For more information, please visit the Java Sender Tutorial for example usages.

Project Info
License: Apache License, Version 2.0
Build: Maven
Issue tracker:
Mailing lists: aerogear-users (subscribe)
aerogear-dev (subscribe)

Getting started

Add the following dependencies to your pom.xml file:



Create a JavaSender:

PushSender defaultPushSender = DefaultPushSender.withRootServerURL("http://localhost:8080/ag-push")

You can also use an external config file :

  "serverUrl": "",
  "pushApplicationId": "c7fc6525-5506-4ca9-9cf1-55cc261ddb9c",
  "masterSecret": "8b2f43a9-23c8-44fe-bee9-d6b0af9e316b"}

And then :

PushSender defaultPushSender = DefaultPushSender.withConfig("pushConfig.json").build();

To connect via proxy:

PushSender defaultPushSender = DefaultPushSender.withConfig("pushConfig.json")
                .proxy("", 8080)

To use a custom TrustStore:

PushSender defaultPushSender = DefaultPushSender.withConfig("pushConfig.json")
                .customTrustStore("setup/aerogear.truststore", "jks", "aerogear")

Send a message

Construct a UnifiedMessage using the Builder :

 UnifiedMessage unifiedMessage = UnifiedMessage.withCriteria()
                .aliases("john", "maria")
                  .alert("Hello from Java Sender API!")
                  .badge("1") // iOS specific
                  .userData("some_key", "some_value") // optional attributes specific to your app
                  .userData("title", "Cool Title") // optional cordova Android specific attribute (default is appName)

Create a callback

 MessageResponseCallback callback = new MessageResponseCallback() {

            public void onComplete(int statusCode) {
              //do cool stuff

Send the message

defaultPushSender.send(unifiedMessage, callback);

You can also omit the callback


Known issues

On Java7 you might see a SSLProtocolException: handshake alert: unrecognized_name expection when the UnifiedPush server is running on https. There are a few workarounds:

  • JBoss' standalone.xml configuration file:

   <property name="jsse.enableSNIExtension" value="false"/>
  • in the Java app, that is using the Java Client SDK: System.setProperty("jsse.enableSNIExtension", "false");
  • Or via commandline argument: -Djsse.enableSNIExtension=false


For more details about the current release, please consult our documentation.


If you would like to help develop AeroGear you can join our developer's mailing list, join #aerogear on Freenode, or shout at us on Twitter @aerogears.

Also takes some time and skim the contributor guide


Join our user mailing list for any questions or help! We really hope you enjoy app development with AeroGear!

Found a bug?

If you found a bug please create a ticket for us on Jira with some steps to reproduce it.

Something went wrong with that request. Please try again.