[CLLocationManager setAuthorizationStatus:YES forBundleIdentifier:@"your app bundle identifier"];
To use this your application entitlements should have com.apple.locationd.authorizeapplications
key with boolean value set to true.
UPDATE
Found much better solution. Add to your application entitlements com.apple.locationd.preauthorized
key with boolean value set to true. This will preauthorize your application so you could request location without any user permission or private APIs. I tested it on iPhone 4S, 5, 5C, 5S with iOS 5-7. It works in daemons or command line tools without any Info.plist, just plain binary.
For the test I used the following code
#import <CoreLocation/CoreLocation.h>
@interface LocationDelegate : NSObject<CLLocationManagerDelegate>
@end
@implementation
-(void)locationManager:(CLLocationManager*)manager didUpdateLocations:(NSArray*)locations
{
NSLog(@"%@", locations);
}
@end
int main(int argc, char * argv[])
{
LocationDelegate* delegate = [[LocationDelegate alloc] init];
CLLocationManager* manager = [[CLLocationManager alloc] init];
manager.delegate = delegate;
[manager startUpdatingLocation];
[[NSRunLoop currentRunLoop] run];
return 0;
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…