Being both a mobile developer and an avid phone user, I have two somewhat different perspectives. As a user, over the last several years I have owned a multitude of mobile devices: G1, Nexus One, IPhone 3G, IPod Touch (4th Gen), IPad, and IPad 2. As a developer, I have a combined 13 apps in the android market and app store (all independently developed and released).
Why I Use Android
Despite the IPhone 4 having admittedly better hardware (damn that retina display is nice) I much prefer Android devices. The reasons have everything to do with software:
“Multitasking” on iOS is a joke. I’m speaking right now from the perspective of a user, but trust me, I also truly know this, having been in the shoes of a developer. Notifications are horribly presented in modal dialogs; in situations where I have a large number of notifications, usually all but the last one shown to me are lost. I also desperately long for an IM client which I can use on my IPad which I can naturally interact with while using other apps. No such app exists since all the apps are forced to go through the cumbersome notification system. On Android, as in a desktop operating system, applications can truly run in the background; on Android, IM can be almost indistinguishable from texting (which is coincidentally also better than iOS).
Android is an intent based operating system. What this means from a user’s perspective is a richer more deeply integrated experience. If I am browsing the web and click on a link to a product on Amazon.com, the context will switch and the product will be opened in the Amazon app. On iOS, clicking that link would just result in the link being opened in the browser (often times losing the context of the originating application). Android allows apps to have a deeper and more natural hook into the operating system and user experience. For example, in the coming years, when Google Voice finally gets a true VOIP client, it will be able to seamlessly replace the default calling application.
3. Back Button
The back button is a killer feature and is way more than just a physical button. The android operating system is essentially stack based. Going from the above example of clicking on an Amazon product link: after the Amazon app is opened, I can intuitively press the back button to return to the application from which I clicked the link. I cannot count the number of situations on iOS where I lose a retrievable context of where I was inside of an application by clicking on a link. Nor can I count the number of applications which pop open browser dialogs when you click on a link as a hack to fix this. Imagine how ridiculous it would be if it was the norm for desktop applications to all use an embedded browser. Imagine how unusable it would be. The closest equivalent on iOS for the back button (that I know of) is double tapping the home button (or four finger swiping) to get a list of the most recent apps and then clicking on the app you last used. Lots of users don’t even know you can do this.
The menu button on Android is also very convenient (although not as vital) and saves lots of prime mobile screen real estate.
As a user, I never need to buy an application. Moreover and surprisingly, there are many apps on Android that simply have no equivalent on iOS. If I want to use instant messaging, free apps exist. This is the status quo. Not so on iOS. Also, there is a GMail application which actually has an intuitive interface. I am shocked by tech-savy people who use the iOS mail application with their GMail account in an outlook-like fashion. Things like Wifi and USB tethering are also built in to the Android operating system.
Newer version of android have a turn by turn navigation application by Google which uses data from Google Maps. Although some might consider this a smaller feature, this is hands down the best navigation application I have used and has rendered my Garmin navigation obsolete. I use this all the time. There is no equivalent for iOS, even though some apps exist in the app store with double digit price tags.
Why I Develop for iOS
Despite learning mobile development on Android and also preferring Android’s development framework and tools, I have shifted all of my app development to iOS (at least for first releases). One of my most recent games, Word Topple, is only available on the app store. The reasons have nothing to do with software:
iOS has a much more profitable app economy. Even though it is ridiculously hard to make a hit iOS app, an iOS application is much more lucrative than the same android application with the same number of users. On iOS, users expect to have to pay for applications and they do. Each user of an iOS application is also much more valuable than their Android counterparts.
To back this up with some data, I will reveal some numbers on one of my games, BeWorded (in the Android Market and in the App Store). Both versions are identical ports and have never been marketed. They have also both not been updated in months. The primary source of revenue for this app is through AdMob advertising. Interestingly enough, both versions have had almost exactly the same number of impressions (~1.5 million). The iOS version has a CPM of $0.30 and the Android version has a CPM of $0.08. The iOS version is roughly 4x more profitable with an identical user base. Some of my other Android apps have even worse CPMs.
2. Game Framework Maturity
Let’s face it, most user’s play lots of games on their mobile devices. Games are huge. On iOS, there are a number of game frameworks with very active communities, my favorite being cocos2d. Android, on the other hand, suffers from a lack of mature game frameworks. I first started writing games on Android and have tried virtually all of the 2D frameworks I know of. I wanted a full 2D scene graph and none of them were sufficient. I ultimately wound up using an incomplete port of cocos2d to android which suffers considerably in performance and in completeness, but is getting a lot better. This fact has resulted in iOS being a much better platform for developers and users with respect to games.
Thoughts on the Future
Android is a much more advanced and well though out operating system compared to iOS. It is open. Its applications are free. Even its development tools are more modern (which I will go into in another post). Game frameworks will eventually catch up and the communities are growing. The biggest leg up iOS has over android at this point is hardware and aesthetics, and that gap is closing fast and might already be closed. Unlike the laptop market, other handset manufacturers like HTC and Samsung are producing amazing devices. The IPhone was clearly superior when I was on my G1. After upgrading to a Nexus One, my phone was superior to my friend’s IPhone 3GS’, before the IPhone 4 was released. Next generation phones like the soon to be released HTC Sensation and Samsung Galaxy S2 are going to blow existing devices out of the water. The bar for applications on Android is also increasing and the truly good, sexy apps are floating to the top.
Although I currently still develop primarily for iOS, I expect that to change soon. All of the low hanging iOS applications have long since been built and more and more apps are becoming free to compete with the incumbents. I expect this to affect the profitability of iOS development and the expectations of users. Android is also gaining market share and truly has a better user experience. People are starting to openly prefer their Android phones to their friend’s IPhones. If I had to make a long term wager on a mobile OS, all my money would be on Android.