Push for instant messaging is pretty essential for a mobile device. I find it a bit irritating that with Apple’s new “multitasking” features in iOS 4, they did not include an api for instant messaging apps. So basically the only way to receive push messages for your instant message client is to use a proxy service. This creates obvious privacy concerns, since you’re just sending your username and password to a third party. Most people are okay with this, but I am not. Since I am already running an XMPP server (ejabberd), I decided I should write a module to send me push notifications directly from the server. To do this, I decided to use Prowl, the same app/service I use for push messaging from my IMAP server. I’ve never written anything in Erlang before, so it took some time to read the docs and muster the energy to dive right in. After a bit of learning and experimenting I have created the first version of mod_offline_prowl for ejabberd. Feel free to use it if you like, I am releasing the full source via GPL for the world to use.
Even with the long awaited 3.0 iPhone update, Apple still refuses to add support for true IMAP push (using IDLE). Luckily however, they did finally enable the Push Notification Service, allowing a slew of push capable apps to show up in the AppStore. So I started to read the programming guide to write my own app to push mail notifications to me…. Unfortunately I gave that up, because it’s just way too much work just to get a new mail notification… But I did find a gem in the AppStore that would let me do what I want, called Prowl (iTunes link) (Their site). As they describe it:
Prowl is a Growl client for the iPhone. Notifications from your Mac (or even Windows! see the FAQ) can be sent to your iPhone over push, with a full range of customization and grace you expect.
They even provide a script to use for notifications from non Mac computers. So with this gem, I was able to get push notifications of new mail by adding one simple line to my existing .mailfilter on my server. While I was at it, I figured why not make another use for this, and wrote a simple perl script to search for @-mentions on twitter and push them to me.