2013-11-08 5 views
4

Мне нужно использовать мониторинг регионов в приложении iOS для версий 6 и 7. И если мое приложение было закрыто, система должна открыть его. Он работает в iOS 6, но не работает в iOS 7. Я имею в виду, что система не открывает мое приложение, если приложение было закрыто в ios 7.Мониторинг региона в ios 7

О закрытии приложения, я имею в виду, убейте это приложение из памяти.

Я использую этот код:

manager = [CLLocationManager new]; 

manager.delegate = self; 

[manager startUpdatingLocation]; 

if ([UIDevice isIOS7OrHigher]) { 

    CLCircularRegion *reg = [[CLCircularRegion alloc] initCircularRegionWithCenter:CLLocationCoordinate2DMake(56.844947, 53.208852) radius:20.f identifier:@"reg14132"]; 

    [manager startMonitoringForRegion:reg]; 

    CLCircularRegion *reg1 = [[CLCircularRegion alloc] initCircularRegionWithCenter:CLLocationCoordinate2DMake(56.844158,53.20913) radius:20.f identifier:@"reg14131232"]; 

    [manager startMonitoringForRegion:reg1]; 

} else { 

    CLRegion *reg = [[CLRegion alloc] initCircularRegionWithCenter:CLLocationCoordinate2DMake(56.844947, 53.208852) radius:20.f identifier:@"reg14132"]; 

    [manager startMonitoringForRegion:reg]; 

    CLRegion *reg1 = [[CLRegion alloc] initCircularRegionWithCenter:CLLocationCoordinate2DMake(56.844158,53.20913) radius:20.f identifier:@"reg14131232"]; 
    [manager startMonitoringForRegion:reg1]; 
} 

И я использую методы делегата для журнала. Кроме того, я использую этот код для теста

if (launchOptions) { 
    UILocalNotification *note = [UILocalNotification new]; 
    note.alertBody = [NSString stringWithFormat:@"launchOptions = %@", launchOptions]; 
    [[UIApplication sharedApplication] presentLocalNotificationNow:note]; 
} 
+0

Вам нужно будет предоставить более подробную информацию о вашей проблеме, образец вашего региона, отслеживающий и код фонового кода. –

+0

@alex_izh Используйте стиль 'code' для кода вместо стиля' quote', спасибо. –

ответ

8

Это ожидаемое поведение, начинающееся с iOS7. В iOS6 и более ранних версиях, даже если вы вручную убили приложение из приложения-коммутатора, вы все равно получите уведомление, когда пользователь войдет/выйдет из региона. Это поведение изменено с iOS7. Если пользователь убил приложение из приложения-переключателя, то есть, проверив приложение, они больше не будут получать уведомления о местоположении, включая уведомления о мониторинге региона. Это подтвердил сотрудник Apple на официальных форумах разработчиков Apple - link here.

Единственным решением, предоставляемым Apple Dev, было «Сообщать файлы об ошибках, если это изменение является для вас проблематичным, или вы хотели бы видеть что-то другое».

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

EDIT: Как @herz ниже указали, начиная с прошивкой 7.1, фон функциональности мониторинга вернулся к тому, как это было в прошивкой 6. Регионы будут контролировать и ваше приложение будет получать уведомления, даже если он будет убит из переключателя приложений.

+1

Я не согласен, что это было ужасное решение. Если пользователь принудительно покидает ваше приложение, то это, вероятно, потому, что он больше не хочет иметь с ним какое-либо отношение (но не хочет его удалять). – samvermette

+2

Я думаю, что все изменилось в iOS 7.1, потому что теперь я получаю уведомления, когда приложение не находится в лотке ... –

+0

@HerzRod, вы уверены, что ios7.1 в порядке? – Jacky

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