Дескриптор UILocalNotification при открытии через значок приложения?

Я работаю с UILocalNotifications в первый раз. В основном работает с повторяющимися уведомлениями. Почти все имеет смысл, кроме одного.

Документация Apple описывает несколько случаев обработка локальных уведомлений при их срабатывании.

Во-первых, случай, когда пользователь «нажимает на уведомление», находясь вне приложения:

Если уведомление является предупреждением и пользователь нажимает кнопку действия (или, если устройство заблокировано, открывает ползунок действия), приложение запускается. В методе application:didFinishLaunchingWithOptions: делегат приложения может получить объект UILocalNotification из переданного словаря параметров с помощью ключа UIApplicationLaunchOptionsLocalNotificationKey. Делегат может проверить свойства уведомления и, если уведомление включает пользовательские данные в свой словарь userInfo, он может получить доступ к этим данным и соответствующим образом обработать их.

В нем также приводится пример того, что происходит, когда пользователь находится внутри приложения:

Если приложение находится на первом месте и видно, когда система доставляет уведомление, предупреждение не отображается, значок не помечается и звук не воспроизводится. Однако приложение:didReceiveLocalNotification: вызывается, если его реализует делегат приложения. Экземпляр UILocalNotification передается в этот метод, и делегат может проверить его свойства или получить доступ к любым пользовательским данным из словаря userInfo.

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

Сначала я подумал, что это утверждение описывает такое поведение, но теперь я не уверен:

С другой стороны, если локальное уведомление отмечает только значок приложения, а пользователь в ответ запускает приложение, вызывается метод application:didFinishLaunchingWithOptions:, но объект UILocalNotification не включается в словарь параметров.

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


person dtmland    schedule 25.05.2013    source источник


Ответы (1)


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

person J2theC    schedule 25.05.2013
comment
Спасибо за ответ. После дополнительных исследований я обнаружил, что мой вопрос является дубликатом этого сообщения: .com/questions/16469721/ - person dtmland; 26.05.2013
comment
привет @dtmland ты нашел решение этой проблемы...можешь поделиться?? - person Hardik Amal; 04.03.2016