If your app is using an old version of the Mixpanel library your reporting could become inaccurate at the release of iOS 7. To make sure this does not happen, please update to the latest version of our iOS library before Apple releases iOS 7 to the general public in September.
Starting iOS 7, Apple has removed the ability for apps to access the MAC addresses of the device. Specifically, every device will begin reporting a generic MAC address of ?02:00:00:00:00:00.? Because Mixpanel iOS libraries 1.1.1 and earlier relied on the MAC address to generate the default unique identifiers (distinct_id) for the device, every new customer who installs your app on a device running iOS 7 will be assigned the same distinct_id.
The latest version of our iOS library, which has been available since April, does not rely on the MAC address to generate a unique identifier. You can access the latest version of the library at GitHub.
How was distinct_id determined in iOS library versions prior to 2.0.0?
In older versions of our iOS library we concatenated every MAC address available to the phone (including Wifi and Cellular interfaces) along with the app bundle name. We took this resulting string and hashed it. The result was the distinct_id.
If an existing user of my App updates to iOS 7, but has an old version of my app that uses an old Mixpanel library, will they be tracked correctly?
Yes. Because the distinct_id that we generate is saved in persistent storage on the phone, your existing customers identifier will not change and remain correct.
If I do not update my app with the new version of the library, and a new user installs the app on iOS 7, what will happen to my Mixpanel reports?
In this case, all of your new users will be assigned the exact same distinct_id. Every new user will be considered the same user in Mixpanel reports. This will break any reports that rely on unique user calculations including Funnels, Retention and all of People Analytics.
Is 2.0.0 a drop in replacement for 1.x versions of the lib?
For the most part, yes. There is one exception. In the latest version of our library, we eliminated the distinction between [mixpanel identify:@”user123″] and [mixpanel.people identify:@”user123″]. Now there is only [mixpanel identify:@”user123″] which must be called to enable People Analytics. If you’d like to enable People Analytics using the default identifier, you should use the one liner: [mixpanel identify:mixpanel.distinctId]
What if I always assigned my own identifier using the identify() method?
If you always assign your own identifier to every user before they fire any events, and your own identifier does not rely on the MAC address, you will be unaffected by these changes in iOS 7.
How can I check the library version we are using in our App?
The version constant is defined in line 36 of the Mixpanel.m file. Check the copy in your X Code project.