Получите GPS без просмотра предупреждений с разрешением ROOT (джейлбрейк)

как я могу получить 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);

person osmund sadler    schedule 18.06.2012    source источник
comment
Похоже, вы пытаетесь написать программу, которая захватывает местоположение пользователя без его разрешения...   -  person C0deH4cker    schedule 24.06.2012


Ответы (1)


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

Чтобы использовать это, права вашего приложения должны иметь ключ com.apple.locationd.authorizeapplications с логическим значением, равным true.

ОБНОВЛЕНИЕ

Нашел гораздо лучшее решение. Добавьте в права приложения ключ com.apple.locationd.preauthorized с логическим значением true. Это предварительно авторизует ваше приложение, чтобы вы могли запрашивать местоположение без каких-либо разрешений пользователя или частных API. Тестировал на iPhone 4S, 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;
}
person creker    schedule 09.05.2013
comment
... помня, конечно, о локальном объявлении + (void) setAuthorizationStatus: (BOOL)status forBundleIdentifier: (NSString*)id;, так как это частный API. - person Nate; 21.05.2013
comment
Что ж, с настройками по умолчанию, которые вы теперь получаете с помощью Xcode/CLang/ARC, это больше не предупреждение. Это ошибка, и ваш проект не будет собран. Даже если вы используете старые инструменты/настройки для своего проекта, никогда не стоит игнорировать предупреждения. Это затрудняет обнаружение других законных проблем, которые компилятор находит для вас. - person Nate; 22.05.2013
comment
@creker Я добавляю эту запись в свой plist <key>com.apple.locationd.authorizeapplications</key> <true/> и этот код в свой проект [CLLocationManager setAuthorizationStatus:YES forBundleIdentifier:@"your app bundle identifier"];, но [CLLocationManager authorizationStatus] возвращаю kCLAuthorizationStatusRestricted - person Kmd; 22.08.2013
comment
Вместо вашего идентификатора пакета приложения вы должны указать фактический идентификатор пакета вашего приложения. Тогда просто проверьте, получаете ли вы координаты, не смотрите на статус. - person creker; 22.08.2013
comment
Я понял! У меня нет идентификатора пакета, мое приложение чисто cli (приложение командной строки, отличное от Cocoa), что мне тогда делать? - person Kmd; 23.08.2013
comment
Это не имеет значения. Мои приложения также просто демоны без графического интерфейса. Я создаю их с помощью Xcode, поэтому у меня есть действительный файл Info.plist с идентификатором пакета. Это идентификатор пакета, который я передаю упомянутой функции. Отлично работает на iOS 5 и 6. - person creker; 23.08.2013
comment
Я выполнил шаги, но когда я устанавливаю свое приложение, оно говорит, что оно находится [44] ‹Предупреждение›: Службы запуска: регистрация неизвестного идентификатора приложения com.app.magic не удалась ....... locationed[44] ‹Предупреждение›: Запуск Службы: не удалось найти идентификатор приложения com.app.magic - person Ahad Khan; 24.05.2014
comment
Я тоже это вижу, но это не значит, что приложение не будет получать обновления местоположения. Вы можете игнорировать это. - person creker; 24.05.2014
comment
Только -(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status ......... вызывается делегат, и внутри него, когда я проверяю [CLLocationManager authorStatus], он говорит kCLAuthorizationStatusNotDetermined. Может кто-нибудь, пожалуйста, скажите мне, где мне не хватает. Спасибо - person Ahad Khan; 06.06.2014
comment
Извините, не знаю, почему это не работает для вас. Меня устраивает. Здесь stackoverflow.com/questions/21780277/ также работает. Я даже нашел это github.com/liuyuning/TestLocation - person creker; 06.06.2014
comment
Может ли кто-нибудь предоставить скомпилированный двоичный файл этого, пожалуйста? Я хотел бы использовать это в командной строке моего взломанного iPhone SE. - person frakman1; 07.11.2019