Исходя из вашего вопроса, вы можете иметь в виду два типа диалоговых окон предупреждений:
- упомянутый вами "общий ящик оповещения" или
UIAlertView
- A
UILocalNotification
диалоговое окно с предупреждением, которое отображается, когда приложение находится в фоновом режиме («как всплывающее уведомление с текстовым сообщением»)
Я буду обращаться к ним по порядку.
Во-первых, как обрабатывать UIAlertView
нажатие кнопки «Просмотр».
Реализуйте метод alertView:didDismissWithButtonIndex:
протокола UIAlertViewDelegate
в вашем классе контроллера, и когда вы init
, UIAlertView
установите его delegate
в self
. Затем, когда пользователь нажимает кнопку, отмеченную, например, «Просмотр», сделать это:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if([[alertView buttonTitleAtIndex:buttonIndex] isEqualToString:@"View"])
{
// take the user to a specific view
} else { // handle other cases if you have any
}
}
Во-вторых, как обработать UILocalNotification
, который запускает запуск приложения.
Apple Docs на UILocalNotification
состояние:
Если уведомление является предупреждением и пользователь нажимает кнопку действия (или, если устройство заблокировано, перетаскивает ползунок действия), приложение запускается. В приложении: didFinishLaunchingWithOptions: метод делегат приложения может получить объект UILocalNotification из словаря переданных опций с помощью ключа UIApplicationLaunchOptionsLocalNotificationKey. Делегат может проверить свойства уведомления и, если уведомление включает в себя пользовательские данные в своем словаре userInfo, он может получить доступ к этим данным и обработать их соответствующим образом.
С другой стороны, если локальное уведомление обозначает только значок приложения, а пользователь в ответ запускает приложение, вызывается метод application: didFinishLaunchingWithOptions:, но объект UILocalNotification не включается в словарь параметров.
Вам нужно написать код для обработки этого случая запуска в классе делегата приложения, в методе application:didFinishLaunchingWithOptions:
.
Если вы получили UILocalNotification
во время работы приложения, Apple Docs сообщит:
Если приложение является основным и видимым, когда система доставляет уведомление, предупреждение не отображается, значок не помечается значком и звук не воспроизводится. Однако приложение: didReceiveLocalNotification: вызывается, если его реализует делегат приложения. Экземпляр UILocalNotification передается в этот метод, и делегат может проверить его свойства или получить доступ к любым пользовательским данным из словаря userInfo.
РЕДАКТИРОВАТЬ: Чтобы сразу перейти к конкретному представлению пользователя, вы можете вручную вставить что-то в стек UINavigationController
(если ваше приложение обычно работает с контроллерами навигации, оно имеет смысл сделать это), или представить модальный контроллер вида . Я связал там с руководствами для обоих.