A UILocalNotification
- это просто хранилище для информации уведомления. Он ничего не выполняет.
Кроме того, ваше приложение не отображает уведомление. Другой процесс делает. Так что подклассы UILocalNotification
просто бесполезны.
РЕДАКТИРОВАТЬ 22 декабря, 17:53 UTC + 1:
Да, вы можете подкласс UILocalNotification
. Но UILocalNotification
является абстрактным классом, и ни одно из его свойств не реализовано. Метод alloc
переопределен, поэтому он возвращает экземпляр UILocalNotification
, частного подкласса. Вот почему вы не можете создать экземпляр UILocalNotificationExampleSubclass
.
Но все же, нет никакого смысла в подклассе UILocalNotification
, потому что, когда вы планируете уведомление с помощью -[UIApplication scheduleLocalNotification:]
или представляете уведомление немедленно с использованием -[UIApplication presentLocalNotification:]
, операционной системы копий уведомлений.
Эта копия хранится в другом процессе, управляемом системой, который использует свой собственный механизм частного хранения. UILocalNotification
- это просто хранилище для набора свойств, предназначенных для сериализации и отправки из приложения в операционную систему.
Теперь у нас есть другой процесс, хранящий все запланированные локальные уведомления и ожидающий срабатывания уведомления. Когда это произойдет, этот процесс проверит, находится ли ваше приложение на переднем плане.
- Если ваше приложение не находится на переднем плане, этот другой процесс, который полностью вне нашего контроля, создаст предупреждение и отобразит уведомление. Мы не можем настроить это предупреждение любым способом, кроме как с помощью свойств класса
UILocalNotification
.
- Если ваше приложение находится на переднем плане, уведомление будет отправлено обратно в приложение, которое создаст новый экземпляр
UILocalNotification
. Затем общий экземпляр UIApplication
получит доступ к свойству delegate
и проверит, реализует ли этот делегат application:didReceiveLocalNotification:
. Если это произойдет, вы получите уведомление обратно и можете сделать все, что вы хотите с этим уведомлением. Например, вы можете выбрать отображение уведомления с использованием представления предупреждений.
Настройка и отображение вида оповещения может быть выполнена следующим образом:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
UIAlertView *alertView =
[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Alert", nil)
message:NSLocalizedString(notification.alertBody, nil)
delegate:nil
cancelButtonTitle:nil
otherButtonTitles:NSLocalizedString(@"OK", nil), nil];
[alertView show];
[alertView release]; // unless your project uses Automatic Reference Counting
}
Я надеюсь, что этот более длинный ответ действительно ответил на ваш вопрос, , если то, что я говорю, верно .