За първи път работя с UILocalNotifications. Работи предимно с повтарящи се известия. Почти всичко има смисъл, с изключение на едно нещо.
Документацията на Apple посочва няколко случая за обработка на локални известия, когато се задействат.
Първо, случай, когато потребителят „докосне известието“, когато е извън приложението:
Ако известието е предупреждение и потребителят докосне бутона за действие (или, ако устройството е заключено, отвори плъзгача за действие), приложението се стартира. В метода application:didFinishLaunchingWithOptions: делегатът на приложението може да получи обекта UILocalNotification от предадения речник на опциите, като използва ключа UIApplicationLaunchOptionsLocalNotificationKey. Делегатът може да инспектира свойствата на известието и, ако известието включва персонализирани данни в своя речник userInfo, той може да получи достъп до тези данни и да ги обработи по съответния начин.
Той също така посочва случай какво се случва, когато потребителят е в приложението:
Ако приложението е най-отпред и се вижда, когато системата достави известието, не се показва предупреждение, няма икона със значка и не се възпроизвежда звук. Приложението:didReceiveLocalNotification: обаче се извиква, ако делегатът на приложението го внедри. Екземплярът UILocalNotification се предава в този метод и делегатът може да провери свойствата му или да получи достъп до персонализирани данни от речника userInfo.
И в двата случая разработчикът може да получи достъп до uilocalnotification и след това да реши какво да прави с него. В трети случай обаче - когато потребителят, извън приложението, види и игнорира известието и след това стартира приложението по-късно, не се извиква метод, който позволява на приложението да знае кои известия са били задействани преди това?
Първо си помислих, че това изявление описва това поведение, но сега не съм сигурен:
От друга страна, ако локалното известие обозначава само иконата на приложението и потребителят в отговор стартира приложението, се извиква методът application:didFinishLaunchingWithOptions:, но в речника на опциите не е включен UILocalNotification обект.
Как мога да се справя с третия случай? Как мога да разбера кои локални известия са задействани? Трябва ли да преглеждам моя списък и сам да проверявам всичките им времена? Има ли по-добър начин да се постигне това?