У меня есть jailbroken устройство с 6.1.3 iOS. Также у меня есть инструмент командной строки, который должен давать мне координаты. Код, который касается местоположения, отлично работает с обычным приложением, но не в командной строке.CLLocationmanager setAuthorizationStatus не работает (джейлбрейк)
Я нашел подобный вопрос, но это не похоже на работу: Get GPS without alert view with ROOT permission(jailbreak)
- (void) start
{
NSLog(@"Started");
if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorized)
{
NSLog(@"%i", [CLLocationManager authorizationStatus]);
}
//[locationManager setAuthorizationStatus:YES forBundleIdentifier:[[NSBundle mainBundle] bundleIdentifier]];
[CLLocationManager setAuthorizationStatus:YES forBundleIdentifier:[[NSBundle mainBundle] bundleIdentifier]];
NSLog(@"%@", [[NSBundle mainBundle] bundleIdentifier]);
NSLog(@"%@", [[NSBundle mainBundle] bundlePath]);
if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorized)
{
NSLog(@"%i", [CLLocationManager authorizationStatus]);
}
[locationManager startUpdatingLocation];
}
поэтому всегда необходимо войти 0 в состояние авторизации = kCLAuthorizationStatusNotDetermined.
Я также добавил пособия приложения с ldid после строительства с
com.apple.locationd.authorizeapplications
ключа установлен верно. также были некоторые эксперименты с Info.plist, но все же
didUpdatedLocation
никогда не запускается.
Заранее благодарен!
вот мой главный, если это необходимо:
#import <Foundation/Foundation.h>
#import "locateClass.h"
int main (int argc, const char * argv[])
{
@autoreleasepool
{
// insert code here...
NSLog(@"Hello, World!");
locateClass *loc = [[locateClass alloc] init];
[loc start];
}
return 0;
}
Также я использую iOSOpenDev
UPDATE:
Если я не использую info.plist, С помощью этого кода у меня есть это в консоли:
iPhone-AppServer Saimon[841] <Warning>: Hello, World!
iPhone-AppServer Saimon[841] <Warning>: Started
iPhone-AppServer Saimon[841] <Warning>: 1
iPhone-AppServer Saimon[841] <Warning>: (null)
iPhone-AppServer Saimon[841] <Warning>: /private/var/mobile/docs/fromMac/Debug-iphoneos
iPhone-AppServer Saimon[841] <Warning>: 1
iPhone-AppServer awdd[842] <Error>: libMobileGestalt copySystemVersionDictionaryValue: Could not lookup ReleaseType from system version dictionary
iPhone-AppServer awdd[842] <Error>: CoreLocation: CLClient is deprecated. Will be obsolete soon.
Если я - такой вывод:
iPhone-AppServer Saimon[854] <Warning>: Hello, World!
iPhone-AppServer Saimon[854] <Warning>: Started
iPhone-AppServer locationd[362] <Warning>: Launch Services: Registering unknown app identifier com.apple.xcode.dsym.Saimon failed
iPhone-AppServer locationd[362] <Warning>: Launch Services: Unable to find app identifier com.apple.xcode.dsym.Saimon
iPhone-AppServer Saimon[854] <Warning>: 0
iPhone-AppServer Saimon[854] <Warning>: com.apple.xcode.dsym.Saimon
iPhone-AppServer Saimon[854] <Warning>: /private/var/mobile/docs/fromMac/Debug-iphoneos
iPhone-AppServer Saimon[854] <Warning>: 0
iPhone-AppServer awdd[855] <Error>: libMobileGestalt copySystemVersionDictionaryValue: Could not lookup ReleaseType from system version dictionary
iPhone-AppServer awdd[855] <Error>: CoreLocation: CLClient is deprecated. Will be obsolete soon.
Вы уверены, что '[[NSBundle mainBundle] bundleIdentifier]' возвращает вам идентификатор пакета? Как я правильно помню, он не работает с бинарными приложениями, потому что нет пакета, поэтому нет идентификатора пакета. Он работает с обычными приложениями, потому что они установлены как комплект. Попробуйте передать только некоторую строку, например '@" com.company.myapp ", как идентификатор пакета. Это то, что я делаю, когда хочу получить место в демоне. – creker
Я установил файл Info.plist рядом с двоичным кодом, поэтому, когда я запускаю двоичный файл, у меня есть bundleId и состояние 0. Если я удалю Info.plist, то у меня нет пакета и идентификатора 1. Знаете ли вы, это компилятор предупреждение о setAuthorizationStatus: Метод класса '+ setAuthorizationStatus: forBundleIdentifier:' not found (тип возврата по умолчанию - 'id') в порядке? Я ничего не объявлял. – Dimson
Да, это нормально. Был быстрый тест - он работает для меня. Используется тот же самый код, что и у вас, и получил статус «kCLAuthorizationStatusAuthorized» в качестве статуса. Не знаю, для 'didUpdateLocation', но свойство' location' содержит местоположение. – creker