Uniqush (\ˈyü-nə-ku̇sh\ "uni" pronounced as in "unified", and "qush" pronounced as
in "cushion") is a free and open source software system which provides
a unified push service for server side notification to apps on mobile devices.
uniqush-push API abstracts the APIs of the various push services used
to send push notifications to those devices. By running
uniqush-push on the
server side, you can send push notifications to any supported mobile platform.
- GCM from Google for the Android platform
- APNS from Apple for the iOS platform
- ADM from Amazon for Kindle tablets
- Q: Is this a general push notification platform for all types of devices? How does this differ
from services such as Urban Airship?
A: Urban Airship is a great service, and there are
other similar services available, like OpenPush,
Notificare, etc. All of them are wonderful services.
However, Uniqush is different from them.
Uniqush is not a service. Instead,
Uniqush is a system, which runs on your own
server. In fact, if you wish, you can use Uniqush to setup a service similar to Urban Airship.
Q: OK. Then is it a library? Like
A: Well.. Not actually. I mean, it is a program, like Apache HTTP Server. You download it, you run it. It does require a Redis server, but, other than that, you don't need to worry about which language to use, package dependencies, etc.
Q: But wait, how can I use it anyway? I mean, if my program wants to send
a push notification, I need to tell Uniqush about this action. How can I
communicate with Uniqush? There must be some library so that I can use it
in my program to talk with Uniqush, right?
A: We are trying to make it easier.
uniqush-pushprovides RESTful APIs. In
other words, you talk with
uniqush-pushthrough HTTP protocol. As long as
there's an HTTP client library for your language, you can use it and talk with
uniqush-push. For details about the our RESTful APIs, see our API
A: No. There are no installation dependencies. All you need to do is to download the
binary file from the download page and
install it. But you do need to set up a Redis server running
somewhere, preferably with persistence, so that
uniqush-pushcan store the
user data in Redis. For more details, see the
Q: This is nice. I want to give it a try. But you are keep talking about
uniqush-push, and I'm talking about Uniqush, are they the same thing?
- A: Thank you for your support! Uniqush is intended to be the name of a
system which provides a full stack solution for communication between mobile
devices and the app's server.
uniqush-pushis one piece of the system.
However, right now,
uniqush-pushis the only piece and others are under
active development. If you want to know more details about the Uniqush
system's plan, you can read the blog
post. If you want to find out
about the latest progress with Uniqush, please check out our
blog. And, if you are really impatient, there's
always our our GitHub account which could have
brand new stuff that hasn't been released yet.
Setting Up Redis
Redis persistence describes the details
of how Redis saves data on shutdown, as well as how one might back up that
data. Make sure that the Redis server you use has persistence enabled - your
redis.conf should have contents similar to the section
redis.conf in the example config files linked in http://redis.io/topics/config
You can build a Docker image with the
After building it, you can get a fully working uniqush instance with:
$ docker run -d --name uniqush-redis redis:alpine $ docker run --publish 9898:9898 --link uniqush-redis:redis --volume /path/to/apns/certificates:/data uniqush-build:$TAG $ curl http://localhost:9898/version uniqush-push 2.2.0
You're encouraged to contribute to the
uniqush-push project. There are two ways you can contribute.
If you encounter an issue while using
uniqush-push, please report it at the project's issues tracker. Feature suggestions are also welcome.
Code contributions to
uniqush-push can be made using pull requests. To submit a pull request:
- Fork this project.
- Make and commit your changes.
- Submit your changes as a pull request.