UPDATED! Google Using Private API's For Advanced Voice Search?

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?

Original post:

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?

Rene Ritchie

Editor-in-Chief of iMore, co-host of Iterate, Debug, ZEN and TECH, MacBreak Weekly. Cook, grappler, photon wrangler. Follow him on Twitter, App.net, Google+.

More Posts



← Previously

BlackBerry Storm vs. iPhone 3G Browser Battle!

Next up →

More on iPhone MMS: Got Mobispine?

There are 10 comments. Add yours.

thekevinmonster says:

What if this API is exposed in 2.2, and is simply usable but not publicized in 2.1? If 2.2 is right around the corner, perhaps they were allowed through?

XCool says:

I really hope its reason #1...

Dan Cornish says:

I think there is a much darker reason behind all of this. Google put a gun to Apple's head by releasing a video pre-announcing this feature. This forced Apple into a corner. They could not reject Google, after the blogosphere was on fire about this app.
More on my blog http://blog.cosential.com/?p=104

tonylewis says:

They are not using a proximity state change feature, they are using the accelerometer to determine a state change. You can prove this by simply placing your finger over the proximity sensor and you will see the phone does not start recording voice. Only when you sit upright and bring the phone to your ear rotating the phone utilizing the accelerometer does the phone start recording.

rpv says:

I would say welcome to the real world, of course there will be companies and there should be instances when restrictions should be lifted, for that apple should have a special request form and perhaps a more powerfull SDK, i.e. Enterprise SDK which would offer more APIs

Barc says:

Try just raising the phone - doesn't work.
Try just putting your finger over the sensor - doesn't work.
Try raising the phone then putting your finger over the sensor - starts recording.
They're using a combination of both techniques.

xwarhammerx says:

A pirates life for me!

Herman Tennett says:

Some interesting information, thank you! I'll refer my blog readers to this site

Chris says:

Thing is, Google are one of the only companies that ARE allowed to use Apple's private APIs, mainly because Google knows what their doing.

ipad 2 says:

I have been surfing online greater than three hours lately, but I by no means found any interesting article like yours. It's pretty value enough for me. In my opinion, if all website owners and bloggers made excellent content as you did, the web might be a lot more useful than ever before.