Запуск приложения навсегда в фоновом режиме в iOS 8
Есть несколько веток на эту тему и ничего, что работает для меня. Мне не нужно развертывать приложение в магазине приложений, поэтому я могу делать хаки в приложении, чтобы оно продолжало работать. Можно ли как-нибудь поддерживать приложение в рабочем состоянии, даже если оно фоновое? Любые указатели приветствуются.
1 ответ
Решение
Я нашел этот проект github, решающий эту проблему: https://github.com/voyage11/Location Очевидно, что Apple не одобрит этот хак, но я думаю, что он будет работать в вашем случае.
В основном, что вы должны сделать, это:
- Используйте возможность фонового режима местоположения в info.plist
- Всегда выполняйте фоновую задачу, но не позволяйте ей выполняться дольше минуты. Создайте новую фоновую задачу каждую минуту и остановите старую задачу.
- Помимо предыдущей задачи, также продолжайте выполнять фоновую задачу. Я не уверен, хотя, действительно ли это необходимо.
- Запускайте менеджер местоположения каждую минуту и запрашивайте разрешение.
Некоторые важные фрагменты из ссылочного кода:
Фоновое задание:
bgTaskId = [application beginBackgroundTaskWithExpirationHandler:^{
[self.service debugLog:[NSString stringWithFormat:@"BG....background task %lu expired", (unsigned long)bgTaskId]];
}];
И запустить менеджер местоположения:
if(IS_OS_8_OR_LATER) {
[_locationManager requestAlwaysAuthorization];
}
[_locationManager startUpdatingLocation];