Разработка iOS: Push-уведомления предотвращают срабатывание моих локальных уведомлений - PullRequest
3 голосов
/ 19 января 2011

У меня есть приложение с будильником, предназначенное для работы определенным образом, когда оно работает на переднем плане и получает локальное уведомление, которое было запланировано моим приложением. Когда пользователь устанавливает будильник, мое приложение создает локальное уведомление. Когда срабатывает это локальное уведомление, оно вызывает метод didReceiveLocalNotification, чтобы предупредить пользователя. Проблема заключается в том, что если мое приложение работает на переднем плане и push-уведомление поступает из другого приложения, то оно отображает модальное представление push-уведомлений, которое не позволяет моему приложению предупреждать пользователя при срабатывании локального уведомления. Как только я отклоняю модальное представление push-уведомлений, мое приложение запускает локальное уведомление. Это можно обойти? Я спрашиваю, потому что, если мое приложение не отключает будильник, когда пользователь планирует его срабатывание, то оно как бы побеждает всю цель установки будильника.

Большое спасибо за вашу мудрость!

Ответы [ 2 ]

4 голосов
/ 11 марта 2011

Для приложения существует 5 различных состояний:

  • Активный передний план
  • Активный передний план
  • Запуск фоновой работы
  • Задний план приостановлен
  • Не работает

Когда вы запускаете приложение, оно находится в «Foreground Active», затем, когда отображается модальное push-уведомление, ваше приложение переходит в «Foreground Inactive».

В документации Apple сказала (http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html):

Если она доставляет его, когда приложение не активно на переднем плане, оно отображает предупреждение, обозначает значок приложения или воспроизводит звук - все, что указано в объекте UILocalNotification.Если приложение работает на переднем плане, оповещение, значок или звуковой сигнал отсутствуют, вместо этого вызывается приложение: didReceiveLocalNotification: метод, если его реализует делегат.

Таким образом, на переднем плане application:didReceiveLocalNotification: получаетвызывается, только если ваше приложение активно, и оно становится активным, когда вы отклоняете модальное уведомление.

Thisявляется пограничным, и для этого случая нет решения.

1 голос
/ 08 марта 2011

Я не верю, что есть способ обойти это.Возможно, вы сможете воспроизводить звук или вибрировать, но ОС уже требует внимания пользователя с помощью оповещения о пуш-уведомлении, поэтому действительно не поможет опубликовать другое, пока пользователь не разберется с первым.Как вы справляетесь с ситуацией, когда пользователь планирует два сигнала одновременно?

...