I've implemented this methods to get advertisingIdentifier
and identifierForVendor
:
- (NSString *) advertisingIdentifier { if (!NSClassFromString(@"ASIdentifierManager")) { return [OpenUDID value]; } return [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]; } - (NSString *) identifierForVendor { if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) { return [[[UIDevice currentDevice] identifierForVendor] UUIDString]; } return @""; } - (BOOL)isAdvertisingTrackingEnabled { if (NSClassFromString(@"ASIdentifierManager") && ![[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) { return NO; } return YES; }
On simulator everything is working as should be and I can get the 2 strings IDs representation.
But when I run from iPhone 3GS with iOS 6.0 (10A403), these 2 methods return "00000000-0000-0000-0000-000000000000" as identifier. Already done:
It appears to be a bug in iOS. Seeing the same issue on devices that have been upgraded over-the-air, but devices upgraded with Xcode or iTunes work as expected without zeros.
Tried similar steps as you, and the only common theme was over-the-air (bad) versus tethered upgrade (good).
Update: Users that move directly from iOS 5.1 to 6.1 over-the-air experience a different behavior. Every time the app is closed completely and restarted, a new value is being returned by identifierForVendor
. This would be expected if the app was being uninstalled and reinstalled, but that's not the case.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With