As you all are aware, the current era is dominated by mobile devices, and organizations all over the world are eager to make their products mobile. While going mobile, each organization has its own thought process of how their application would look, behave and perform. Most of the organizations want their applications to be functionally same but native in nature on different platforms, thus reaping the rich benefits each platform provides and making the application navigation friendly. Thus the users of the respective platform find the application easy to use.
On the other hand, there are organizations which focus on their branding and want the applications to look and navigate in exactly the same way on all available platforms, most of the times the applications look and feel and navigation resembles their website. This makes life of their existing users very easy as they find everything familiar from the moment they install the application. There is also a third type which believes, why we should invest money and efforts on individual applications for each platform when all applications are going to perform the same function.
For the organizations of the first type, native applications are suitable. But for the other two types, a hybrid application is the most recommended option. Hybrid applications use HTML5, CSS3 and JavaScript for rendering the views but they are not purely web-based as they are packaged as applications for distribution and have access to native device APIs. There are several frameworks available which facilitate such mobile development.
I have worked on several hybrid applications, and would like to share my experience about this project where a fully functional website was already in place and we wanted to make some of its features available on Android and IOS mobile platforms. The Web APIs which were already in place for the website were to be consumed in the mobile applications too. Distributed Access Control System (DACS) authentication had to be used for secured communication .The timelines were really demanding and the same fluid screen layouts were to be used on both the platforms. Looking at the requirement, we decided to go for a hybrid application instead of native.
Now the next task was to choose an appropriate framework. Out of the several options, PhoneGap (by Adobe) and Titanium (by Appcelerator) made it to the finals. PhoneGap does not expose many native UI controls to JavaScript, where as Titanium does expose comprehensive UI APIs. Thus, a Titanium application can look more native than a PhoneGap application. Titanium primarily supports iPhone and Andriod platforms but some of its UI APIs are platform specific. Thus usage of such APIs would reduce the cross platform ability.
On the other hand, PhoneGap APIs are more generic and support a wide range of platforms such as iPhone, Android , Windows Mobile, RIM, Symbian etc…
In order to keep the option of supporting more platforms in future open and since native look and feel was not a prime focus, PhoneGap framework was chosen. PhoneGap was instrumental in facilitating rapid development of the applications. We were able to develop this application with large number of navigable screens for both Android and iPhone in a very short span.
Using native features like geo-location for tracking user requests, local storage for maintaining state across the application, alert boxes and application navigation history was a piece of cake.
Over the last couple of years, we have worked on several hybrid applications with PhoneGap with great results. It will be really nice to know your views about PhoneGap or any other cross-platform mobile application development framework.