Как открыть представление предупреждений при срабатывании уведомления в iOS?

Я сделал один пример приложения, которое запускает локальное уведомление.

Когда срабатывает уведомление, оно всегда показывает баннер в области уведомлений на устройстве, который я показал на изображении. введите описание изображения здесь

Но мне нужно оповещение, а не это, и я хочу выполнить действие на основе выбранного параметра из этого оповещения.

Код для запуска локального уведомления приведен ниже.

-(IBAction)setNotification:(id)sender{

UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
{
    return;
}

localNotif.timeZone = [NSTimeZone defaultTimeZone];

// Get the year, month, day from the date
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSTimeZoneCalendarUnit|NSSecondCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit fromDate:[NSDate date]];

// Set the second to be zero
components.minute = components.minute + 1;
components.second = 0;

// Create the date
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:components];
NSLog(@"Fire Date :: %@",date);
localNotif.fireDate = date;

localNotif.alertBody = [NSString stringWithFormat:@"First Alarm"];


localNotif.alertAction =@"Ok";

localNotif.soundName=@"Alarm_1.mp3";

localNotif.applicationIconBadgeNumber = 1;


localNotif.alertAction = @"Application name";
localNotif.HasAction = true;

// Schedule the notification
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];

}

Может ли любое тело, пожалуйста, скажите мне, есть ли какая-либо ошибка.

Заранее спасибо.


person Jayeshkumar Sojitra    schedule 24.10.2013    source источник
comment
так что ждите. вы хотите принять меры по уведомлению, представив предупреждение на главном экране?   -  person Legolas    schedule 24.10.2013
comment
Да, я хочу принять меры.   -  person Jayeshkumar Sojitra    schedule 24.10.2013
comment
вы хотите, чтобы уведомление выглядело как UIAlertView?   -  person Legolas    schedule 24.10.2013
comment
Да, я хочу, чтобы это было изображение со следующего URL-адреса. developer.apple.com/library/ios/ документация/   -  person Jayeshkumar Sojitra    schedule 24.10.2013
comment
Можно ли сделать так же?   -  person Jayeshkumar Sojitra    schedule 24.10.2013


Ответы (3)


Вот быстрый и короткий ответ. Тебе этого не сделать. В документации Apple указано только didReceiveLocalNotification. Способ отображения уведомления не зависит от разработчика. Пользователь сам выберет, как он хочет видеть уведомление, используя НАСТРОЙКИ.

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

person Legolas    schedule 24.10.2013

Измените тип уведомления в Настройках -> Центр уведомлений -> Ваше приложение -> Оповещение:

введите здесь описание изображения

Первоначально из Quinn "The Eskimo!", как процитировано IBG:

«Это зависит от того, что вы имеете в виду. У вас есть некоторый контроль над тем, как отображается уведомление, в зависимости от того, как вы устанавливаете свойства UILocalNotification (такие вещи, как alertBody, soundName и т. д.). Однако, если вы спрашиваете о том, как эти свойства интерпретируются (вещи, которые пользователь может настроить в разделе «Настройки»> «Уведомления»), это пользовательские настройки, которые не раскрываются через какой-либо API».

person user1673099    schedule 24.10.2013
comment
Да, это один из способов сделать это, но я не хочу этого вручную, я хочу это программно, потому что мы хотим, чтобы это было по умолчанию, когда мы устанавливаем приложение, вы знаете какой-нибудь способ выйти из этого? - person Jayeshkumar Sojitra; 24.10.2013
comment
@JayeshSojitra, вы не можете сделать это программно. Смотрите мой обновленный ответ. - person user1673099; 24.10.2013

Вы можете получить уведомление следующим образом:

  • (void) приложение: (UIApplication *) приложение didReceiveRemoteNotification: (NSDictionary *) userInfo

напишите этот код для получения данных из userInfo:

[[userInfo objectForKey:@"aps"] objectForKey:@"price"]];

используйте userInfo Dict, чтобы получить значение уведомления, и после этого вы можете использовать эти данные для оповещения.

person Deep Gami    schedule 24.10.2013
comment
Это локальное уведомление, а не удаленное уведомление. - person Jayeshkumar Sojitra; 24.10.2013