iOS 6.0 and the State of Identifiers


September 25, 2012


min read

Over the last year or so, there has been a lot of fear and uncertainty over what was going to happen to identifiers like the UDID, which until recently has been the recommended way of uniquely identifying a device. Last year, Apple deprecated the uniqueIdentifier API without giving us an alternative.?

? ? ? ? ? ? ? ? ?

Now, it’s worth mentioning why we need a unique identifier in the first place. At Chartboost, we focus on promotions between mobile gaming titles. Whenever a game on our network is launched, it sends a request to our backend with information about the device. This lets us send back an ad that’s appropriate for the device (iPhone vs. iPad. Retina or not.), as well as letting us track whether a new install was the result of an ad being clicked on our network, regardless if it was from cross-promotion, direct deal or a promotion in our network. A click with a certain device ID, followed by an install of that game with the same device ID is considered a conversion.

Without an identifier that will uniquely point to a single device, across multiple apps, none of this is possible. This is why we, along with the rest of the industry, were a bit perplexed when we heard about Apple’s change of stance. The first measure we took at the time was to start tracking a hash of the MAC ID as a backup. When the iOS 6.0 seeds were released to developers, Apple introduced a new identifier called identifierForAdvertising. The 3.0 release of our SDK back in July supported this new identifier.

Meanwhile, we were hard at work on an overhaul of our backend to use an internal ID to refer to devices, and start simply using the device’s available identifiers as a way of querying for the matching Chartboost ID.

The week before last, Apple released the final GM seed of iOS 6.0 with a change to the way the identifier is made available. It had been moved to a new framework called AdSupport, with new usage guidelines. An option was added to the system to “Limit Ad Tracking.” We released an update to our SDK, version 3.0.7, which addresses the change and adds support for the limited ad tracking option.

Bottom line:

  • We track the UDID when it’s available.
  • We track a hash that uses the MAC address as a seed. This hash is a cryptographically secure function and cannot?be reversed back into the original MAC address.
  • On iOS 6.0, we track the new identifierForAdvertising, aka. IFA.
  • On iOS 6.0, we will track and abide by the “Limited Ad Tracking” setting.
  • All communication to our servers are securely encrypted.
  • We have switched to using a custom Chartboost ID to refer to unique devices internally.?
  • This all requires our latest SDK, version 3.0.7.

Download 3.0.7!