A Tale of Bad UX
A few weeks ago, I completed my iOS App Instant Webcam and eagerly submitted it to Apple for review. They approved it about a week later and I was free to sell it in the AppStore. About 30 minutes later my App showed up when you searched for it. All ready to launch I thought.
Before publishing the accompanying blog post and tweeting about it, I tested the App one last time: I downloaded it directly from the AppStore on my iPhone and made sure it works. Which it did. Then, just to see what it looks like, I searched for the App on my iPad 1, which as you know doesn't have a camera. You shouldn't be able to download the App on a camera-less device at all. The AppStore should indicate this, but It didn't.
You could still download the App just fine on the iPad 1, despite the device having no camera to use it. When you start the App, it instantly crashes.
Shit.
Of course this was my fault. I forgot to set the appropriate key for UIRequiredDeviceCapabilities
in the App's Info.plist
file - namely the video-camera
key that tells the AppStore that this App indeed requires camera capabilities.
You can't test this at all before submitting your App for review. There's no "staging area" where you can see how your App will look like in the store. This bug only presents itself after release. You can't test for it beforehand. Apple's review process should probably have caught this bug, but didn't.
The UIRequiredDeviceCapabilities
property only affects the presentation in the AppStore, yet it has to be set in the App directly. Which means in order to change this you have to recompile your App, submit it for review again and wait a week or two till it's approved. Not fun.
Worse still, you can't release an update for your App that requires features that your original version did not require. So this bug that only presents itself after release is essentially unfixable.
The official way to "mitigate" this, confirmed via iTunes connect support, is the following.
- recompile your App with a new version number and name
- submit this update to Apple for review
- wait till the update is approved. This will free the original App name
- delete your App from the store
- add the desired device capabilities to your App's
Info.plist
- recompile your App with the old version number and original name
- submit this as new App to Apple for review
- enter all your metadata, descriptions and screenshots again
- wait till your App is approved
- publish your App
Suffice to say, you can still download Instant Webcam on your camera-less iPad or iPod and have it crash immediately.