Thursday, July 17, 2014

My Research - Push Notification in Mobile Ecosystem in 2011 - Gotchas - Part 9


Finally  the last final part telling about reliability of Push notifications.



Push Notification Gotchas
                      
 
 Push Notifications needs internet or Data connection!
Your recepients need to have data connection or internet on their phone to receive push notifications. You can not  identify the reason why your recepient didnt receive it.
 

Push Notifications Are Short!
You can only send limited data over push notifications. You need to have extra mechanism to pull more data from server.

Push Notifications Are Unreliable!
They are not reliable! There is no guarantee that push notifications will actually be delivered,
even if the APNS server accepted them.

They can be expensive!
Adding push functionality to your app is fairly easy and inexpensive if you own the data, but can be expensive if you have a lot of users or data you need to poll.

My Research - Push Notification in Mobile Ecosystem in 2011 - Whats in Market - Part 8



Whats In Market

Various Push Apps on Apple Iphone

Update: I have taken this from some other article as it is. 'I' or 'me' used below is not 'sandip'

Market Pulse

While the apps that currently use push notifications are handy, I hope that developers will take this opportunity to do some things above and beyond your typical “message waiting” notifiers. E*Trade, Zillow and a few others get the idea. I’m waiting for the app that allows me to get notified of anything I decide I need to be notified about. With all the open APIs out there today, it’s bound to come along.

Things that need to be pushed :

1. Allow me to be notified when my car or house alarm goes off.
2. Google, let me be notified of a new Google Alert I have set up.
3. How about instead of giving me a big vibrating brick of plastic at the restaurant while I wait for a table, let my phone connect to your system and you can ping me instead.
4. I’d also like to know immediately when albert hits another grand slam – or when any other sporting event I’m interested in occurs.
5. What about when I need two days of rain-free weather, within specific degrees, in order to paint a fence or deck. Should I really have to check the weather forecast every day? I’d rather have an app that did the work for me.
Sooner or later, push notification of almost anything will be a reality, making our digital lives even more real-time. What type of alerts would you like pushed to your iPhone?

My Research - Push Notification in Mobile Ecosystem in 2011 - Android - Part 7


Android C2DM (Cloud to Device Messaging) Framework


Here are the primary characteristics of Android Cloud to Device Messaging (C2DM):
  • It allows third-party application servers to send lightweight messages to their Android applications. The messaging service is not designed for sending a lot of user content via the messages. Rather, it should be used to tell the application that there is new data on the server, so that the application can fetch it.
  • C2DM makes no guarantees about delivery or the order of messages. So, for example, while you might use this feature to tell an instant messaging application that the user has new messages, you probably would not use it to pass the actual messages.
  • An application on an Android device doesn’t need to be running to receive messages. The system will wake up the application via Intent broadcast when the the message arrives, as long as the application is set up with the proper broadcast receiver and permissions.
  • It does not provide any built-in user interface or other handling for message data. C2DM simply passes raw message data received straight to the application, which has full control of how to handle it. For example, the application might post a notification, display a custom user interface, or silently sync data.
  • It requires devices running Android 2.2 or higher that also have the Market application installed. However, you are not limited to deploying your applications through Market.
  • It uses an existing connection for Google services. This requires users to set up their Google account on their mobile devices.


Components:
1) Mobile Device
2) Third Party Application Server
3) C2DM servers

Credentials
1) SenderId - developers emailId used during app registration
2) Application ID - app id
3) Registration Id - An ID issued by the C2DM servers to the Android application that allows it to receive messages.
4) Google User Account -
5) Sender Auth Token

Life Cycle Flow
Here are the primary processes involved in cloud-to-device messaging:
  • Enabling C2DM. An Android application running on a mobile device registers to receive messages.
  • Sending a message. A third-party application server sends messages to the device.
  • Receiving a message. An Android application receives a message from a C2DM server.



My Research - Push Notification in Mobile Ecosystem in 2011 - Nokia - Part 6


Nokia Drop -

Nokia provides Push Notification API, supported in latest phones.

The Notifications API makes it easy to add real-time push notifications to your client applications running on Nokia devices. As shown in the diagram below, applications access the Nokia-hosted Notification Server through two separate interfaces that you integrate in your applications:
  • The Service API provides access to the Notification Server through an HTTP REST interface. Your service uses this interface to send notifications.
  • The Client API allows applications on the device to register and receive notifications from the Notification Server. The Client API is available for Qt on Symbian devices. QML support will also be available in the near future.
[Nokia developers website]


Typical lifecycle of a notification

The diagram below shows the typical lifecycle of a notification.
  1. Before an application can receive notifications, it must register with the Notification Server and request a Notification ID. This Notification ID uniquely identifies both the end user and the target client application and is used by the Notification Server to route notifications.
  2. The client application then shares this Notification ID with its respective service; the server now knows where to send the notification.
  3. When a notification is ready to be sent, the service sends it to the Notification Server using the Service API, providing the notification data (also called payload) and the Notification ID.
  4. The Notification Server sends the notification to the client application.




 

My Research - Push Notification in Mobile Ecosystem in 2011 - Apple - Part 5


Apple Push Notification Service

Called APNS in short, also supported by OSx Lion.

The server-side component can send the app a push notification! There are three things a push notification can do:
  1. Display a short text message
  2. Play a brief sound
  3. Set a number in a badge on the app’s icon

Main Roleplayers:
1) Iphone or Mac Application
2) APNS server from Apple
3) Your Notification Server.

What does it need?
1) Iphone Device Token
2) App Id
3) Iphone to be registered with APNS, enabled push notification
4) Your Server registered with APNS
What You need for Push Notification?

An iOS Developer Program membership. - You need to make a new App ID and provisioning profile for each app that uses push, as well as an SSL certificate for the server. You do this at the iOS Provisioning Portal.



A push notification is a short message that consists of the device token, a payload, and a few other bits and bytes.
Example:
{
   "aps":
   {
   "alert": "Hello, world!",
   "sound": "default"
   }

}

Each notification has a maximum size of 256 bytes, which makes it very efficient for services with small data allowances (such as mobile phones

My Research - Push Notification in Mobile Ecosystem in 2011 - Blackberry - Part 4


Blackberry Email Push Notification



The BlackBerry® Push Service is an essential component of the real-time, always-on experience of BlackBerry smartphones. It offers an incredibly efficient and reliable way of sending information to your users. It also allows your application to process information in the background and alert users.


Available to all developers
The BlackBerry Push Service is available to all developers and web content providers. By using push technology, you can make your app more engaging and help turn it into a Super App

My Research - Push Notification in Mobile Ecosystem in 2011 - How - Part 3


How does it work?

1) Mobile Developer will integrate PNS Api In your App.
2) App user registers for Push Notification with OS Provided PN Servers.
3) App user gives your application server access to send Push Notification In-App.
4) Your server sends Notification to  OS Provided PN Server.
5) OS Provides PN server sends notification to receiver application in end device.

How does it look like?



My Research - Push Notification in Mobile Ecosystem in 2011 - What Part 2


What is it?

Push, or server push, describes a style of Internet-based communication where the request for a given transaction is initiated by the publisher or central server. It is contrasted with pull, where the request for the transmission of information is initiated by the receiver or client.[WikiPedia]

For ages, Telecom technology SMS is being used for Push notification, its smpp protocol on SS7 networks. Email is also kind of Push Notification using SMTP.

Blackberry or RIM is using it for longtime for Email Notifications while Apple generalized it Now Android and Nokia are trying put their foot forward to enhance its usage. It primarily runs using HTTP/TCP/IP network protocol.


Genaral Use

Push services are often based on information preferences expressed in advance. This is called a publish/subscribe model. A client might "subscribe" to various information "channels". Whenever new content is available on one of those channels, the server would push that information out to the user. [wikipedia]

Techniques

HTTP Push Server:
HTML5 is the WebSockets API, which allows a web server and client to communicate over a full-duplex TCP connection.
Pushlet
The server takes advantage of persistent HTTP connections and leaves the response perpetually "open" (i.e. it never terminates the response), effectively fooling the browser into continuing in "loading" mode after the initial page load would normally be complete.
Long Polling
Long polling is a variation of the traditional polling technique and allows  emulation of an information push from a server to a client.(comet programming)
SMS
Andriod application can read all received SMS before it goes to inbox.

WebSockets
HTML5 browsers
Mobile OS/Phone leaders are providing Push notification built into their offerings.

My Research - Push Notification in Mobile Ecosystem in 2011 - Part 1


Sometime in 2011, I came to know about push notification being used in mobile ecosystem. I did a short research on this topic. I had made some notes at that time, now in 2014, things are evolved a lot.  Publishing my research on blog so that in curious tech historian can use it their studies.

Its quite a long data sheet so I would be publishing it in parts.

I set the agenda first, here is the basic questions of topics I had tried to discover
1) What is Push Notification?
2) How does it work?
3) How does it look like?
4) Does it supported by different major CellPhone OS providers like IPhone, Android, Nokia, Blackberry? Yes!
5) Any Thirdparty Push Service Providers? Yes
a) Urban Airship provides SDK which developer can use while creating their apps.
b) PyAPNS - daemon
c) Xtify
d) Appoxee
e) Pusher / spire.io/socket.io
f) PubNub [In-App, PNS doesnt work when app is closed]
g) App42( Shephertz)
6) Does they charge for Push Notification service? yes but minimal
7) What are use cases?
8) How can we use it?
9) What will be the business case?
10) Is it possible work out something which connects with other solutions?
11) Whats in Market
12) Will SMS gets obsolete, because of Push Notifications on Mobile?

 In following blogs, I will be publishing answers to above questions.