iPhone APInsanity: Unity Updates to Avoid Rejections, Compatibility Causing False Positive Dejection


To catch everyone up, Apple is using a new static analysis tool to find and reject apps using private APIs, and in so doing flagged a bunch of them caused by some calls inside the Unity game development engine (and the Three20 framework, perhaps among others). Now 9to5Mac brings word of Unity's latest update:

Unity iPhone 1.5.1 includes improved XCode support and improved AssetBundle support, but more importantly Native APIs (NSGetEnviron and exc_server functions) have been removed to comply with new Apple requirements.

“The main reason for this is to avoid problems with applications breaking when Apple releases new versions of the iPhone OS,” the company explains.

On the flip side, it's possible the same static analysis tool is also generating false positives when it comes to apps using Apple's own recommended backward compatibility guidelines.

According to Apple's Dev Center:

By using “weak linking” in your Xcode project, you can include frameworks you’ll need for the newer features, and check for API availability when your application is running. This technique provides you with the broadest possible audience for your application.

Yet developer Juicy Bits Software speculates that:

we’ve been bitten yet again by the static analysis tool. 3D Camera Lite runs on iPhone OS 3.0 or later, and we check the OS version before calling any of the new 3.1 APIs…

So, basically, Apple's not acknowledging the OS check, and rejecting based on 3.1 APIs being used for apps that run on earlier versions of the iPhone OS that don't include those APIs as public.

If correct, that's certainly "frustrating" as they put it, and yet another sore point Apple will need to address and quickly.

[Thanks to Jordan for the Juicy Bits tip!]

Have something to say about this story? Leave a comment! Need help with something else? Ask in our forums!

Rene Ritchie

EiC of iMore, EP of Mobile Nations, Apple analyst, co-host of Debug, Iterate, Vector, Review, and MacBreak Weekly podcasts. Cook, grappler, photon wrangler. Follow him on Twitter and Google+.

More Posts



← Previously

Fring Brings Video Calls to iPhone

Next up →

iLife 2010's New iDVD to Include iTunes LP, iTunes Extra Creation?

Reader comments

iPhone APInsanity: Unity Updates to Avoid Rejections, Compatibility Causing False Positive Dejection


@Renee Ritchie. I've emailed TIPB with no response. Please post new comments up top so we don't have to scroll ALL THE WAY to the bottom to read the new comments. I will email TIPB again now. Kindly respond!!! I Know EVERYONE AGREES.

I don't agree. I'd rather read comments in order they are written below the articles. Sorry.

We're working on an update for our own app which currently supports 2.x with "weak linking" to give 3.x users advanced capability, as recommended by Apple.
Note, like Juicy Bits we're not talking about private API here but public API and doing exactly what Apple says we should do to support 2.x OS using "weak linking".
It's unfortunate that Apple is applying their policies so inconsistently that they are harming developers that only wish to follow the rules.
This also hurts users in the end, for example, if we are rejected for the same reason Juicy Bits was, we will be forced to abandon support for 2.x users of which there are still many.
Consider also that iPod Touch users have to pay $10 to upgrade to OS 3.x.
How does Apple justify penalizing developers who are following their rules so adherently while at the same time being extra lenient to others that knowingly break these rules?