Можете ли вы помешать регионам сохраняться между запусками с CLLocationManager?

Есть ли способ предотвратить сохранение CLLocationManager отслеживаемых областей между запусками? Каждый раз, когда приложение запускается, мне нужно добавить новый набор отслеживаемых областей, а старые больше не нужны. Есть ли способ предотвратить их сохранение или удалить все старые во время запуска?

1 ответ

Конечно, вы можете очистить все регионы, которые в настоящее время отслеживаются:

+(void)clearRegionWatch
{
    for(CLRegion *region in [[WGLocation shared].locationManager monitoredRegions]){
        [[WGLocation shared].locationManager stopMonitoringForRegion:region];
    }
}

Если у вас был определенный идентификатор, который вы хотите удалить:

+(void)clearRegionWatchForKey:(NSString *)key
{
    for(CLRegion *region in [[WGLocation shared].locationManager monitoredRegions]){
        if([region.identifier isEqualToString:key]){
            [[WGLocation shared].locationManager stopMonitoringForRegion:region];
        }
    }
}

Вы можете скопировать внутреннюю часть функции в соответствующее место в вашем приложении. Я скопировал их из моего общего класса менеджера.

В SWIFT 4 вы можете остановить мониторинг всех регионов, как

let monitoredRegions = locationManager.monitoredRegions

for region in monitoredRegions{
    locationManager.stopMonitoring(for: region)
}
Другие вопросы по тегам