UPDATE: iPhone dev extraordinaire Erica Sadun investigated over at Ars and found the following: Google is both linking to Private Frameworks and using unpublished APIs. While the latter is likened to jaywalking, the former is apparently a ban-worthy offense. Yikes. Check out her complete investigation for more. And now that it's public, the question shifts to what if anything Apple will do about it? Cave to Google over a killer feature and betray the confidence of other developers, or yank Google's app, alienating a huge (if guilty) partner and likely creating another furor among users?
Is Google using private (i.e., not publicly available via the official iPhone SDK) APIs to create the silky-smooth "raise the phone and talk" activation for their new Advanced Voice Search feature in the update Google Mobile App? That's the latest question Daring Fireball's been looking into, and here's what they've found so far:
If you use something like the command-line strings utility to examine the UIKit framework, you can see that there’s an undocumented (and therefore private to Apple) method named proximityStateChanged. And if one were to strip the FairPlay DRM from the current Google Mobile application binary — which, of course, you wouldn’t do, because you’re not supposed to strip FairPlay DRM, but I’m just saying if one were to do this — a class dump of the application binary would show that Google Mobile does in fact implement proximityStateChanged.
DF posits three possible explinations: 1) No one at Apple noticed the private API usage, 2) Apple noticed but turned a blind-eye, or 3) Apple approved the use of a private API. Citing sources, DF claims #3 to not be the case, and perhaps that's why Google promoted the feature so heavily, and stirred up interest so high Apple would feel pressure to approve it (though we wonder if Steve Jobs' Apple ever feels that type of pressure?)
By contrast, DF states #1 is not without precedence, while #2 would be grossly unfair to other developers, and either way, users may suffer if Apple makes changes to their private APIs (which is one of the reasons to keep them private after all).
So what do you think? Which scenario is most likely? And what would you rather, that developers (Google or not) use officially unsupported features if it means better apps but also apps that might just break when the next firmware drops?