2013-12-11 3 views
3

Я работаю с ibeacons с пары недель, я пытался опубликовать некоторые локальные уведомления, когда iphone попадает в зону маяка (когда близость близится).didRangeBeacons метод не вызывается, когда дисплей выключен

Он работал нормально, когда приложение находится в фоновом режиме с заблокированным и с дисплеем, но когда мой дисплей становится черным, метод didRangeBeacons перестает называться.

Я знаю, что с помощью

region.notifyEntryStateOnDisplay = true; 

мы можем получить уведомление, пока на дисплее на.

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

Пожалуйста, помогите мне.

ответ

2

Нет, это по дизайну и отражает цель iOS по сохранению батареи. Вы можете рассчитывать только на didRangeBeacons:, когда приложение находится на первом плане.

David Young имеет довольно тщательную запись, которая может помочь уточнить.

4

Если вы запросили уведомления и ранжирование радиомаяка, и вы введете новый регион, пока экран заблокирован, вы получите сообщение didEnterRegion (или, возможно, сообщение didDetermineState), а затем около 5 секунд сообщений о диапазоне. Если пользователь не просыпает устройство в течение этих 5 секунд, сообщения диапазона останавливаются.

Таким образом, вы не можете фильтровать на основе близости к маяку с фона. Если вы попытаетесь подождать до тех пор, пока не получите значение диапазона, близкое к этому, вы, скорее всего, не получите его, потому что устройство перестает отправлять сообщения диапазона до того, как пользователь достигнет этого. Затем вы не будете получать больше уведомлений об этом регионе маяка, пока пользователь не покинет регион снова или не пробудит телефон и не вернет ваше приложение на передний план.

Приложение Я работаю над сообщениями местного уведомления, когда получает сообщение didEnterRegion (или didDetermineState). Это приводит к тому, что экран загорается, но, похоже, не увеличивает время, которое вы получаете за пределы диапазона.

+0

Похоже, вы были правы в этих 5 секунд времени, я просто сделать предупреждение, как вы только что вошли в радиомаяка зону, то после 5сек-х я мог бы получить уведомление, когда свет включен, Я попробую с этим. Спасибо Duncan – Madhu

+0

Хороший вопрос! Спасибо – Fulkron

10

Полностью можно использовать маяки в фоновом режиме.

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

locationManager2 = [[CLLocationManager alloc] init]; 
locationManager2.delegate = self; 
locationManager2.desiredAccuracy = kCLLocationAccuracyKilometer; 
[locationManager2 startUpdatingLocation]; 

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ 
    //Do nothing here, but enjoy ranging callbacks in background :-) 
} 

Теперь вам нужно иметь хорошее объяснение, когда Apple, спросить вас, почему вам нужен фон обновления местоположения в режиме приложения. Они очень придирчивы к этому.

+0

Он работает, спасибо за ваш совет! – dru

+0

Yeahhhh, наконец, это событие, у меня есть 10beacons в массиве, призывал всех маяков к циклу для ранжирования, и, наконец, это было для маяков, хотя мое приложение находится в заблокированном состоянии в режиме сна (т.е. без света), что Я сделал, я попытался создать объект CLBeaconregion для каждого цикла близости uuid, а затем передал его [_locationManager startMonitoringForRegion: beaconRegionsObj]; [_locationManager startRangingBeaconsInRegion: beaconRegionsObj]; – Madhu

1

У меня та же проблема, что и у Мадху. Вместо didUpdateToLocation, я использовал сделалUpdateLocations, который сработал для меня. Теперь я могу отображать маяки, когда приложение находится в фоновом режиме или завершено с заблокированным и отображением.

iOS 8.4

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { 
    //Do nothing here 
} 
Смежные вопросы