Monotouch Day 3: To Universal App or not to Universal App?

That is the question.

A Universal App is one that will work on both the iPhone/iTouch and the iPad. One of the things that I’ve been considering from a design standpoint is the question of supported platforms for my apps.

For the app ideas that I’ve created, some apps are definitely platform specific, either iPhone or iPad, simply due to the amount of real estate required by the functionality I’ve designed. So those are really no-brainers.

Where the question gets fuzzy is with apps that could be used on either platform. Do I create platform-specific versions or do I create a universal app that can be used on either?

From a user prospective, it is more convenient to have a single app that runs on either platform, for the following reasons:

  1. It’s cheaper since they only have to buy one copy.
  2. It can be less work assuming that data is stored in the cloud and is synchronized automatically. Their data just "shows up" on their device of choice.

However, it does increase the level of complexity when developing the app.  A lot of the code can and should be organized in such a way that the device itself is irrelevant. The real deciding factor is in the View Controller.

My research has shown there seems to be two schools of thought:

1. Use a single view controller with code like this to make decisions about what to display:

if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone)
    homeScreen = new Screens.HomeScreen_iPhone();  
    homeScreen = new Screens.HomeScreen_iPad();  
window.RootViewController = homeScreen; 


2. Two view controllers that handle each device separately since the iPad has controls that are not available on the iPhone.

I do think it is a bad idea to create a "generic" application that only functions at the lowest common denominator. We need to use the functionality available to us for a specific device.

At this point in time, I really unsure of what my approach will be.  I think I really need to start working on the code for one of the devices then see how much work it will be to actually implement it one way or the other.

If you have some experience and an opinion, or maybe just an opinion, I’d love to hear it.

Leave a Reply 2 comments