During a project there always comes time to determine what the minimum version of iOS to support is for a given project, last night I stumbled across a handy infographic for checking which devices support which OS versions as well as some other handy feature related info.
I was given the chance to order a new work phone recently and whilst I could’ve upgraded from the iPhone 3GS to the iPhone 4 I decided to make the jump to Android with a shiny new Samsung Galaxy S2, I’ve still got the iPhone for testing though so I’ll be jumping from one to the other. Having been a long term iPhone user it does feel somewhat like a switch to the dark side but if I’m going to design Android apps I’m going to have to understand the good and the bad parts of both platforms.
One of the most important considerations when designing mobile apps is the user’s expectations and that varies considerably from one platform to the next and despite their differences iOS and Android are comparable platforms, much more so then Windows Phone 7 or Blackberry. Both Apple and Google have created thriving downloadable app ecosystems that together are fast becoming the platform of choice for the modern smartphone, I’m confident Windows Phone 7 will become a major player in the space but there’s a long way to go before it gets there – as for Blackberry and HP/Palm – who knows?
So now to the results of my little experiment, in this post I’ll focus on the features and capabilities that I like about Android and whilst I will cover the things I don’t like, this is not a rant for or against either platform, it is intended to be as Bill O’Reilly beautifully puts it without a hint of irony: “fair and balanced”.
The best features…
The “back” button – at first it seems redundant to have a hardware based button for just one purpose but once you get used to it you realise how handy it really is. Every time I go back to the iPhone I end up in a situation where I find myself bailing out of an app when all I really meant to do is back up a step, everyone that owned a Sony Playstation or PS2 will know how natural it felt to always use the triangle button to go backwards and I really do find I miss it when I’m on the iPhone.
The pull-down notifications bar – this may well be more of a Samsung customisation but the top status bar can be pulled down like a roller blind to reveal some quick key settings (turn on/off bluetooth, Wifi, GPS) as well as showing notifications such as apps needing updates, new emails, push messages, etc. It’s a brilliant way of accessing those features without compromising on screen real-estate.
Swype – if you’ve not come across Swype already you have to give it a try, it is an alternative keyboard where you type words not by tapping each letter but by drawing lines between them. This might sound a bit odd and it is at first but once you get up to speed it really is a delight to use. The main issue I have is that whist you’re in the middle of a sentence and you’re flowing nicely from word to word if you suddenly hit a word that Swype doesn’t recognise or isn’t in the dictionary your entire flow is broken and a hole is punched straight through the fourth wall of user experience. As soon as you have to start thinking about what you’re doing it’s game over in UX terms, something Apple have turned into an art form and most find hard to emulate.
‘Front Screen’ and ‘Back Screen’ applications – the iPhone has a ‘desktop’ and you’re stuck with it, sure you can have folders but even they’re a little limiting and I find myself completely unable to organise my apps in a way that makes sense. Android on the other hand has a distinct separation between the ‘desktop’ where you can have both apps and widgets (time, calendar, twitter, etc.) and the full list of apps, this makes it easy to de-clutter the main screens of your phone but you’re only ever one click away from your entire app library.
The bad parts…
Massively modal menus – I really, really, really don’t like the way that most of what you might call ‘right-click’ actions bring up giant, screen-filling menus from which to choose options. For example, if I’ve opened an email and I want to mark it as unread I have to come back up to the inbox, hold my finger on the email for a second or so then the screen is filled by a giant ugly menu (with plenty of dead-space) from which I can choose to mark the email as unread. On the iPhone if I’m reading an email I’d just press the “Mark Unread” button. No really, that’s it.
General flakiness – it’s hard to qualify this exactly but I’m referring to the many times where I’ve tried to do something and received some weird obscure error message and thought “oh well, that didn’t work then” without knowing why or what to do instead. As an example when I first started playing with the phone I bounded like an excited puppy towards the Android Market, I signed up for an account and picked up a few freebie apps before deciding I really had to have Nmap so I clicked to buy and got the message: “A server error has occurred”. After a little Googling around I finally determined that the cryptic “server error” was just because I didn’t have my card registered in Google Checkout – why couldn’t it have just told me that in the first place? Issues like this really make me think that Google just doesn’t “get it”, at least not yet.
Text selection – again it’s hard to describe but in a nutshell – it’s horrible, I almost never end up putting the cursor in the correct spot and about a third of the time I end up opening a modal menu where you can copy and paste (it works but it’s clunky not very intuitive).
Security – I’ll start by saying that I’ve not personally had a bad experience of security on Android but I know there are plenty of known instances and I can’t help feeling a little ‘ooky’ about download strange and unheard-of apps knowing that anyone could have put them into the Android Market and they didn’t have to go through any approval process.
I’ve been doing a little research into how best to manage the whole iOS Development / Ad Hoc Distribution (UAT / beta) / App Store (prod) lifecycle and whilst I’m not quite at the stage where I’m ready to write-up a workflow document I’ve come across some useful resources that I thought might be worth sharing. Since all compiled iOS apps must be signed there are some extra considerations when compared to rolling out regular compiled or interpreted code, sure you can brute-force your way through the process (I did this for my Veggie Phrases app) but that can only ever work well when you’re a one-man-band developing apps for your own purposes.
If you’re developing apps for clients or have a distributed development / testing team you’re almost certainly going to think a little more carefully about how you manage keys, certificates, provisioning profiles, App IDs, bundle seeds, bundle identifiers and so on. There’s not much structure to this post since it’s just a ‘what I’ve found so far’ effort but hopefully the resources might prove useful…
I’ll start with what is probbaly the best piece of Apple documentation I could find: the iTunes Connect Developer Guide. After banging my head against the desk trying to get Veggie Phrases onto the App Store it’s the document that made all the pieces fall into place, athough it’s a pretty high-level overview.
Antonio Holguin has written an excellent post: Apple iOS Development Process Summary which explains the whole end-to-end process in depth. It’s not for the faint-hearted but it answered a lot of the questions I had where I’d found the rest Apple’s documentation lacking (please correct me if I’m wrong, perhaps I’ve just not found the best bits?).
If you need to write applications that share Keychain Access there’s some useful information on UseYourLoaf.com, even if you don’t need to do this it will help understand how to use Bundle Seed IDs correctly.
Another challenge with iPhone app development is how to distribute applications to remote testers and how to conduct a beta / trial without going via the App Store, thankfully TestFlight solves this by providing a simple way to gather device UDIDs and distribute the Ad Hoc executable over-the-air. The service is clearly evolving and it currently does a very good job of what it does but seems to be suited to small-scale development and lacks some of the features that a corporate development team might need (audit trail, alerting, security hierarchy).
I’ve also come across the iOSDev UK Conference which may be interesting, I’m not yet sure whether I’ll attend since I’m only a casual developer but some of you may find it worthwhile.
Well, I hope that helps people, if anyone has suggestions for additional resources covering process management, workflows, etc. I’d be glad to hear it.
Just a short post to say that Veggie Phrases is now available on the Android Marketplace, you can read the details on AppBrain - if you’ve not seen the app before it’s a handy pocket phrasebook to help travelling vegetarians and vegans communicate their dining preferences when overseas and best of all it’s completely free!
I’ll follow up when I get the chance with a brief description of the process I followed but for now, please grab your phone and give it a try. Let me know if you have an issues, I only had a chance to test it briefly since I’m an iPhone user!
I registered as an iPhone developer earlier this year primarily to get my hands on the pre-release iOS upgrades but recently I was asked to help design the user interface for a BI-related smartphone application and it started my brain ticking. When it comes down to it I’m a BI + SQL guy and it’s been a long time since I’ve actually gotten my hands dirty with real coding (remember the BBC Micro anyone?) but I have spent time on-and-off dabbling with PHP, HTML, CSS and Visual Basic as well as having managed a couple of development projects so whilst I’m rusty I’ve not been totally out of the loop.
- Content – what is the app for?
- Styling – how can I achieve the iPhone look-and-feel?
- Compilation – how to turn a website into an executable binary?
- Publication – what do I need to do to release my creation in the wild?
Since I knew I’d be putting some time into it I didn’t want to build an application that was just a glorified tech demo, I wanted to build an app that serves a valid purpose and that doesn’t exist already which was quite tricky. Fortune was clearly smiling on me since I started working on this project in the same week that I went for a short break to Bratislava (it’s lovely by the way, you should go), being a vegetarian one of my pre-holiday tasks is to find out how to say “I am vegetarian” in the local language and for that I use the International Vegetarian Union’s Vegetarian Phrases in World Languages. It’s a great resource and I usually just print the phrases to take them with me but then I had the lightbulb moment – wouldn’t it be brilliant if I had an app that did this? Thankfully the manager of the IVU agreed with me and so I had my concept – a veggie phrasebook.
Next came the styling issue, if you’ve been an iPhone user for a while you’ll be used to the default look-and-feel that comes with most iOS applications and I had no idea how I was going to recreate that. Thankfully I’m not the first person to have hit this brick wall and developers with skills that are orders of magnitude better than mine have built a number of solutions, the best one out there in my opinion is JQTouch, a JQuery plugin that mimics the native iPhone styling as well as providing excellent navigation animations. A demo of JQTouch is available here: JQTouch Demo and is will only work if viewed on an iPhone or Android handset or in a WebKit browser (e.g. Safari or Chrome).
My general approach to learning new technologies tends to be very simple: just start - sure, you’ll get it wrong and it might be frustrating for a while but you’ll be learning all the way and come out the other end battle-scarred but victorious. Thankfully JQTouch fits my methodology perfectly, there’s no installation to speak of, just download and unzip the package and dive in there with your favourite text editor (I’m fond of TextWrangler on Mac and Notepad++ on Windows). JQTouch essentially uses one giant HTML file with divs for each ‘page’ of the application, the file includes the JQTouch libraries and a couple of CSS theme files and image sets – one in black (as per the demo) and one titled ‘Apple’ which looks very much like the settings page of the iPhone.
Having assembled the content, built the base HTML pages and customised the theme my next concern was how to turn it into a compiled app. It’s quite nice being able to run the entire app in a browser window but I wouldn’t quite feel like I’d regained my developer strips without a bona-fide compiled app and there are a few toolkits out there that will help achieve that. The most interesting toolkit to me right now is Appcelerator Titanium which looks powerful but might take some ‘discovery’ time and since I wanted to do the best possible job but in the shortest possible timescale I opted for PhoneGap, a cross-platform toolkit that allowed me to literally copy and paste my web root folder and make a compilable Xcode project almost immediately (seriously, read their Getting Started).
If you’re new to Apple development in general, Xcode is Apple’s development environment for both Mac and iOS applications and comes bundled with the OS as standard – it’s a little like Visual Studio in that it’s an IDE but the similarities end pretty quickly after the obvious. Personally I find Xcode to be a little fiddly and not as intuitive as Visual Studio but that could be a little bias from having spent a lot more time in the Microsoft camp when it comes to development. Nonetheless, Xcode is a great IDE and other than spending the best part of three hours trying to nail down my digital certificate signing chain (what happened to “it just works”?) it became surprisingly easy to debug the app on my iPhone and build the final version of the app.
My secret weapon in this whole process was (believe it or not) the data professional’s Swiss Army Knife – Excel. I’ve often said that if you could teach even half of the world’s office workers how to use Excel properly you could change the world and I believe that the same is true even for the classically technical professions who eschew the GUI over scripting methods. Excel’s blend of spacial referencing and a comprehensive function library make it an ideal code generator and I regularly use it to write large batches of SQL – this time I simply copied the IVU phrases into a spreadsheet, sorted and categorised them and used formulae to generate the best part of over 4,500 lines of HTML – even the menus came from Pivot Tables.
A little bit of tweaking and I was ready to submit the binary to Apple for approval, but that’s enough for now so I’ll talk a little more about the submission process in a future post. Sure, there might be a few kinks round the edges but I think it’s a reasonably good first app and I’ve gained a stack of good experience building it which over the coming months I intend to share in a series of posts.
If you’d like to take a look please check out my Veggie Phrases app page or you can try it out (it’s free) here…
Today Apple have approved my first iPhone application - Veggie Phrases, based on the IVU’s Vegetarian Phrases in World Languages with their kind permission. I’ve already spotted a dozen spelling and other errors which I’ll correct in the next update but at least it’s out there now.
You can read the full description here or download the app from iTunes by clicking on the button below…