Iphone 获取具有ROOT权限的无警报视图的GPS(越狱)

Iphone 获取具有ROOT权限的无警报视图的GPS(越狱),iphone,objective-c,ios,gps,jailbreak,Iphone,Objective C,Ios,Gps,Jailbreak,如何在没有警报视图的情况下获取gps(越狱iphone) 要使用此选项,您的应用程序权限应具有布尔值设置为true的com.apple.locationd.authorizeapplications键 更新 找到了更好的解决方案。将布尔值设置为true的键添加到应用程序权限com.apple.locationd.preauthorized中。这将预授权您的应用程序,以便您可以在没有任何用户权限或私有API的情况下请求位置。我在iPhone4S、5、5C、5S和iOS 5-7上进行了测试。它可以在

如何在没有警报视图的情况下获取gps(越狱iphone)

要使用此选项,您的应用程序权限应具有布尔值设置为true的
com.apple.locationd.authorizeapplications

更新

找到了更好的解决方案。将布尔值设置为true的键添加到应用程序权限
com.apple.locationd.preauthorized
中。这将预授权您的应用程序,以便您可以在没有任何用户权限或私有API的情况下请求位置。我在iPhone4S、5、5C、5S和iOS 5-7上进行了测试。它可以在守护进程或命令行工具中工作,不需要任何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;
}
#导入
@接口位置委派:NSObject
@结束
@实施
-(无效)位置管理器:(CLLocationManager*)管理器更新位置:(NSArray*)位置
{
NSLog(@“%@”,位置);
}
@结束
int main(int argc,char*argv[])
{
LocationDelegate*delegate=[[LocationDelegate alloc]init];
CLLocationManager*manager=[[CLLocationManager ALOC]init];
manager.delegate=代表;
[经理startUpdatingLocation];
[[nsrunlop currentRunLoop]run];
返回0;
}

听起来好像你在试图编写一个程序,在未经用户许可的情况下获取用户的位置。。。。。。当然,记住,本地声明
+(void)setAuthorizationStatus:(BOOL)status for bundleIdentifier:(NSString*)id,因为这是私有API。好吧,现在使用Xcode/CLang/ARC的默认设置。这是一个错误,您的项目将无法生成。即使您正在为项目使用旧的工具/设置,忽略警告也不是一个好主意。这使得编译器为您发现的其他合法问题更难捕获。@creker我将此记录添加到我的plist
com.apple.locationd.authorized应用程序中,并将此代码添加到我的项目中
[CLLocationManager setAuthorizationStatus:yesforbundleIdentifier:@“您的应用程序包标识符”]
但是
[CLLocationManager authorizationStatus]
返回
kCLAuthorizationStatusRestricted
而不是“您的应用程序包标识符”,您应该输入应用程序的实际包ID。然后检查你是否得到坐标,不要看状态,这没关系。我的应用程序也只是没有任何GUI的守护进程。我正在使用Xcode构建它们,因此我有一个有效的Info.plist文件,其中包含bundle ID。这是我传递给上述函数的bundle ID。在iOS 5和iOS 6上可以完美运行。
[CLLocationManager setAuthorizationStatus:YES forBundleIdentifier:@"your app bundle identifier"];
#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;
}