Application rejected, but I do not use UDID

Today we received feedback about our submission, and we do not understand the reported problem: "Applications are not allowed to access the UDID and should not use the uniqueIdentifier UIDevice method. Update your applications and servers to associate users with the Provider or advertising identifiers presented in iOS 6. "

We know about abandoning udid, but our application does not use this! After reviewing this, our team reevaluated the application, and we did not find an entry from the "UIDevice uniqueIdentifier". We also reviewed all the libraries used, and indeed we do not find any call from the UDID.

Anyone have any ideas?

After researching, I executed the greap command, and I suspect the 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 ?? What is the resolution?

+45
ios uniqueidentifier app-store udid appstore-approval
May 7 '13 at 1:46
source share
14 answers

In my case, it was the ibGoogleAnalytics_debug.a library.

To find out which library uses the uniqueidentifier method, go to the project folder and enter:

 $ find . | grep -v .svn | grep "\.a" | grep -v "\.app" | xargs grep uniqueIdentifier 

I got this: Binary file. / My _Project / libGoogleAnalytics_debug.a matches

+86
May 08 '13 at 12:39
source share

Solved: The problem is that your project still refers to the old SDK, and it compiles the code using your old sdk methods, including the UDID that the apple rejects.

Correct it in your SEARCH PATH assembly properties. Search paths in the database Search paths in the library

delete unnecessary values ​​such as the old sdk path and put the current sdk path there

clear all project files: Window-> Organizer-> Project - delete the project Product-> Clean

Now rebuild it and resubmit it to apple.

Enjoy :)

+7
May 7 '13 at 19:37
source share

Check the binary generated by the strings command and look for uniqueIdentifier :

 $ strings YOUR_BINARY | grep uniqueIdentifier 

You will probably find him there.

I found that OpenSSL has a uniqueIdentifier string declared in its headers, so probably your application (or any static library provided by your application) included it.

In my case, the culprit was libspotify .

+5
May 7 '13 at 15:08
source share

I had the same problem, but I was able to specify a file containing uniqueIdentifier using the following command in the terminal in my project folder.

grep -Rnis 'uniqueIdentifier' *

Many lines appeared in my terminal, the culprit being libGoogleAdModAds.a . Although I did not use it in my code, it was still mentioned in my project and therefore added to the assembly.

My source: http://www.commandlinefu.com/commands/view/3573/search-for-a-string-inside-all-files-in-the-current-directory

+4
May 7 '13 at 23:38
source share

In my case, the BugSense SDK was responsible for this problem (I used an outdated version). After updating to the latest version (3.1.3) everything is in order.

+3
May 07 '13 at 7:24
source share

I filed an error using Facebook, but here is a workaround:

https://developers.facebook.com/bugs/193119420841692

In sdk, edit facebook-ios-sdk / src / FBSession.m

Comment on

 - (BOOL)isMultitaskingSupported { /* UIDevice *device = [UIDevice currentDevice]; return [device respondsToSelector:@selector(isMultitaskingSupported)] && [device isMultitaskingSupported];*/ return TRUE; } 

It is not needed since iOS 4.0 is anyway.

which removes the link and re-builds .a

+3
May 17 '13 at 13:02
source share

I have the same problem today. I upgrade the AdMob SDK to 6.4.1 and send again, but don’t use it. But it passed the load check after I turned off the AdMob code and don’t reference its library.

According to a Google announcement, the AdMob SDK 6.4 and above no longer have access to UDIDs. Obviously, Apple doesn't think so.

+2
May 7 '13 at 5:41
source share

Usually, third-party libraries for analytics and beta testing use a uniqueIdentifier to track users (for example, a test flight or older versions of GA), check if any of the third-party libraries that you use are using. If this is not the case, you can ask for clarification at http://itunesconnect.apple.com .

+2
May 7 '13 at 5:42
source share

I had the same issue yesterday updating my applications.
After searching for third-party libraries using UDIDs, I realized that I used Conversion Tracking for iOS . This library used UDIDs, but on April 10th released an update to fix this problem:

IOS SDK v1.2.0 Conversion Tracking no longer accesses UDIDs (released April 10, 2013).

Hope this helps.

+1
May 08 '13 at 10:20
source share

I tried all day, my application is always rejected.

At first I tried to find. | grep -v.svn | grep ".a" | grep -v ".app" | xargs grep uniqueIdentifier in my project folder.

It appears that the Google Analytics, AdMob, and Wikitude SDKs have used a uniqueIdentifier. So I uninstalled GA and I updated AdMob and Wikitude. Now there are no more calls to the uniqueIdentifier method. When I do grep, the result is nothing. I cleared everything in my project, but my application is always rejected!

What should I do now? Any help would be appreciated ...

EDIT: I found this line:

 IDEWorkspaceWindowController***UniqueIdentifier***_IDEActiveWorkspaceTabController_IDE 

In this file:

MYPROJECT.xcodeproj / project.xcworkspace / xcuserdata / MYUSERNAME.xcuserdatad / UserInterfaceState.xcuserstate

Do you think the problem may arise from this line?

+1
May 08 '13 at 23:08
source share

I do not think that the iOS iOS SDK for Facebook itself uses the outdated "uniqueIdentifier". I looked at the sources at https://github.com/facebook/facebook-ios-sdk .

But when the Facebook SDK is generated from these sources, the generated binary contains a string. The only library used by the SDK is β†’ Accounts.framework <- from IOS itself!

So, it looks like Apple shot its own leg!

Edit: Eric gave the correct answer. UIDevice is used in facebook-ios-sdk / src / FBSession.m. An account was not a problem.

+1
May 15 '13 at 18:32
source share

That's all Apple does, all you have to do is:

 strings - -a -arch armv7 "App.app/App" | grep uniqueIdentifier 

App.app after unpacking App.ipa, it will be inside the payload directory.

Just run this command inside the payload directory. You can run the test using the greping famous method that you use.

You can replace armv7 with everything if you want to find all the architectures for which it is built.

+1
May 30 '13 at 15:50
source share

Today I faced the same problem. Openssl has a variable called uniqueIdentifier. Perhaps this is causing the problem.

0
May 7 '13 at
source share

I had the same problem. It turned out to be RevMob sdk. The last 5.9.0 (2013/05/30) seams to solve the problem.

0
Jun 06 '13 at 20:06 on
source share



All Articles