Можно ли обновить локальное уведомление в 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 Уведомление после добавления. Но уверен, что есть другой способ, который я нашел.
- Получить все локальные уведомления вашего устройства.
- Поиск соответствующего локального уведомления
- Отменить это уведомление
- Создать новый
Ниже приведен способ добавления уведомления.
-(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";