0

我通过在按钮操作设置警报上调用以下方法来根据 UISWitch 位置设置 UILocalNotification。

- (void)scheduleNotificationWithInterval:(int)minutesBefore {

    NSDateFormatter* theDateFormatter = [[NSDateFormatter alloc] init];
    [theDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
    [theDateFormatter setDateFormat:@"EEEE"];
    NSString *currentDay=  [theDateFormatter stringFromDate:combo2.datePick.date];

    [[UIApplication sharedApplication] cancelAllLocalNotifications];

    UILocalNotification *localNotif = [[UILocalNotification alloc] init];
    if (localNotif == nil)
        return;
    localNotif.fireDate = [combo2.datePick.date dateByAddingTimeInterval:-30];
    localNotif.timeZone = [NSTimeZone defaultTimeZone];
    localNotif.repeatInterval=NSCalendarCalendarUnit;
    localNotif.repeatInterval = NSDayCalendarUnit;

    if (iBOfSwitchAlarm.on) {

        if([combo1.selectedText isEqualToString:currentDay])
        {

            NSLog(@"In DayCheck");
            localNotif.alertBody = @"Alarm Test";
            localNotif.alertAction = @"Ok";
            localNotif.soundName = UILocalNotificationDefaultSoundName;

            NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"THere Message for Alarm" forKey:@"Message"];
            localNotif.userInfo = infoDict;

            [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
        }
    }else{
        NSLog(@"SwOff");
    }
}

我在 AppDelegate 中编写了以下代码。在这里,我还检查了开关位置。

ViewController *obj =[[ViewController alloc]init];

    NSString *itemName = [notif.userInfo objectForKey:@"Message"];

    if (obj.iBOfSwitchAlarm.on) {
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Alarm Title" message:itemName delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:@"Continue", nil];
        alertView.tag = 1111;
        [alertView show];

        app.applicationIconBadgeNumber = notif.applicationIconBadgeNumber-1;
    }else{
       NSLog(@"SwitchOff");
    }

现在我的问题是当我根据时间设置通知时。它正在准时戒备。但是在我关闭和再次打开之间时,它没有得到警报。有任何方法可以根据开关位置进行 On 和 Off 通知。如果有人知道,请帮助我。提前致谢。

4

2 回答 2

4

要关闭您可以使用[[UIApplication sharedApplication] cancelAllLocalNotifications];或特定的通知[[UIApplication sharedApplication] cancelLocalNotification:<#(UILocalNotification *)#>]; ,然后您将不得不像这样重新安排您的通知

[[MKLocalNotificationsScheduler sharedInstance] scheduleNotificationOn:[[NSDate Date] addTimeInterval:60*60*24*1]
                                                                  text:@"Hi this is notification"
                                                                action:@"View"
                                                                 sound:@"Raising_Sound.mp3"
                                                           launchImage:nil
                                                               andInfo:nil];

就我而言,我将在一天后重新安排

于 2012-10-24T06:52:46.880 回答
1

如果一次只能有一个UILocalNotification,我会将其声明为变量,以便您可以随意访问它。

如果您存储您的UILocalNotification,您可以使用组合-cancelLocalNotification:将其关闭-scheduleLocalNotification:重新打开,同时保持其属性不变。

于 2012-06-09T07:45:32.670 回答