【问题标题】:UILocal Notification not fire on schedule date and time when i set past date notification当我设置过去的日期通知时,UILocal 通知不会按计划日期和时间触发
【发布时间】:2014-01-28 13:17:23
【问题描述】:

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

我能够根据我的计划日期来安排 UINotification。而且当用户安排过去的日期通知时,我的第二个安排通知不会被触发。在 secound 之后,其他人射击完美,但 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 年 1 月 28 日 19:20,我的第三个通知会定期触发。每次我将过去的日期添加为日程表时,都会发生这种情况。

以下是我用来安排通知的日程通知代码:

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: 处理通知的方法:

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];

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

【问题讨论】:

    标签: ios uilocalnotification


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复,但我必须向用户显示警报,然后怎么可能。
    • 你不知道过去的事情。如果您想显示诸如“嘿,您的会议已过期”之类的内容,则不要为此使用 UILocalNotification。您需要在应用午餐后在应用中进行逻辑/计算,并为其显示弹出警报。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多