Отмена UILocalNotification

У меня есть проблема с моим UILocalNotification.

Я планирую уведомление со своим методом.

- (void) sendNewNoteLocalReminder:(NSDate *)date  alrt:(NSString *)title
{
    // some code ...
    UILocalNotification *localNotif = [[UILocalNotification alloc] init]; 

    if (localNotif == nil)  
        return;

    localNotif.fireDate = itemDate; 
    localNotif.timeZone = [NSTimeZone defaultTimeZone];
    localNotif.alertAction = NSLocalizedString(@"View Details", nil); 
    localNotif.alertBody = title;
    localNotif.soundName = UILocalNotificationDefaultSoundName; 
    localNotif.applicationIconBadgeNumber = 0;

    NSDictionary *infoDict = [NSDictionary dictionaryWithObject:stringID forKey:@"id"]; 
    localNotif.userInfo = infoDict; 

    [[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; 
    [localNotif release];
}

Его прекрасная работа и я правильно получаю уведомление. Проблема состоит в том, когда я должен отменить уведомление. Я использую этот метод.

- (void) deleteNewNoteLocalReminder:(NSString*) reminderID noteIDe:(NSInteger)noteIDE
{
    [[UIApplication sharedApplication] cancelLocalNotification:(UILocalNotification *)notification ????  
}

Я не уверен, что сделать здесь, но мои вопросы:

Как я знаю, который UILocalNotification возражают, что я должен удалить?
Существует ли способ перечислить все уведомления?

Единственной вещью, которую я имею, является идентификатор, которого напоминания я должен удалить.
Я думал собирающийся сохранить объект UILocalNotification в моем "Примечании", возражают и получают его тот путь, и когда я сохраняющий к моей базе данных SQLite сериализирую объект, и так далее... там более умный путь?

48
задан P.J.Radadiya 24 January 2017 в 01:18
поделиться

3 ответа

Вы можете получить список всех запланированных уведомлений из scheduleLocalNotifications или отменить их все:

  [[UIApplication sharedApplication] cancelAllLocalNotifications];
57
ответ дан 7 November 2019 в 12:03
поделиться

Мое решение - архивировать объект UILocalNotification, который вы запланировали с помощью NSKeyedArchiver, и хранить его где-нибудь (предпочтительно в plist). А затем, когда вы захотите, вы сможете отменить уведомление, найти в plist нужные данные и использовать NSKeyedUnarchiver для разархивации. Код довольно прост:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:notice];

и

UILocalNotification *notice = [NSKeyedUnarchiver unarchiveObjectWithData:data];
13
ответ дан 7 November 2019 в 12:03
поделиться

Мое решение - это вы, когда вы создаете UILocalNotification , тогда вы создаете один NSMutableDictionary и сохраняете это уведомление как значение ключа в качестве вашего идентификатора и помещаете это NSMutableDictionay на ваш NSUserDefaults

. Поэтому, когда вы хотите отменить какое-либо конкретное локальное уведомление в это время, вы пишете [словарь valueforkey @ "KEY"] где в качестве ключа вы передаете свой идентификатор, чтобы получить это конкретное локальное уведомление и передать его на

 [[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; 
6
ответ дан 7 November 2019 в 12:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: