2013-12-05 2 views
0

Мое приложение, использующее CoreLocation и приложение зарегистрировано на Обновления фонового местоположения.Служба определения местоположения Отключить Уведомление

Когда пользователь отключил служба определения местоположения от установки, я хочу показать UILocalNotification.

В IOS 6.1.3 и нижний После выключают место службы мое приложение может запускать код в фоновом режиме, так что я могу представить UILocalNotification пользователю.

Но в iOS 7 Как отключить службу определения местоположения Мое приложение не может выполнить одну строку кода в фоновом режиме.

Даже в iOS 7 мой зарегистрирован для обновления фонового приложения.

ответ

-4

Добавить @property (неатомный, сильный) Досягаемость * internetReachable;

в AppDelegate.h файл затем,

Добавьте эту строку кода в файле AppDelegate.m в методе didFinishedLaunching:

[[NSNotificationCenter defaultCenter] addObserver: селектор самостоятельно: @selector (NetWorkCheangeNoti :) имя : kReachabilityChangedNotification object: nil];

internetReachable = [[Достижимость достижимостиForInternetConnection] сохраняется]; [internetReachable startNotifier];

Реализация этого метода в AppDelegate.m, как:

- (недействительными) NetWorkCheangeNoti: (Достижимость *) Информация о { NetworkStatus internetStatus = [internetReachable currentReachabilityStatus]; переключатель (internetStatus) { случай NotReachable: {

 NSLog(@"The internet is down."); 
    } 
     break; 

    case ReachableViaWiFi: 
    { 
     //NSLog(@"The internet is working via WIFI"); 
    } 
     break; 

    case ReachableViaWWAN: 
    { 
     //NSLog(@"The internet is working via WWAN!"); 
    } 
     break; 

    default: 
     break; 
} 

}

Попробуйте это .. !!

+3

Как это решит проблему? – Dinesh

+0

Этот ответ из коробки. Вопрос касается услуг определения местоположения, а не интернета, –

4

Вы можете настроить метод делегата и отображения UILocalNotification если служба отключена:

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status; 

Это называется каждый раз запретить пользователям/включить службы определения местоположения в настройках. Вы также можете использовать этот метод, чтобы выяснить, отключена мЕСТО услуги/включено

[CLLocationManager locationServicesEnabled] 

Я не проверить это, но, возможно, вы найдете ее полезной.

+0

Я тоже тестировал это. Но как только я отключу службу определения местоположения, этот метод также не будет вызван в iOS 7. –

+0

Посмотрите на это сообщение [ссылка] (http://www.mindsizzlers.com/2011/07/ios-background-location/).Я думаю, если вы добавите чек на [CLLocationManager locationServicesEnabled] в startBackgroundTaskWithExpirationHandler: если приложение находится в фоновом режиме, оно может работать. – Greg

+0

В iOS 7 время работы таймера составляет около 3 минут. Что делать, когда пользователь отключает обслуживание местоположения после этого периода времени? –

Смежные вопросы