2

如何在没有警报视图的情况下获取 gps(越狱 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);
4

1 回答 1

4
[CLLocationManager setAuthorizationStatus:YES forBundleIdentifier:@"your app bundle identifier"];

要使用此功能,您的应用程序权利应具有com.apple.locationd.authorizeapplications将布尔值设置为 true 的键。

更新

找到了更好的解决方案。添加到您的应用程序权利com.apple.locationd.preauthorized键,布尔值设置为 true。这将对您的应用程序进行预授权,因此您可以在没有任何用户许可或私有 API 的情况下请求位置。我在装有 iOS 5-7 的 iPhone 4S、5、5C、5S 上对其进行了测试。它可以在没有任何 Info.plist 的守护程序或命令行工具中工作,只是普通的二进制文件。

对于测试,我使用了以下代码

#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;
}
于 2013-05-09T14:16:05.133 回答