Looks like Apple has tightened app store submissions staring May 1. I have an app that uses Spotify and have been accepted into the App Store multiple times. On a recent update, the app was rejected for the following reasons...
Non-public API usage:
Apps are not permitted to access the UDID and must not use the uniqueIdentifier method of UIDevice. Please update your apps and servers to associate users with the Vendor or Advertising identifiers introduced in iOS 6.
Doing the following on libspotify
strings libspotify | grep uniqueIdentifier
returned 3 instances of uniqueIdentifier. Another posting stated that this is probably due to openSSL and may have nothing to do with UDID. However, Apple is rejecting the code. Is there a work-around?
Here is a Cr4zY quick-fix, use only if you are in a real hurry (like I am right now, Ship or Die!)...
Use a tool like 0xED http://www.suavetech.com/0xed/ to change the
uniqueIdentifier
parts in thelibspotify
binary to something likeuniqueXdentifier
. (Note! Has to have same length or it will break hard!!!)Then add a category method for
UIDevice
i.e. like this in your project (using same name as was changed to)Disclaimer: I work for Spotify
We're aware of the issue and working on making a hot-fix for iOS which removes the need for UDID access. Hang tight!
Edit: Hot-fix is out! Grab it at http://developer.spotify.com/technologies/libspotify . A corresponding release of cocoalibspotify is coming soon, but in the meantime it can be easily changed to support a different version number of libspotify.
A hot-fix has been released, removing the usage of uniqueIdentifier:
http://devnews.spotify.com/2013/05/16/libspotify-12-ios-hot-fix/