OwnPush

Next generation, open-source push services for Android
Push

Push messages are a key tool

Developers know that in order to keep their users engaged with their apps/services they need to use push messages. Until now there has been little choice outside of Google Cloud Messaging (GCM). With this lack of choice came a dependency on Google Services which is a known battery and resource drain on today’s modern devices. This dependency also has created a challenge for developers looking to provide the billion or more users who do not have access to Google Services, or choose to value privacy, with push notifications.

Introducing OwnPush

End-to-End Encrypted

With GCM, all messages go through Google, which acts as the gatekeeper between developer and user. We know that Android users value their privacy, and OwnPush messages are encrypted (seamlessly and by default) from the developer’s server, all the way through to the end device. This means that we (and anyone else in the path) can’t get into your push messages. Like it should be.

Simple to Use

Push messages can be delivered to any device running Android, whether tablet or phone. It works over Wifi or mobile data, and it’s very simple to use. To aid in implementing OwnPush in your applications, we will be providing libraries for major backend platforms to help with handling the encryption and signing process.

Battery-Light

GMS is fairly heavy on the battery, as it has a huge number of features tied together, including location logging and Google accounts. OwnPush was designed to be as lightweight as possible. In addition, OwnPush has shown an ability to work with Android M’s Doze mode while still providing fast and efficient push notifications.

The Components of OwnPush

Android App Library

Your application requires a library be added, this provides the needed service bindings to communicate with the OwnPush service (detailed below). The main functions this library exposes are:

  • Register (registers this application install with the OwnPush Server and returns the registration ID for the developer’s backend services)
  • decryptFromIntent (Uses the stored public and private keys to decrypt any incoming messages)

OwnPush Service

The OwnPush service needs to reside on the device, either as a library in your application or as a separate APK. This handles the connection to the OwnPush server and the distribution of push messages to needed applications via permission-targeted intents. Note this service does not decrypt any message data as this is passed to the client application for full end-to-end encryption.

i

Developer Provider

Developers would interface with the OwnPush Server API via a simple post request. These requests are JSON encoded and contain the encrypted message, application public ID and the install ID that the message is addressed to. Example implementations can be found on the OwnPush GitHub.

OwnPush Server

The system revolves around a bespoke web server that provides both the connection to the OwnPush service running on your user’s devices and the API that developers push the messages to. Our OwnPush servers feature full message acknowledgement (any unacknowledged messages will be sent again on next message) and per device message queueing (any message sent while a device isn’t connected will be resent on next message).

What can this be used for?

OwnPush has the capability to be the driving force behind some really cool ideas, from a fully open-source PC-to-phone push system, to building real-time secure messaging platforms. OwnPush can do everything that other options can do, and it’s more secure to boot! OwnPush enables you to keep your users informed while not impacting battery life. We hope that the uses for OwnPush are limited only to your imagination.

Open source tools are easier to work with, tweak and play with, and learn from. There’s no reason to use the proprietary Google Services library just to get push messages working! Coupled with XDA Labs, you can start to build an ecosystem without relying on Google at all, and without them being able to shut your developer account down!


OwnPush Performance Examples

For an example of what OwnPush can offer regarding battery savings, we setup a test with a Nexus 9 over a 20hr period. The test application used OwnPush to keep alive a server connection (typical ping pong) once every 4-5 minutes and a push notification randomly sent every 2-10 minutes.

Nexus 9 CPU usage over 20hrs running OwnPush

Nexus 9 CPU usage over 20hrs running OwnPush

OwnPush Application Resource usage on Nexus 9

Google Services Resource usage on Nexus 9

Try It For Yourself

To demonstrate how the OwnPush system can be integrated we have constructed 2 simple applications which make use of OwnPush. The first is an RSS scanner and the second is a “One-Time Password” web service and application. The source for them can be found on our GitHub. To check out the demo apps, visit our Demo page.

We also know that you may have a number of questions about OwnPush, how to implement, specific use cases, etc., so we’ve put together a nice FAQ that we’ll be continuing to update. You can also send us a question at ownpush@fastbootmobile.com.

Contact Us

If you would like to be involved with OwnPush, or would like to be kept informed, let us know. We will only use this to communicate news about OwnPush and nothing else.

Your Name (required)

Company Name (optional)

Your Email (required)

Interest in ownPush

Your Message

About Fastboot Mobile

We’re a small, venture-capital free business. No external influences or pressures on how we work. We’re developers like you, and we believe in giving people a real choice.