New Undocumented APIs in iOS 6.1

(Or: What The Hell Is MPGobblerGestureRecognizer?)

Now that Apple has released iOS 6.1, I wanted to see whether the new OS version contained any exciting new APIs beside the rather meager additions in the public API diffs.

With the help of Nicolas Seriot’s excellent iOS Runtime Headers repository, I compiled a list of all API changes between iOS 6.1 and 6.0. In the following, I discuss the most interesting additions. It is not an exhaustive list of everything that changed.

MediaPlayer.framework

MPGobblerGestureRecognizer

The MediaPlayer framework1 contains a number of new undocumented classes in iOS 6.1.

The most interesting one to me is MPGobblerGestureRecognizer, a UIGestureRecognizer subclass. To be honest, I don’t have the slightest idea what a “gobbler gesture” could be. If you know of a new gesture in iOS that is related to the media player or if you have any idea what kind of gesture this class is meant to detect, I’d love to hear from you.

Update February 5 and 7: Turns out that people have been speculating about the purpose of UIGobblerGestureRecognizer, an undocumented class which was introduced in iOS 5.0 but I was unaware of, for quite some time.

BJ Homer believes UIGobblerGestureRecognizer is used to avoid recognition while animations are in progress. Otherwise, it’s inactive. In an interesting Twitter conversation, Filippo Bigarella and Conrad Kramer discovered that UIGobblerGestureRecognizer can “gobble” touches in order to prevent other gesture recognizers from receiving them in certain situations. What situations those are, I don’t know.

_MPGlowLabel and MPScrollingTitlesView

The new _MPGlowLabel is a UILabel subclass with two additional properties, glowColor and glowRadius. Apple probably uses such a label in one or more places in its media player UI.

MPScrollingTitlesView seems to model a view that is used to display album and song titles in a scrolling marquee.

Other Media Player Changes

Other new classes in this framework include MPCloudDownloadButton, MP­Floating­Air­Play­Debug­View­Controller and MPLoggingUtility.

iAd.framework

I was especially curious if Apple had added new functionality for remote view controllers in iOS 6.1. While the underlying APIs seem to be unchanged, I found at least a small change in wording in the iAd framework. A property of the ADLocalViewController class, used to display full-screen iAd ads, was renamed from modalViewController to modalRemoteViewController.

UIKit.framework

The _UIWebViewController class is a big candidate to be made a public API in iOS 7 in my opinion. If I understand it correctly, it lets an app present a web view through remote view controllers. In addition to improved security, this new model for displaying web views could also mean that third-party apps could profit from WebKit’s just-in-time Javascript compilation, which is currently disabled for UIWebView.

The class got two new methods in iOS 6.1, -_webContentSizeWithReplyHandler: and -loadHTMLString:baseURL:.

CoreData.framework

A large number of Core Data classes saw changes in iOS 6.1, albeit most of them quite small (such as the addition of a single method). As far as I can tell from names of the new methods, most changes are related to iCloud syncing. Whether this means that Core Data syncing over iCloud will work more reliably with iOS 6.1 is anybody’s guess.

Changes include:

PassKit.framework

Lots of changes in PassKit, but the vast majority of them are rather less exciting class renamings from the old WL prefix to the new PK. Does anybody know what WL stands for? Update: Eric Firestone bets WL stands for “Wallet”.

CoreTelephony.framework

The CTTelephonyNetworkInfo class has a new property radioAccessTechnology and the framework contains a corresponding new class named CTRadioAccessTechnology.

It’s hard to tell from the headers what data this new class encapsulates.

CoreMotion.framework

The CMMotionManager class got two new methods, -gyttNumTemperatures and -rebuildGytt. I have no idea what they might do.

AirPlayDiagnostics.framework

AirPlayDiagnostics is a new private framework in iOS. It contains these five classes:

  1. Note that all links in this article to specific classes or frameworks inside the iOS Runtime Headers repository point to a specific commit (the iOS 6.1 version of these files). If you are reading this at a later date, the links might not reflect the current state of these APIs. ↩︎