Как я могу отклонить UILocalNotifications, которые появляются, когда мое приложение находится в фоновом режиме? - PullRequest
3 голосов
/ 08 апреля 2011

Я работаю над приложением для iPhone, которое должно напоминать пользователю о необходимости регулярно регистрироваться с помощью UILocalNotifications.Если они не регистрируются в течение нескольких часов, им могут напоминать пару раз, но я просто хочу показать последнее уведомление.

Теперь, если приложение открыто, я получаю обратный вызов didReceiveLocalNotification: (UILocalNotification *) уведомление, и я могу отслеживать, отображается ли уведомление.

Если приложение не запущено и пользователь нажимает кнопку -action-, я получаю обратный вызов на

  • (BOOL) приложение: (UIApplication *) приложение didFinishLaunchingWithOptions: (NSDictionary *) launchOptions;

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

Если приложение работает в фоновом режиме, но работает, это хуже - во-первых, яне получайте никакого обратного вызова, если пользователь нажимает кнопку «Отмена», поэтому у меня та же проблема - пользователь должен нажать «Отмена» несколько раз.Во-вторых, если они нажимают на действие, я получаю вызов ApplicationDidBecomeActive, но нет никакого различия между этим и тем, когда пользователь просто переключается назад и вперед;Я могу отклонить и перенести их здесь, но, похоже, это не работает идеально, иногда всплывают несколько, прежде чем их увольняют.

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 08 апреля 2011

Вы не сможете получить обратный вызов, когда пользователь "отменит", как вы указали.

Можно ли просто напомнить пользователю один раз в вашем случае? Запланируйте только одно уведомление за раз и обновите его при запуске / возобновлении работы приложения.

0 голосов
/ 10 октября 2012

Я еще не пробовал следующее, но я считаю, что это может быть обходной путь для вашего случая.Используйте CLLocationManager s startMonitoringSignificantLocationChanges

Каждый раз, когда местоположение устройства существенно меняется, ваше приложение будет запускаться в фоновом режиме с параметрами, переданными locationManager:didUpdateLocations:и вы, вероятно, можете запланировать UILocalNotification оттуда!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...