I've lost track of how many developers I've talked to that have some major grievance with the way Apple runs the App Store. From rejecting Apps that include some SDK, to using the rejection process as a means to set new policy, Apple has made a lot of developers very nervous. Some of these guys are trying to make a living selling their apps. They have a deep fear of the often mysterious and cryptic rejections. No one dares speak out though! There has already been one developer who had his app removed for criticizing the App Store. Most sites won't go after Apple either because they want early access, or simply to avoid a life-time ban like Leo Laporte. I'm even a bit hesitant. They could revoke my Linkshare referral account, and the 60% of you that come here on Mac's could label me a "hater", but fuck it... This week's Too Much Information Tim is going to look at a real problem for one dev.
Om nom nom nom!
I've been talking with a guy who, for several reasons, needs to stay anonymous. He's a somewhat-high-profile guy in the tech industry and he had an idea for an app. This app is processor intensive though and he wanted to make sure people wouldn't accidentally buy it on older devices. Being the conscientious geek that he is, he spent a lot of time thinking about how to make sure he didn't screw over customers. Developers can't say, "Don't install on iPhone 3G and earlier, just iPhone 3GS and later."
You have to get tricky!
Many iPad 1 owners will know that the way a lot of people have been blocking iPad 1 installs is to require the front facing camera, available only on iPad 2s and 3s. This gets really complicated on iPhones and even more so with Universal apps. Don't get too fancy with your hardware requirements; you probably won't be able to change them after the app is released!
Artist Rendering of Anonymous Developer.
Shamed and photographed by Apple.
This is a serious challenge for many developers. They want to make great apps that take advantage of the new hardware that Apple is selling, but Apple won't allow devs to prohibit the obsolete devices. In this specific case the dev knows that iPod Touches simply don't have the horsepower. Just to be safe, he wants to keep the iPhone 3GS out as well so that those users won't give him 1 Star reviews on iTunes, if they encounter any performance issues.
This should be as simple as sending Apple a list of hardware saying:
• iPhone 1
• iPhone 2
• iPhone 3
• iPhone 3GS
• iPod Touch (all iterations)
Instead, Apple gives developers a compatiblity matrix of features. It's up to the developer to find some combination of features that only exist on the targeted devices. For this example, all of following are not available on iPod Touches, so let's see if we can use any of these on a Universal app to exclude iPhones prior to iPhone 4:
• Telephony: Would also exclude non-3G iPads.
• SMS: Would also exclude non-3G iPads.
• GPS: Would also exclude non-3G iPads.
• Magnetometer: Works, but you would need something else to exclude iPhone 3GS.
• Gyroscope: Requirement to exclude iPhone 3GS, although this also excludes iPad 1.
• Auto-focus-camera: iPhone 3GS has this, it would also exclude iPad 2.
• Camera-flash: This would exclude 3GS, but would exclude all iPads.
• Bluetooth-le: Would also exclude iPhone 4.
This is crazy, and it will only get worse as more and more iDevices come out. For this case you could go with requiring Magnetometer and Gyroscope. Unfortunately for this developer, he chose the GPS requirement, which completely eliminates iPads that don't have 3G! A fact he didn't realize until after the app went live.
What hoops are developers going to be jumping through, in just a couple of years, when they want to block iPad 3s? I praise apps that can maintain backward compatibility with older devices, but damn it Apple, you're the one that has made a business model out of annual obsolesce! Stop making developers the ones to deal with it.