Iphone 获取具有ROOT权限的无警报视图的GPS(越狱)
如何在没有警报视图的情况下获取gps(越狱iphone) 要使用此选项,您的应用程序权限应具有布尔值设置为true的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上进行了测试。它可以在
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我将此记录添加到我的plistcom.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;
}