0

我制作了一个具有自定义通知的应用程序,但无论我做什么都无法删除它们。

[[UIApplication sharedApplication] cancelLocalNotification:[idkey objectAtIndex:indexPath.row]];

那是我用来删除的代码;如果我使用所有它的工作。是正确的idkey值,@"3"在这种情况下,它是字符串中的数字。

这是保存功能的一部分:

-(void) addNewNotificationWithKey:(NSString*)key {

    NSLog(@"%@",key);

    Class cls = NSClassFromString(@"UILocalNotification");
    if (cls != nil) {

        UILocalNotification *notif = [[cls alloc] init];
        notif.fireDate = [tempFormatter dateFromString:datuminura];
        notif.timeZone = [NSTimeZone defaultTimeZone];

        notif.alertBody = description1;
        notif.alertAction = @"Open";
        notif.soundName = UILocalNotificationDefaultSoundName;

这样对吗?

4

1 回答 1

1

检查您要删除的通知并使用以下代码将其取消。

UIApplication *app = [UIApplication sharedApplication];
NSArray *eventArray = [app scheduledLocalNotifications];
for (int i=0; i<[eventArray count]; i++)
{
    UILocalNotification* oneEvent = [eventArray objectAtIndex:i];
    NSDictionary *userInfoCurrent = oneEvent.userInfo;
    NSString *uid=[NSString stringWithFormat:@"%@",[userInfoCurrent valueForKey:@"uid"]];
    if ([uid isEqualToString:uidtodelete])
    {
        //Cancelling local notification
        [app cancelLocalNotification:oneEvent];
        break;
    }
}

[编辑]

将以下行添加到您的本地通知中,以使 [uid isEqualToString:uidtodelete] 条件起作用。

NSDictionary *infoDict = [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"%d",[idkey objectAtIndex:indexPath.row]] forKey:@"uid"]; 
notif.userInfo = infoDict; 
于 2012-10-19T16:02:20.853 回答