If you want to develop, or hire a developer(ahhhm…) to develop mobile application, these are the two big choices. Other options are: Nokia Symbian, Windows mobile, the RIM blackberry and some other platform that are not used by the major public.
For the sake of this document, I’ll focus only on the first two, which are the dominant ones at the moment. I will go point by point, specifying the differences between these two.
Why developing an application?
Before reading more, do you even need an application? If what you want can be achieve with a web site, you might want to stick to that, and wave the application. If what you need is an information page, web page will do the trick, however, there are many reasons to build a custom application:
- Information control – if you have a lot of information on a site (Facebook, anyone?) most devices will have a hard time rendering heavy web content.
- Usefulness. if you want to use the phone additional capabilities.
- Speed – apps will run faster and performs better.
- User access -the user will access application more – that’s obvious.
- Special GUI features – This is one of the main reasons to have an app – you want to enable the users to interact in an easy, fun, and fast way.
- Real world applications that can not be done on a web page, and there are many examples of this – server controllers, diet calculators, camera viewers, security monitors and so on.
- Marketing value – it looks much more professional to have your client downloads your application and have your icon on there desktop. many banks and internet provider do just that, even they can saddle for a web page. The application gives a certain “extra” touch.
If you answered yes to one of the above, you need an application.
Both iOS and Android have an open market where the users can select and install programs, either free or paid for. In both cases you must register in order to publish your application to the public. In both cases payed application will require extra setup. Company account will take longer to set up, in both. However, apple setup usually takes longer, in both scenarios. You can have an already registered developer post your application for you (especially if this is a free one) however, it will appear under his account.
iPhone uses Objective C which is horrible (sorry, but it is true), crippled language, that in spite of what some people say is not really object oriented. However, you can add C++ code to apple project very easily, which xCode supports fully. However – the C++ code can not be used for apple library calls or OS calls, but you can create you own classes. Apple uses Xcode as development IDE, and, apple development can be done only on Apple computers (if not considering some third party tools). Apple have only one product, iPhone (not referring to the ipod) and if the iOS version is right, the application will run – as long as the iOS installed is higher or equal to the application requirement.
The Android on the other hand, uses Java which is 100% object oriented, uses eclipse as the IDE, that can be installed on any Major OS – Windows, Linux and Mac (yes, even Mac). However, Java is Java, and it does not output machine code, so it might take a longer to load since it does need second compiling. The Java platform was selected in order to support a wide range of phones, and it does.
giving these differences, Apple application might be more expensive to develop.
Both OS limit the permissions a developer can have, But in a very, very different way. on Apple, the iOS will enable you to access the internet, create a local private DB and files, get the GPS location (the user have to approve this) access to the contact list (user have to approve this), send (through the regular SMS UI) but not receive a text message and that’s about all. If you see application that can do more, it is running on a jail broken device, in which you can do whatever you want, but we are not referring to these. for most applications these limitation are OK, and they can execute well. on Android, you have to define permissions when writing the application. The user will see them when he or she installs the application and can decide then if he wants to install it or not. If the developer didn’t ask for a certain permission – he won’t be getting it later on. In Android, developer have to ask for permission to do almost anything, including accessing the internet. However, he can also get access to GPS data (same as iPhone) SMS data (not applicable on iPhone) Calls data (not applicable on iPhone), can start services at boot time (not applicable on iPhone) and change many system aspects (not applicable on iPhone). The beauty of it all – the user view all of these permissions at install time. if he doesn’t approve, he can wave installing this application. If he choose to install it, he agree to give that application the permissions it asked for, and he will not be bothered with them later on.
To deploy an apple iOS application, you must have an apple ID. You must code sign your application with apple and post it to the app store (there are some cases that you can distribute them yourself, but only for a small user group). In Android, you can send your application by mail, have it on a web site (many vendors do) without any contact with Google. to publish to Google market, you do need to have an account. The signing process however, is much simpler, as the signing up process.
On Apple, every application submitted to the app store is going through a ratification process, in which the application is reviewed be apple. The amount of time taking to do that varies, and only after the application was approved it will go to the store. This process is done for every application, and will be done repeatably for every update this application may have. On Android, the application will be submitted automatically. if the users won’t like it, they will just remove it…