Archive for the ‘Development’ Category

UIRequiredDeviceCapabilities, d’oh!

Thursday, May 13th, 2010

Today I’ve received a rejection letter from Apple, stating that the way UIRequiredDeviceCapabilities is configured makes it impossible to install my app in any device.

You see, I never touched that setting in info.plist through the development process.  It’s the one that comes with Cocos2D template.

The first thing I did was to fire up one of my previous projects, Chilly Zombies.  That project simply does not include such setting, that is, UIRequiredDeviceCapabilities is not even there.

As I learned later, this setting missing just means that your app doesn’t require anything specific from the device.  Since this is Joe Rescuer’s case, I just deleted UIRequiredDeviceCapabilities from the project, recompiled and resubmitted to the App Store.  I guess I’m back at the end of the submission queue.

So, how does UIRequiredDeviceCapabilities work? Essentially, you would either create the setting as either an array or a dictionary object.

If it’s an array, you would include items that are required by your app (i.e., “wifi”,  “microphone”, etc).

If it’s a dictionary, then you would include boolean values:  if your app needs “wifi”, add it and set it to “YES” (or check the box).  If it doesn’t need it, do not add it.  If you leave it there and set it to “NO” (or with the box unchecked), you are stating that the device must not have the capability.  So, if you set a “wifi” value as “NO”, you are declaring that the device must not have wifi.  This is what happened to me in this case.  The included UIRequiredDeviceCapabilities had every feature on the list, most of them set to “NO” (unchecked).  This essentially said that my app couldn’t be installed in any device on Earth!  Not on an iPhone 3G, not on an iPhone 3GS or an iPod Touch.

Anyway, as I mentioned before, simply removing the file took care of the problem (because my app doesn’t care whether there’s a mic or wifi on the device).  Your needs may be different, so you’d better make sure by reading the corresponding Apple’s Application Programming Guide section.

Joe Rescuer submitted to the App Store

Wednesday, May 12th, 2010

I hope to hear from them soon.  I submitted the app last Friday (May 7).

This is my first major project in Objective-C (one of the iPhone’s official languages, for good or bad).  I had a lot of fun developing it.  I put a lot of effort in designing the levels.  The art, well, I’m no graphics artist, but I did my best.

Joe Rescuer is a combination of Puzzle + Arcade.  It resembles one of those lunar lander games, with a twist:  You must plan ahead your trip, and once the plan has been laid out, hope for the best.

You see, there’s these things called powerpacks.  There’s one powerpack for every action you can make in the game (“Go Left”, “Go Right”, “Go Up”, “Fire”… you get the idea).  So you have to add powerpacks to the ship queue.  Once the ship is launched, this queue cannot be modified.  You can launch the next powerpack in the queue at any time (and that’s all the control you’ll have during the trip).  If your flight plan is right, you’ll get to your destination safely.  If not, then it’s back to start and make any necessary adjustments to the queue.

It’s fun!! I would have finished the levels sooner, if it wasn’t because I kept playing the levels “ahem, for testing purposes” ;-)   I hope you’ll find them enjoyable too.