If your app offers useful information to your customers you may want to add push notifications. A push notification will alert your customer to your information whenever the information is most needed, even if your app is not active. For example, an app that updates local traffic conditions can alert a commuter about an accident on the road before she gets into her car to drive to work in the morning.
If you want to add push notifications to your app you have two choices. You can either program the server-side components yourself or you can sign up with a push notification service provider.
Push notification server-side
The server-side work involves talking to both Apple's Push Notification Service (APNS) and its feedback service. The server-side component sends a message of no more than 256 bytes to the APNS. The message payload is a JSON string with key-value pairs for displaying an alert, putting a badge number on the app icon, and playing a sound. The APNS relays the message to the device and the notification service running in the background on the device wakes up your app, if necessary, to run in the background.
The feedback service tells your component about customers who have removed your app from their devices so you can stop sending messages.
There are open source tools available, such as APNS-PHP, but there are a few issues:
- Bandwidth: Will you have the bandwidth to support sending messages to potentially millions of devices? Supporting sending millions of messages to millions of devices can be expensive with even the cheapest server provider.
- Cross-platform apps: What if you have your app running on Android, Blackberry or Windows phones? How do you send notifications to these devices?
Push notification service provider
The alternative is a Push Notification service provider. With a good service provider you should have the bandwidth you need and be able to push messages to your app running on all the popular mobile platforms. The service provider will also have features like customer targeting by location or some other group criteria.
Let's look at two popular push notification service providers: Urban Airship and PushWoosh. Other third-party vendors are also listed below.
Urban Airship is a good place to start as it offers a number of good features such as segmented messaging for targeting distinct groups of users, rich content, targeting based on the user's location ("Geo-location"), and reporting. Its free developer plan includes a client library, a server API, segmented messaging, rich pushes, reporting, unlimited number of apps, and notifications to one million devices.
Urban Airship also has support for "newsstand subscriptions" and in-app purchasing.
When you add a new app to the dashboard you can check normal 256-byte and rich content pushes. My guess is that a rich content push is a normal push from Urban Airship with a URL containing the rich content for the app to retrieve when it is woken up by the push. This may be one reason why you can send rich content pushes only from the dashboard.
Push notifications also require the app to be compiled with a provisioning profile that has an SSL certificate configured for push. The certificate's private key must also be installed on the server that communicates with the APNS and therefore you must upload the key to the Urban Airship cloud.
The client SDK includes reporting metrics that complement nicely the Google Analytics metrics or other metrics service you may be using.
Urban Airship is also making a laudable effort to standardize what they call "good push." At the beginning of this article is one of their examples of a good push. A bad push would be notifying a customer of a sale at an intrusive time, like when the customer is putting her children to bed. I recommend you check out Urban Airship's white papers.
The PushWoosh free plan allows for up to ten apps with an unlimited number of notifications to one million devices.
Unlike Urban Airship, the free plan does not include a server API. Notifications must therefore be initiated from their dashboard. There is however, a client SDK for registering the app with the APNS and responding to a push notification.
Geozones are not included with the free plan but it is interesting how small an area a geozone could be, as it encompasses a range in meters around a longitude and latitude. I can imagine defining a geozone for every department store within a city. When you send a notification to all these geozones everyone who has your app and is shopping inside the stores gets your notification.
This article should help you get started with your evaluation of the different Push notification service providers out there. It is up to you to thoroughly compare services and find the one with the best plan and features that most closely match your app's requirements.
You should also use metrics to keep track of the effectiveness of your notifications. You may use either a service like Google Analytics or the provider's own service, assuming it is included with the plan you choose.
Gerald McCobb first worked on mobile phone technology in 1998 while at IBM. Since then he has been the IBM representative to the W3 multimodal working group and Technical Director of multimodal technology at Openstream, Inc. He is currently working on developing mobile applications for West Interactive. He holds a masters degree in Computer Science from the University of Miami.