当我设置过去日期通知时,UILocalNotification不会按计划日期和时间触发

时间:2014-01-28 13:17:24

标签: ios uilocalnotification

我正在使用UILocalNotification。我的应用程序将为用户提供设置,以便在我的应用程序中为任何会议和药物设置提醒。

我可以根据我的日程安排日程安排UINotification。并且当用户将安排过去的日期通知时,我的secound日程安排通知不会被触发。在其他人发射完美之后,但是没有射击。

以下是我的通知流程:

  1. 我创建了3个会议时间表,其中一个时间已超过我当前时间2014-01-28 18:00我目前的设备时间是2014-01-28 19:00。现在我正在制定另一个时间表,时间是2014-01-28 19:10。另一个时间表日期和时间是2014-01-28 19:20。

  2. 使用上述日程安排日期时间参考我的第一个过去日期的通知是在计划创建后触发的。

  3. 当我的设备当前时间到了2014-01-28 19:10。我在考虑通知。但是它起火了。

  4. 在2014-01-28 19:20,我的第3次通知会定期发生。当我将过去的日期添加为时间表时,每次都会发生这种情况。

  5. 以下是我用于安排通知的日程安排通知代码:

    UILocalNotification *localNotification = [[UILocalNotification alloc] init];
    localNotification.fireDate = fireDate;
    localNotification.timeZone = [NSTimeZone defaultTimeZone];
    localNotification.alertBody = alertText;
    localNotification.alertAction = alertAction;
    localNotification.soundName = UILocalNotificationDefaultSoundName;
    localNotification.alertLaunchImage = launchImage;
    localNotification.applicationIconBadgeNumber = 1;
    localNotification.userInfo = userInfo;
    
     [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
     [[UIApplication sharedApplication]registerForRemoteNotificationTypes:
             UIRemoteNotificationTypeBadge |
             UIRemoteNotificationTypeAlert |
             UIRemoteNotificationTypeSound];
    

    以下是我的idReceiveLocalNotification:hendle通知的方法:

    if([UIApplication sharedApplication].applicationIconBadgeNumber == 0) {
            [[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
        }else{
            [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
        }
    

    此时当我收到通知时,我会调用MkLocalNotificationScheduler类来显示警告,其代码如下:

     UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Reminder"
                                                             message:[thisNotification alertBody]
                                                            delegate:self
                                                   cancelButtonTitle:@"NO"
                                                   otherButtonTitles:@"YES",nil] autorelease];
            alert.tag = 1;
            [alert performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
    

    请帮助我如何处理所有日程安排通知天气已过去的日期或日期。

1 个答案:

答案 0 :(得分:2)

不要为过去的时间创建UILocalNotification。您看到的行为是典型的UILocalNotification。它会立即触发过去的事件。因此,在您的代码中检查时间是否已过,如果是,则不要创建UILocalNotification。 (也是无意义地创建过去时间的通知)

仅在当前时间的未来时间内创建新的UILocalNotification。