Mobile Push Simplified With The AeroGear Push Server On OpenShift

AeroGear Push Server on OpenShift

Mobile and server-side developers need to be able to quickly and easily add push cabilities to their applications, however there are challenges. Creating, configuring, managing, and sending native and non-native mobile push messages just got a whole lot easier with the initial community release of the AeroGear Push Server, now available as a OpenShift Online Cartridge! So, no matter what type of mobile application you're building; web, native iOS/Android, or hybrid (such as Apache Cordova/PhoneGap), if you need push capabilities simply go to your OpenShift Management Console and fire up an instance of the AeroGear Push application!

AeroGear Push Server as an OpenShift Online Cartridge

Once the cartridge is installed you'll have access to the administrative console where you can configure new applications and variants for pushing messages to. Add in our client SDKs (Android, iOS, and JavaScript), SimplePush server capabilities, filtering and sender APIs (Java, Node.js, and PHP), documentation, and examples and there is nearly everyhing you need to get started.

AeroGear UnifiedPush Server

The AeroGear UnifiedPush Server is the core for the push server that stores devices specific metadata and is able to send push notifications to different (mobile) platforms. The initial version of the server supports Apple’s APNs, Google Cloud Messaging and Mozilla’s SimplePush.

AeroGear Unified Push Server

note: for step #3 nearly any backend server can be used, see "Sending Push Messages" below.

Three supported platforms

While Android and iOS are fairly well known to many mobile developers, it's worth spending a little time on SimplePush. SimplePush is a specification from Mozilla that describes a JavaScript API and a WebSocket-based protocol which allows backend/application developers to send notification messages to their web applications. Originally SimplePush was introduced for Firefox OS but there are plans to establish the API on the desktop and mobile browsers as well.

The AeroGear project has implemented a Java version of the SimplePush server! It is available as a Netty-based server that can be installed stand alone or combined with the UnifiedPush server, as it is in the OpenShift cartridge. We've also developed a polyfill JavaScript library that adds support for SimplePush to additional browsers and clients. We're excited to be part of the Mozilla efforts and look forward to working with them more in the future!

Deeper Look At The AeroGear UnifiedPush Server

As mentioned above the AeroGear UnifiedPush Server handles the server side registration and management of mobile applications as it is capable of storing device specific metadata, including device tokens and it offers a unified way to deliver notifications to Android, iOS and JavaScript applications.

REST API

All features of the server are powered by RESTful APIs:

  • registration of device specific metadata
  • sending push notifications
  • Management of the PushApplications and their different variants

Administrative Console

The management of the push applications, their variants and all of the actual device installations are best handled by the administrative console. The user guide has all the details on using the application, which by the way was developed with Ember.js and Topcoat.

AeroGear Administrative Console

Client SDKs And Device Registration

As indicated above we have SDKs for our supported platforms (Android, iOS and JavaScript) to help registration of client devices with the AeroGear UnifiedPush Server.

Sending Push Notifications

Sending can be done over the RESTful API:

curl -u "{PushApplicationID}:{MasterSecret}"
   -v -H "Accept: application/json" -H "Content-type: application/json"
   -X POST
   -d '{
       "someKey":"someValue",
       "alert":"HELLO!",
       "sound":"default",
       "badge":7,
       "simple-push":"version=123"
     }'
http://SERVER:PORT/CONTEXT/rest/sender/broadcast

The above sends a broadcast notification to all the different platforms, supported by our server. However we also have the ability to send more selective messages based on device type, users alias', and groups. How to do this is covered in the documentation above.

Using the commandline cURL is nice for testing, but for backend applications you'll usually want a more fluent API. Right now we do have a Java and a Node.js client. A PHP SDK is currently being developed.

We're Just Getting Started, Jump In

This is our initial community release of the AeroGear Push server, we've got a lot more planned! Such as updating the admin console UI and capabilities, new sender API support, and more.

The AeroGear project is more than our push capabilities. We have and are actively developing other client SDK's and server libraries to help with everything from security, to common CRUD and persistence.

It's an exciting time to be part of open source mobile development, and we're always looking for community feedback, bug reports, and participation. Stop by our IRC channel (#aerogear @freenode.net), join our aerogear-dev mailing list, or just fork us at http://github.com/aerogear!

More from this author