Я пытаюсь найти места, пока мое приложение находится в фоновом режиме. Все работает отлично, когда я использую свое приложение. Я также могу переключиться на любое другое приложение (даже на начальном экране), и все еще остаются в памяти. Если я использую свой телефон, но мое приложение находится в фоновом режиме, обновления обновляются, как кажется, очень хорошо, пока мой телефон активен (не заблокирован).iOS Location Manager останавливается после того, как телефон заблокирован на ~ 10 минут
Однако, если я заблокирую телефон, и я вернусь примерно через 10 минут, значок местоположения в строке состояния и мое приложение больше не получают обновления местоположения.
Я проверил для аварии приложения и нет отчета об аварии. Мое приложение также по-прежнему появляется в списке приложений, поэтому я не думаю, что он разбился.
Должен ли GPS оставаться навсегда, если я попрошу разрешения «Всегда». Или ОС выключает его после того, как телефон спит какое-то время?
Здесь есть являются записи в моей PLIST:
<key>NSLocationAlwaysUsageDescription</key>
<string></string>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
А вот скриншот услуг фона местоположения на:
Вот мой пользовательский класс, который является менеджером местоположения делегат:
@interface LocationDelegate()
@property (nonatomic, strong) CLLocationManager *locationManager;
@end
@implementation LocationDelegate
+ (instancetype) singleton {
static LocationDelegate *delegate = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
delegate = [[self alloc] init];
});
return delegate;
}
- (id) init {
if (self = [super init]) {
// for now filter and accuracy are based on the same preference
_locationManager = [[CLLocationManager alloc] init];
_locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
_locationManager.delegate = self;
// Check for iOS 8
if ([_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[_locationManager requestAlwaysAuthorization];
}
return self;
}
Обратите внимание, что это является одноэлементным. Это имеет значение? Этот класс очищается после того, как мое приложение некоторое время находилось в фоновом режиме или приостановлено? Из того, что я прочитал, я не думаю, что подобные синглы убираются, поскольку они являются сильными ссылками, поэтому я не думаю, что это проблема ... но я действительно не знаю, почему я прекратил получать места после определенного количества время.
EDIT:
Кажется, что мой менеджер местоположения паузы геоданных через некоторое время. Большая проблема в том, что я не получаю резюме.
У меня есть набор activityType до значения по умолчанию
CLActivityTypeOther
Я могу попробовать другие activityTypes, чтобы увидеть, если это будет иметь значение. Однако я полагаюсь на свое приложение, чтобы работать на прогулку и вождение.
Я думаю, что я бегу в той же проблемы, как это:
iPhone GPS in background never resumes after pause
Привет @lostintranslation, у меня такая же проблема. Пожалуйста, предоставьте мне ответ, если у вас есть. –