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.

Waiting For Review In The Apple App Store

I can’t tell you how relieved I felt last week when I finally managed to get the App uploaded to the Apple App Store and saw the status change from “Waiting for upload” to “Waiting for review” instead of “Invalid binary”. The process had been painful and there was precious little help from Apple in diagnosing the problems.

Provisioning for distribution

The first step in the App Store submission process is to prepare the binary package in a format acceptable to Apple. This involves obtaining two new files from the development portal. You need a distribution signing certificate and a distribution mobile provisioning file. These files are used to create the distribution binary package in the same way as the development packages are created for testing the App on suitably provisioned test devices.

This is a fairly straightforward task but I have a big problem with it because it means that I had to create an upload package using files and tools in a way that I can not test before uploading to the Apple Store. This might not sound much of a big deal but I’ve been creating software solutions for more than 35 years and experience tells me that that if something has not been tested then there is likely to be a problem with it. This time I had to trust myself to get it right and hope for the best.

You can not do this without an Apple Mac

The next problem was uploading the package to the App Store but before I could do that I had to take the “.api” file, un archive it and re-zip it up on an Apple Mac computer. The archive can only be produced on a Mac as it adds some codes that are not used by other archivers. As I had created this App as an Adobe Air project on a Windows machine I had to find a Mac to perform this step. I also knew that the package can only be uploaded to the App Store from a Mac and I don’t actually own a Mac. I had to find a friend with a Mac who was prepared to do this for me.

Luckily my friend Huw has a Mac and he was interested to see how this process works so we were set to go. After he had unzipped and rezipped the package he downloaded the Application Uploader software and attempted to upload the App for me. When this App finally gets approved I will need to acquire a Mac to maintain Apps in the store.

Restrictions on members

We noticed that we were only allowed to upload Apps using the member account designated “Agent”. It was set to the originator of the main account who was not involved with the development process. We tried to reassign the Agent role to one of the developers using the portal. Unfortunately all attempts to do this failed so we ended up logging in with the main account that we knew had the Agent role assigned. Not ideal but that seemed to work.

Invalid binary!

All appeared to be well during the upload and I saw the status change from “Waiting for upload” to “Upload received” and I thought we were winning. Then the status changed to “Invalid binary” and our hearts sank.

What was wrong? Well the App Store is supposed to send you an email when this happens containing a description of the problem but we didn’t get anything. We tried again from different accounts and attempted other minor changes but nothing worked. Invalid binary every time. It took us two days to find the problem and in the end it was so simple yet so not obvious. I shall leave the explanation of this to a later post.

So now it is uploaded and it has a status of “Waiting for review”. Review is when a human tester will give the App a test drive and I have every reason to believe that they will find something wrong with it that I will have to fix before they approve it. Until then I can relax.

If you have an Android phone you can try it out right now by installing it from Google Play Concert Tipper. If you have an iPhone then it should be available in the Apple App store soon.