User Notification is the first aspect of cloud push that you must understand. When a user is actively working with an application on a mobile device the user interface (UI) of that application can continually update information displayed to the user as the state of the application changes. For instances, an email application can update the number of emails in the inbox as new emails arrive. When the user is not actively using an application, that application can not rely on its UI to convey new information to the user because the UI is not visible at the moment. Mobile devices provide a number of ways to alert the user of a state change occurring in an inactive application. A status bar can display an alerting icon, or a sound or vibration can occur. For instance, an email application can display an icon indicating that new mail has arrived since the user last viewed her inbox.
When a user notification is the result of some state change coming from outside the device over a network connection, we refer to that as Cloud Push. The dominant mobile platforms all provide Cloud Push mechanisms that can be incorporated into an application. Specifically the mechanisms are:
These mechanisms can be integrated directly with a native mobile application to achieve appropriate user notifications triggered from the network cloud.
Beyond these proprietary push mechanisms, other common network protocols can be considered for cloud push notification, such as:
- SMS text messaging
These mechanisms have the advantage of ubiquitous support across mobile platforms, relying on the device's built in support for these protocols, but won't necessarily integrate tightly with the native application.
The concept of push in web applications was completely foreign until the advent of Ajax, and more specifically Ajax Push. Ajax Push makes pushing asynchronous state changes to a web application possible, so an active web application can behave much like an active native application, pushing state changes to the UI in a spontaneous fashion as the state of the application changes.
When a web application becomes inactive, not only is the UI unavailable, the network connection back to the server is also unavailable, so Ajax Push connections cannot be maintained. In order to support cloud push to web applications, ICEmobile-Faces augments Ajax Push with a priority push mechanism that will utilize a cloud push connector to a native [Device Container]. Even when the web application is idle, Ajax Push can send priority notifications over a cloud push connector to the device and alert the user with standard user notification mechanisms on the device.
We now review the Ajax Push mechanism with respect to active and inactive web applications.
The standard Ajax Push mechanism relies on reverse polling and uses a blocking connection to facilitate asynchronous page updates. The basic process is illustrated below.