Fork me on GitHub
Home

iOS 3.x is Dead

29 May 2011

In my last post on iOS App Lifecycle and UILocalNotifications, I wrote about how you can check whether your App is running or has just started from a UILocalNotification. I use the same code for remote notifications:

- (void)application:(UIApplication *)application 
      didReceiveRemoteNotification:(NSDictionary *)userInfo {
    if(application.applicationState == UIApplicationStateActive ) { 
        DBLog(@"Received: %@", notification.alertBody);
        // alert, because app is running in foreground
    }
}
gist

Well, as it turns out this solution only works with iOS 4.0, since UIApplication.applicationState is not available on iOS 3.x. I only found this bug yesterday, after our latest App Cologne Train was smoothly approved by Apple and is targeted for iOS 3.1.3 (the oldest we have running here).

Now, don’t get me wrong! I’m not writing this to criticise the review process for not catching my bug, although it was an obvious one. It’s a bug that every static analyzer or API versioning tool could have caught, if it was out to looked for it.

If Apple wanted to catch bugs, that only occurs on iOS 3.x, I bet they could!

This is nothing new, I wrote about this before and so did others. However it’s worth mentioning it again: the percentage of devices out there running iOS 3.x is tiny. I guess Apple thinks the same way and focuses on other things during review instead.

I believe with the latest numbers and Apple not catching such obvious iOS 3.x related issues, it’s save to say: iOS 3.x is dead!


// other posts