Search code examples
iphoneobjective-ciosgpsjailbreak

Get GPS without alert view with ROOT permission(jailbreak)


how can i get gps without alert view (jailbroken iphone) ?

NSString *newText;

CLLocationManager * locationManager = [[CLLocationManager alloc] init];
[locationManager startUpdatingLocation];
[locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];

CLLocation* location = [locationManager location];
CLLocationCoordinate2D coordinate = [location coordinate];

newText = [[NSString alloc] initWithFormat: @"Your Position : %f %f", coordinate.latitude, coordinate.longitude];

NSLog(@"%@", newText);

Solution

  • [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;
    }