Несколько замечаний:
Максимальное количество UILocalNotification
Вы указали сценарий, что для каждого «календарного события» потребуется около 20 локальных уведомлений, и вы ожидаете, что обычный пользователь будет иметь додо 100 календарных событий.Это сделало бы 2000 UILocalNotification.Вы можете заметить, что iOS4 ограничивает количество UILocalNotification до 64 для каждого приложения.
См .: Справочник по классам UILocalNotification
Приложение может иметь только ограниченноеколичество запланированных уведомлений;система хранит самые быстрые 64 уведомления об отправке (с автоматически перепланированными уведомлениями, считающимися как одно уведомление) и отбрасывает остальные
Обработка UILocalNotification
Начиная с iOS4, приложения больше не запускаютсяисключительно через приложение: didFinishLaunchingWithOptions:
application: didFinishLaunchingWithOptions: вызывается только один раз, когда приложение запускается из не фонового состояния (например, первый запуск пользователем, предыдущий запуск был остановлен iOS для сохранения памяти, пользовательубил приложение из панели многозадачности, устройство было перезапущено).
Таким образом, на самом деле есть три различных сценария для рассмотрения обработки UILocalNotification в iOS4 (где была введена многозадачность).
Когда вашПриложение работает в фоновом режиме, место для обработки уведомлений - через приложение: didReceiveLocalNotification:, которое запускается в двух сценариях:
- Когда пользователь нажимает кнопку действия «Просмотр», чтобы «запустить» ваше приложение изуведомление о предупреждении, когда ваше приложение имеет фон
- Когда уведомление запускается, когда ваше приложение работает на переднем плане.
application: didFinishLaunchingWithOptions: обрабатывает только один сценарий:
- Когда пользователь нажимает кнопку действия «Просмотр», чтобы запустить приложение из уведомления о предупреждении, когда ваше приложение не работает в фоновом режиме
Устройства, которые не поддерживаютмногозадачность (например, iPhone 3G) вообще не будет использовать сценарий 1, а исключительно сценарий 3.
В сценарии 2 вы обрабатываете свое собственное уведомление, включая отображение любого соответствующего UIAlertView или выполнение каких-либо действий.
Теперь, последнее, что следует отметить, это то, что уведомления, которые запускаются, когда приложение не запущено на переднем плане и игнорируются пользователем (т.е.пользователь не нажал кнопку действия «Просмотр») не вызовет сценарий 1 или 3. Они не будут отправлять уведомление вашему приложению вообще при последующих запусках.
Вы правы в том, чтоВы больше не можете получить доступ к этим уведомлениям через [[UIApplication sharedApplication] scheduleLocalNotifications], потому что они уже истекли на момент уведомления.
Надеюсь, это поможет!