7

I am updating one of my apps and I have a dilemma:

In places I wanted to add iOS 4 unique features I had no choice but to implement them only for supported devices - no dilemma here.

The dilemma is when I have 2 ways to achieve the same effect, one in the "old way" and one in a "new way". A good example is using blocks for animation, I can use this syntax:

[UIView animateWithDuration:2 animations:^{
     self.segmentedControl.alpha=0;
 }];

that will be supported in iOS 4.0 only. or use the old way which will be supported in all versions including 4. (There are many other similar examples.)

What do you do and why?

The blocks are really great but I will have to write more code if I want to support previous versions? What do I earn from using them in that situation?

shannoga
  • 19,649
  • 20
  • 104
  • 169
  • 1
    You're just going to have to make a call whether or not it's worth it to support the older versions of iOS. How many of your customers are still using devices that don't support iOS 4, and how important is their business relative to the extra amount of coding effort that it would take? No one else can answer this question for you. – Cody Gray - on strike Jan 08 '11 at 12:41

4 Answers4

9

Generally, the rule is to support the lowest version of the OS that provides the capabilities that enable you to deliver the product you want to. I made all of my applications require iPhone OS 3.0 about a month after that launched because I needed to support custom copy and paste, as well as in-application email. For the free version of one of my applications, I wanted to try out iAds, so I made that 4.0-only.

The possibilities for internal code improvements that are provided by a new OS are a little trickier to make rules about. As Joe points out, the time you spend struggling against an old way of doing things, that could be saved by moving to a new OS version, is time that you aren't fixing bugs or adding that next great new feature. At some point, the elegance of a new way of doing things (like blocks and GCD) is just too compelling to ignore, even though it may not directly add any new features to your application.

On the Mac, many developers maintain support for the current version of the OS plus the previous one released by Apple (Snow Leopard and Leopard, at this time). Only when a new OS comes out do they drop support for the previously one-behind version. Others, like Wil Shipley, advocate jumping on board the new OS exclusively right away and ignoring old versions. The argument here is that people who won't pay for Apple's new OS versions or who don't keep their systems up to date are much less likely to buy your third-party application.

I've seen this as well on iOS. For example, I ran a test of ads targeted to different versions around the launch of 3.0 (when iPod touch users still had to pay for their OS updates). While downloads of a free version of my application were relatively consistent between 2.x vs 3.x users, almost no 2.x users paid for the application while 3.x users did.

No one complained among my paying users about the early move to 3.0 (they did speak well about the new features, though) and only two people have complained about my free version going 4.0-only, compared to 56,000 that have upgraded without a problem. While I would give a little time for a transition period, I believe in moving to new OS versions relatively soon after they launch. Right now, I'm in the process of making everything of mine 4.0-only so that I can modernize the codebase.

Finally, one last benefit you get from going with the new OS version is that you become much more attractive to Apple, who always wants to promote applications using new features in their new devices and OS versions.

Brad Larson
  • 170,088
  • 45
  • 397
  • 571
2

What is your goal for developing this app?

If it's revenue (or fame from high download counts), then look at the size and purchasing power of the additional market segment versus the development (and test and QA and support) costs.

Old device owners and old OS users are (1) a minority (check the analytics for the current number, on the order of 10% or less and dropping), and (2) they buy far less apps on average than people with the latest devices and OS versions. For non-blockbuster apps, this small additional percentage of potential downloads may not be worth the extra device testing and QA time that supporting these customers requires, much less the development effort.

If you are doing an app for charity or learning, then go ahead and donate your hours of effort to the 1 guy (or other small number) who likes new apps for their old device. It's good skill set to have if you want to jump to using some super new feature in the latest OS release just as it comes out, a few weeks before the majority of users upgrade their device's OS to match.

hotpaw2
  • 70,107
  • 14
  • 90
  • 153
1

If you're trying to make money selling your software, by all means you should support as many versions of the OS as possible, and the easiest way to do that is to write one piece of code that will run on all versions - hence, use the old style of animation blocks.

MusiGenesis
  • 74,184
  • 40
  • 190
  • 334
  • @Joe Blow: Are you a troll? Because you sure don't sound like the real deal. – Cody Gray - on strike Jan 08 '11 at 14:07
  • Joe Blow's comments make sense in a business decision context. Is spending 10 hours testing on old devices likely to produce more income than spending 10 hours on your next great app idea for the current OS? If you have zero new app ideas, then maybe yes. – hotpaw2 Jan 08 '11 at 16:13
  • @Joe Blow: I want to find you irritating, but somehow your act is actually kind of amusing. You've inspired me to get back to my STAGGERING, AMAZING NEW MUSICAL IDEAS!!!!!!! – MusiGenesis Jan 08 '11 at 21:33
0

With the new animation way you can use a block for completion, rather than having to create a separate method, it's much cleaner if you have multiple animations that need to do something on completion. Also it's easier to read, because its not so spread out. There's bound to be some technical advantage but I don't know about that side of things.

Jonathan.
  • 53,997
  • 54
  • 186
  • 290