Hybrid apps

By: on August 30, 2013

We recently developed an iPad app. It’s requirements were very simple: Essentially, the app was to be a brochure that a salesperson could use to demonstrate and talk about products with a customer. It needed to be able to display text and videos, and provide links to further online web resources and PDFs.

iOS development using Objective C is a lot of work, and completely unnecessary in this case – the app requested was basically just a static web page. So we considered using PhoneGap. PhoneGap is a framework that allows you to write HTML5, JavaScript and CSS and then compile it into a thin app-wrapper that hosts the content in a webview on a device.

One of the aims of PhoneGap is that you can compile the same content for different platforms – iOS, Android, etc. PhoneGap then provides you with a common (JavaScript) API for interfacing with capabilities of mobile devices not currently in the HTML5 specification – for example, using the device’s camera.

Our client had already built a prototype with Intel’s HTML5 development framework (Previously called Appmobi) and they were keen to go ahead with that. The Intel framework is a very similar idea to PhoneGap, and while it is commercial, rather than open source, much of the code involved is open source and the whole framework is free.

After investigation it seemed like this would offer a significant benefit compared to PhoneGap: Intel also provide cloud services to support your app in a tightly integrated way – that’s rich push messaging, analytics, and other features. This is what they want you to pay for.

My verdict: The framework is effective and quick to use, but rough around the edges. At times it has been quite a pain to use. I don’t know how it compares to PhoneGap, but the Intel framework is poorly documented. Much of the documentation is along the lines of:

// Does a thing
// x - the x value
// p - the p value
function doThing(x, p) { ... }

The documentation seems to have been gradually improving over the past few months, and this may cease to be a problem in the future. I ended up using the official forums quite a lot for help from their developers. The responses there varied from very quick and to the point, to complete failures to even acknowledge my question.

On the plus side, the custom version of jQuery it ships with (“The Intel App Framework”) is small and fast, and if you can figure out how to do something, it is generally pretty simple and sensible. It is easy to integrate touch gestures, carousels, and page transitions that look “appish”.

Their default CSS file is something of a problem. Much of it is required to get the afore-mentioned features to work. However, it also imposes some default styles in a way that you can’t easily separate out (e.g. just by including one file, if they had split the rules across several). Instead you have to spend a lot of time carefully overriding their styles.

They provide hosted build servers (and indeed, that’s the only way to build) which help you manage all the different assets, certificates, and manifests you need for building for the various platforms. We only needed iOS support, but they can build for an impressive range of platforms – all the mobile platforms, Windows 8, as a straight web app, and more.

You end up with an app that can look really good (although that’s mostly HTML5+CSS) and behaves and feels like a native app. The transitions and touch response will never be as slick and responsive as a native app, but your development time will be much shorter.

This framework will do the job, if you want to build a hybrid app, and particularly if you need to be able to deploy to a wide range of platforms, but I would happily switch to a better framework as soon as I found one.


Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>