Building an HTML5 Web App

I have an Android App called Concert Tipper but as yet I have not been able to get the same cross platform App approved by Apple for inclusion into the Apple App Store. I am also building an HTML5 Web App version which will run on any HTML5 compliant smartphone. The Web app will be totally under my control and not subject to any review process just to get it to run on your device.

Users don’t really care about any of the problems associated with getting approvals into App Stores. They just want to run the App on their device no matter what smartphone they use. This is the promise that HTML5 holds. We shall see to what extent that promise is delivered.

I’ve been developing software systems of all kinds since 1979. I’ve been building web sites and Internet services from around 1998. I am no stranger to desktop applications, server applications, web applications and embedded systems to name a few. Picking up the basics of HTML5 and Web Apps recently was a challenge but no more so than mastering any new technology. In fact I have to say that I have worked on far more complicated things in the past.

Before I started to convert my Adobe AIR App to HTML5 I looked around at the many Javascript frameworks that are currently available. This was a chore in itself and it took me some time to decide to use the JQuery Mobile framework to provide a user experience similar to what you might find on a mobile App and also similar to the interface that I developed for the AIR app. I also looked at some templating and data management frameworks but decided not to use them as they all looked a little bloated and overkill for my purposes. Instead I opted to code any requirements in Javascript on the client and PHP on the server.

The server side back end database and scripting already existed of course. I had developed this for the AIR apps. This meant that I could concentrate on the HTML5 and user interface which I have to say is coming along nicely as I speak.

Problems? Yes there are some, of course there are. Most of the time consuming ones tend to be caused by incompatibilities between mobile browsers. Some HTML5 compliant browsers are more compliant than others and getting the App to work satisfactorily on all devices is the latest challenge. Safari on the iPhone appears to be one of the better browsers in this respect.

Speed of operation and user responsiveness is also a challenge with a Web App. With the native AIR App I was able to cache a lot of data and provide the user with a fast UI even on the slowest devices. The Web App requires more time downloading data from the server and Javascript tends to be a little slow on older devices. The trick here is to code an acceptable compromise between download/processing time and user responsiveness.

I’m sure that I will come across more challenges before this HTML5 App is completed so I better get back to work.

The Rise Of HTML5 Web Apps And Fall Of The App Store

Apple App Store misery

A lot of things have happened since my last post. My attempts to get my App into the App Store has been a bitter disappointment and a change of direction towards a universal HTML5 Web App.

My Android AIR app has been published in both the Google Play store and the Amazon Android Store for many months now and it has also been extensively tested on iPhones. On the face of it I thought that it would be a simple step to getting it approved in the Apple App Store and available for use on iPhones but I could not have been more wrong.

After jumping through several hoops just to get the App binary uploaded to the App Store I waited for a response from the Apple reviewer. It’s worth bearing in mind that Apple had already taken $99 from me to allow the App to be tested on designated iPhones. Unless you Jailbreak your test phone there is no other way to run an App on an iPhone outside of the Apple Development prison.

I had expected the App to be rejected the first time. There was sure to be something that I would need to tweak I thought. I was surprised and appalled at the responses that I received however. This is what they said:

“We found the user interface of your app is not of sufficient quality to be appropriate for the App Store. Apps that provide a poor user experience are not in compliance with the App Store Review Guidelines.

Specifically, we noticed your app does not take advantage of iOS platform. It would be appropriate to add iOS specific functionality and UI in order to enhance the user experience.

Please evaluate whether you can make the necessary revisions to improve the user experience of your app.”

Ok, what does this mean? What is wrong with the interface? It seems fine to me and has been through many revisions as a result of end user testing and peer review processes. What parts of the iOS platform specifically should I be taking advantage of?

Of course I asked the Apple reviewers to clarify only to receive responses that were just as cryptic. The exchange of communications went on for some time and it was clear that I was going to get nowhere so I asked them a direct question:

 “Is it possible to achieve the changes that you require with an App developed using Adobe AIR bearing in mind that I am only able to add native iOS functionality to the extent allowed by the AIR framework?”

They responded:

“Thank you for your response. After reviewing your reply, it seems your question would be best addressed by Apple Developer Technical Support , who can provide discrete code-level assistance.”

This is the point at which I decided to stop banging my head against a brick wall. I realized that Apple has recently tightened up their acceptance criteria and that there was very little chance that my cross platform Adobe AIR App was ever going to get approved. On top of that it is clear that any App in the Apple store is under constant threat of being removed at Apple’s sole discretion. So even if I managed to get the App approved there is no guarantee that it would remain available to iPhone and iOS users .

HTML5 Web Apps are the way forward

If I can’t get a native App into the Apple Store then I will build a Web App using HTML5 technologies instead. Done properly a Web App will work on any HTML5 compatible smartphones including the iPhone and it can be made to look similar to a native App. This approach requires no approval from any smartphone manufacturer and can be run directly from my servers. This is a huge advantage. In my next post I will give you some brief details of how I am approaching the HTML5 version of the App.