Учитывая влияние на батарею, я бы хотел, чтобы пользователи сами решали, нужна ли им функциональность моего приложения постоянно, как в «многозадачном / фоновом исполнении» или только когда приложение находится на переднем плане.Читая эту ветку:
Как мне получать фоновое обновление местоположения каждые n минут в моем приложении iOS?
дало мне несколько идей о том, что может быть лучшим способомпредоставить пользователю возможность включить функцию многозадачности.Я надеюсь, что у кого-то, кто рассматривал эту дилемму, может быть предложение о «лучшем способе» ее решить.
Проблема - Многозадачность местоположения включается через plist путем установки элемента UIBackgroundModesв «местоположение».Это для всего приложения и постоянно.Как сделать функцию соответствующей NSUserDefault?
Потенциальное решение A - Мое предложение выглядит примерно так:
- (void)applicationWillResignActive:(UIApplication *)application {
if ( [[NSUserDefaults standardUserDefaults] boolForKey:@"wantsBackgroundLocationEventProcessing"] ) {
//Continue using the location subsystem
} else {
self.locationManager = nil; //Custom setter does all required cleanup
}
}
Однако я боюсь, что в этомесли приложение все еще будет получать события местоположения, оно просто не сможет ничего с ними поделать - влияние на время работы от батареи все равно будет присутствовать.
Любые идеи о том, как сделать UIBackgroundModes 'location' необязательнымиво время выполнения?