2014-01-15 4 views
0

Я был в состоянии получить мое iBeacon приложение, чтобы подтолкнуть локальные уведомления пользователей в то время как приложение работает в фоновом режиме, но по какой-то причине это уведомление твердит на каждом одном втором интервале,UILocalNotification на повторе каждый второй

UILocalNotification *notice = [[UILocalNotification alloc] init]; 

     for (int i=0; i<=1; i++) 
      { 
      notice.alertBody = @"We just found some great deals in this location!"; 
      notice.alertAction = @"Open"; 

     [[UIApplication sharedApplication] scheduleLocalNotification:notice]; 


     notice.fireDate = [[NSDate date] dateByAddingTimeInterval:0.2]; 
     } 

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

+3

'for (int i = 0; i <= 1; i ++)' ??? В самом деле? – matt

+1

Вы не говорите, как этот код привязан к вашим обратным вызовам iBeacon. Если у вас есть это в диапазоне обратного вызова, то он будет отображаться повторно. Если вы используете его в своем обратном вызове мониторинга, его нельзя отображать бесконечно. – davidgyoung

+0

Отличный ответ, спасибо DavidgYoung. Я назвал это в своем диапазоне обратного вызова, потому что я установил его в логическом выражении. –

ответ

0

использование presentLocalNotificationNow. он выводит уведомление только один раз в то время, когда пользователь вводит регион.

[[UIApplication sharedApplication] presentLocalNotificationNow:notice]; 
0

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

Недвижимость: repeatInterval объект: UILocalNotification объект по умолчанию - 0, то есть не повторяющийся. Следовательно, это не относится к настройке repeatInterval, потому что вы хотите, чтобы он не повторялся.

0

попробуйте это. , ,

UILocalNotification *notice = [[UILocalNotification alloc] init]; 
notice.alertBody = @"We just found some great deals in this location!"; 
notice.alertAction = @"Open"; 
notice.fireDate = [[NSDate date] dateByAddingTimeInterval:0.2]; 
[[UIApplication sharedApplication] scheduleLocalNotification:notice]; 
2

IOS колеблется каждую секунду, так что это звучит как ваш код в методе didRangeBeacons. Вместо этого вы должны переместить код UILocalNotification в метод didEnterRegion.

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