Можно ли обновить локальное уведомление в iPhone

Я добавил локальное уведомление программно, как показано ниже:

UILocalNotification *eventLocalNotification=[[UILocalNotification alloc]init];
eventLocalNotification.fireDate=myDate;
eventLocalNotification.timeZone=[NSTimeZone defaultTimeZone];
eventLocalNotification.alertBody=@"My notification";
eventLocalNotification.soundName=UILocalNotificationDefaultSoundName;

Могу ли я изменить firingDate, timeZone, alertBody или любое другое свойство?

2 ответа

После долгих поисков в интернете у меня появилась вещь, которую мы не можем edit UILocal Уведомление после добавления. Но уверен, что есть другой способ, который я нашел.

  1. Получить все локальные уведомления вашего устройства.
  2. Поиск соответствующего локального уведомления
  3. Отменить это уведомление
  4. Создать новый

Ниже приведен способ добавления уведомления.

-(void)setLocalNotification
{
    UILocalNotification *eventLocalNotification =   [[UILocalNotification alloc]init];

    eventLocalNotification.fireDate     =   //set firing Date of NSDate type
    eventLocalNotification.timeZone     =   [NSTimeZone defaultTimeZone];
    eventLocalNotification.alertBody    =   [NSString stringWithFormat:@"An event has arrived\n Event Name: %@",notificationName.Text];
    eventLocalNotification.soundName    =   UILocalNotificationDefaultSoundName;

    if ([repeat isEqualToString:@"Once"]){

        eventLocalNotification.repeatInterval   =   0;

    }else if ([repeat isEqualToString:@"Daily"]){

        eventLocalNotification.repeatInterval   =   NSDayCalendarUnit;

    }else if ([repeat isEqualToString:@"Weekly"]){

        eventLocalNotification.repeatInterval   =   NSWeekCalendarUnit;

    }else if ([repeat isEqualToString:@"Monthly"]){

        eventLocalNotification.repeatInterval   =   NSMonthCalendarUnit;

    }else if ([repeat isEqualToString:@"Yearly"]){

        eventLocalNotification.repeatInterval   =   NSYearCalendarUnit;
    }

    NSDictionary *info  =   [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"%@",notificationName.text] forKey:@"name"];
    eventLocalNotification.userInfo =   info;
    NSLog(@"notification userInfo gets name : %@",[info objectForKey:@"name"]);
    [[UIApplication sharedApplication] scheduleLocalNotification:eventLocalNotification];
    NSLog(@"Notification created");
}

Ниже приведена функция отмены уведомления

-(void)cancelLocalNotification
{
    UILocalNotification * notificationToCancel=nil;
    for(UILocalNotification * aNotif in [[UIApplication sharedApplication] scheduledLocalNotifications])
    {
        NSLog(@"%@",[aNotif.userInfo objectForKey:@"name"]);
        if([[aNotif.userInfo objectForKey:@"name"] isEqualToString:notificationName ])
        {
            notificationToCancel    =   aNotif;
            [[UIApplication sharedApplication] cancelLocalNotification:notificationToCancel];
            NSLog(@"Notification Cancelled");
            break;
        }
    }

}

Надеюсь, вы получите от этого пользу. Удачи

Чтобы установить дату и время, вам придется использовать NSDateComponents и дважды создавать экземпляр NSDate. Один на текущую дату, а другой будет желаемой датой. Чем установить желаемый экземпляр NSDate для fireDate объекта UILocalNotification.

eventLocalNotification.fireDate = desiredDate;

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

eventLocalNotification.timeZone = [NSTimeZone defaultTimeZone];

Тело оповещения может быть чем угодно, просто поместите свой контекст.

eventLocalNotification.alertBody = @"DESIRED CONTEXT";
Другие вопросы по тегам