1

すでにスケジュールされている通知をキャンセルしようとしていますが、通知が呼び出されていますが、通知をキャンセルしようとしてもキャンセルされません。

スケジュールされた通知が 1 つしかない場合、NSArray 通知にはいくつかのランダムな値が含まれます。誰でも私を助けることができます。特定の bookID の通知をキャンセルしたいです。

更新

 -(UILocalNotification *)scheduleNotification :(int)remedyID
        {
           NSString *descriptionBody;

           NSInteger frequency;

          UILocalNotification *notif = [[UILocalNotification alloc] init];

            NSLog(@"%d",remedyID);

            descriptionBody =[[self remedyDetailsForRemedyID:remedyID] objectForKey:@"RemedyTxtDic"];
            frequency = [[[self remedyDetailsForRemedyID:remedyID] objectForKey:@"RemedyFrequency"]intValue];

            NSArray *notificationFireDates = [self fireDatesForFrequency:frequency];

            for (NSDate *fireDate in notificationFireDates)
            {
                    notif.timeZone = [NSTimeZone defaultTimeZone];


                    notif.repeatInterval = NSDayCalendarUnit;
                    notif.alertBody = [NSString stringWithString:descriptionBody];
                    notif.alertAction = @"Show me";
                    notif.soundName = UILocalNotificationDefaultSoundName;

                    notif.applicationIconBadgeNumber = 1;

                    notif.fireDate = fireDate;

                    NSDictionary *userDict = [NSDictionary dictionaryWithObjectsAndKeys:notif.alertBody,                                         @"kRemindMeNotificationDataKey",  [NSNumber numberWithInt:remedyID],kRemindMeNotificationRemedyIDKey,
                                              nil];

                    notif.userInfo = userDict;

                    [[UIApplication sharedApplication] scheduleLocalNotification:notif];
                }

                return notif;

    }



- (void)cancelNotification:(int)bookID
{
    int notificationBook=0;

        NSArray *notifications = [[UIApplication sharedApplication] scheduledLocalNotifications];

    for (UILocalNotification *notification in notifications)
    {
        int notifBookId = [[notification.userInfo objectForKey:kRemindMeNotificationBookIDKey] intValue];


        for (int i=0; i<[bookArray count]; i++)
        {
            notificationBook =[[[remedyArray objectAtIndex:i] objectForKey:@"BookID"] intValue];
        }

        NSLog(@"%d",[[notification.userInfo objectForKey:kRemindMeNotificationBookIDKey]intValue]);

        NSLog(@"%d",notifBookId);

        if (bookId == notifBookId)
        {
            [[UIApplication sharedApplication] cancelLocalNotification:notification];
        }
    }

}
4

2 に答える 2