It took me 2 weeks from initial inception to AppStore submission, which I believe is a very short timeframe considering this is my very first attempt and I had to start from scratch: from downloading and installing the OS and dev tools to learn each and every bit of the technology I picked.
By the way, did I mention I used Apache Cordova (v 2.7.0), previously known as PhoneGap?
Well, Apache Cordova itself greatly ease the task for people like me having some web development knowledge because all you have to do is HTML5 development. You don’t even need to have the classical development tools (XCode and stuff) to start programming your app.
I decided to use jQuery Mobile (v 1.3.1) for the UI, and after a couple of trials I was able to turn my mockups into real screens in a matter of minutes. Piece by piece the UI was practically shaped in less than a day, I only had to wire the logic behind it to make it of any use.
I had some previous experience with jQuery and event based programming is not something foreign, I just had to adapt to the new events and the jQuery Mobile DOM enhancement model, but that wasn’t really though. A little bit of trouble was caused when I started using HTML5 WebSQL: I thought there was a better standardization on that side than I found, but an opensource library called PersistenceJS eased the task again.
Everything looked great, even when I started testing my app on the device by serving it from a Tomcat instance and opening it into Safari Mobile on my iPhone: it looked just a little bit slower, but still responsive enough.
Next step was wrapping the app within the Apache Cordova framework and here I spent most of my time: not because it is something complex, just because it was something completely foreign to me. Luckily the online guides are well written and easy to follow even to someone that has no experience at all with OSX, XCode and iOS development.
The real disappointment came once I managed to have the Cordova integration completed and my app deployed on my iPhone 4S after paying the $99 yearly fee to Apple: the app runs very slow, unacceptably slow considering what it does.
Nonetheless I decided to go ahead: I wanted my app published on the AppStore and complete my task.
Here came my second disappointment: Apache Cordova plugins, those little bits of code that allows Cordova developers to integrate native features not included into the core SDK, are a big mess, probably due to the recent migration of the project under the Apache Foundation umbrella.
I need three plugins only: local notifications to create alarms, AdMob integration for advertisement and Google Analytics for… guess what! Well, none of those plugins worked straight away in the version I downloaded.
I might have downloaded the wrong versions from the wrong repository, I admit my lack of knowledge, but what I did for each one of those is run a Google search and pick the results from top to bottom until I got something looking promising: the usual process.
After many trials, many errors and many swears I managed to get enough knowledge on Cordova, XCode and Objective-C to fix/update the plugins myself: I will share my fixes on GitHub as soon as I manage to fork the right project because there are so many forks out there that’s not even easy to identify the correct one.
The end of the story is Apache Cordova is a fantastic framework to develop mobile apps, the native OSes though do not provide performing components to empower Cordova and the moltitude of plugins need some sort of coordination and management to bring some order and clarity.