Today we received a feedback about our submission and we do not understand the reported problem: "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.".
We know about the rejections about udid, but our App do not use this! After read this, our team reevaluated the App and we do not found occurrences from "UIDevice uniqueIdentifier". We also revised all used libraries and really we do not find any call from UDID.
Someone have ideas?
After research, I executed "greap" command and I am suspecting about FacebookSDK:
my-app-directory $ grep -Rnis 'uniqueIdentifier' *
Binary file MyApp/FacebookSDK.framework/FacebookSDK matches
Binary file MyApp/FacebookSDK.framework/Versions/A/FacebookSDK matches
Binary file MyApp/FacebookSDK.framework/Versions/Current/FacebookSDK matches
Binary file MyApp/MyApp.xcodeproj/project.xcworkspace/xcuserdata/myuser.xcuserdatad/UserInterfaceState.xcuserstate matches
FacebookSDK uses uniqueIdentifier?? Whats the resolution?
I don't think the Facebook IOS SDK itself uses the deprecated 'uniqueIdentifier'. I looked into the sources at https://github.com/facebook/facebook-ios-sdk.
But when the Facebook SDK is generated from this sources, the created binary contains the string. The only library, that is used by the SDK is the --> Accounts.framework <-- from IOS itself!
So looks like Apple has shot their own foot!
Edit: Eric gave the correct answer. UIDevice is used in facebook-ios-sdk/src/FBSession.m. The Accounts.framework wasn't the problem.
Usually third party libraries for analytics and beta testing use uniqueIdentifier to track users (for example test flight or old versions of GA), check if any of the third party library you are using use this. If is not the case, you can ask for a clarification at http://itunesconnect.apple.com.
I tried all the day, my app is always rejected.
First, I tried find . | grep -v .svn | grep ".a" | grep -v ".app" | xargs grep uniqueIdentifier in my project folder.
It appeared that Google Analytics, AdMob and Wikitude SDK were using uniqueIdentifier. So I removed GA, and I updated AdMob and Wikitude. Now, there is no more calls to the uniqueIdentifier method. When I do grep, the result is nothing. I cleaned everything in my project, but my app is always rejected !
What can I do now ? Any help will be appreciated ...
EDIT : I found this line :
In this file :
Do you think the problem can come from this line ?
This is all Apple does, all you need to do is:
App.app is after you unzip the App.ipa, it will then be inside the payload directory.
Just run that command inside the payload directory. You can do a test by greping a known method you use.
You can substitute armv7 to all if you want to search for all architectures it is built for.
In My case it was ibGoogleAnalytics_debug.a library.
To find which library is using uniqueidentifier method, go to your project folder and type in:
I got this: Binary file ./My_Project/libGoogleAnalytics_debug.a matches
I filed a bug with Facebook, but here is a workaround:
https://developers.facebook.com/bugs/193119420841692
In the sdk, edit facebook-ios-sdk/src/FBSession.m
Comment out the
Its not needed since IOS 4.0 anyhow.
that removes the reference, and re-build the .a