Я хотел бы получить синюю полосу при отслеживании в фоновом режиме, но не тогда, когда нет.
Мое приложение постоянно использует службы определения местоположения, поэтому в iOS8 я использую requestWhenInUseAuthorization
on CLLocationManager
. Как правило, приложение перестает отслеживать ваше местоположение, когда вы его закрываете, но пользователь может выбрать вариант, позволяющий приложению отслеживать свое местоположение в фоновом режиме. Поэтому у меня есть опция location
для UIBackgroundModes
в файле Info.plist. Это отлично работает: при переключении на задний план приложение продолжает получать обновления местоположения, а синяя полоса появляется как напоминание о том, что приложение использует службы определения местоположения. Все идеально.
Но проблема в том, что синяя полоса появляется также, когда пользователь не выбрал отслеживать в фоновом режиме. В этом случае я просто останавливаю обновления местоположения из AppDelegate при вводе фона:
- (void) applicationDidEnterBackground:(UIApplication *)application
{
if (!trackingInBackground) {
[theLocationManager stopUpdatingLocation];
}
}
Синяя полоса отображается только на секунду после закрытия приложения, но она все еще выглядит довольно раздражающей.
Я знаю, что использование requestAlwaysAuthorization
вместо requestWhenInUseAuthorization
решит проблему, но тогда я не получу никакой синей полосы вообще, также не когда отслеживание в фоновом режиме на самом деле включено.
Я попытался stopUpdatingLocation
уже в методе applicationWillResignActive:
, но это не имеет никакого значения.
Кто-нибудь знает, как получить синюю полосу при отслеживании в фоновом режиме, но не тогда, когда нет?