4

We use a lot of third-party SDKs from ad providers, and since Apple will not allow UDID access after May 1st, I want to check which SDKs use the UDID function. Is there a simple way or tool to do that?

jszumski
  • 7,430
  • 11
  • 40
  • 53
ocean
  • 161
  • 10

4 Answers4

8

One simple and naïve method is to run strings and grep on the library files. i.e.

strings libSomething.a | grep uniqueIdentifier

If you see any line that prints exactly uniqueIdentifier there is a risk they call it. This method is not 100% bullet proof. But I'd expect Apple doing a similar check in their automatic validation.

epatel
  • 45,805
  • 17
  • 110
  • 144
  • I already tried this method and found some sdks (the latest version) still contains "uniqueIdentifier" methods, I'm not sure it is from [[UIDevice currentDevice] uniqueIdentifier] or it is just their own method. – ocean Apr 14 '13 at 14:15
  • 2
    @ocean How about just adding a breakpoint for uniqueIdentifier and see what happens? – epatel Apr 14 '13 at 14:52
  • @epatel You'll get rejected if uniqueIdentifier exists in your code/lib, even if you never call it. So a symbolic breakpoint doesn't help, if a lib/framework doesn't call it, but uses uniqueIdentifier in code!!! – Fab1n May 14 '13 at 12:14
  • @Fab1n it was just *one* suggestion, maybe that could show if another `Class` is calling it...anyway the SDK devs should update asap. Last week I **needed** to submit and did this *hack* http://stackoverflow.com/questions/16433621/libspotify-causing-apple-app-store-rejection/16491455#16491455 to pass the automated checks. In Review now... – epatel May 14 '13 at 12:28
  • @epatel crazy horse!!! :-) I only wanted to keep in mind, that runtime checks do not save you from being rejected. strings is by far now the best solution to find out which framework/lib is responsible for a rejection, so you don't have to update all of your libs, because that would probably mean a lot of time of adaption to the new api of these libs – Fab1n May 14 '13 at 13:57
1

You could set a symbolic breakpoint for -[UIDevice uniqueIdentifier]

Seth Spitzer
  • 76
  • 1
  • 5
0

Why don't you try secureudid (secureudid.org)?

ioshunter
  • 157
  • 3
  • 7
0
NSString *uuid = nil;
CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
if (theUUID) {
  uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
  [uuid autorelease];
 CFRelease(theUUID);
}

try this

D.M Patel
  • 145
  • 1
  • 7