Iphone uilocalnotification未在准确时间触发

Iphone uilocalnotification未在准确时间触发,iphone,objective-c,nsdate,uilocalnotification,Iphone,Objective C,Nsdate,Uilocalnotification,我想在我的应用程序中实现uilocalnotification。但问题是它没有在准确的时间开火。它在给定的发射时间30-40秒后发射。 是否有我遗漏的东西,或者这是UILocalNotification中的常见想法 感谢UILocalNotification是为将来发生的事情而设计的,因此30秒的错误就可以了(也就是说,如果我在15:00开会,那么在15:00:30告诉我不会有问题:) 如果你想获得更高的准确性,你需要保持应用程序运行并使用NSTimer。我知道这是一个老问题,但我刚刚解决了这个

我想在我的应用程序中实现
uilocalnotification
。但问题是它没有在准确的时间开火。它在给定的发射时间30-40秒后发射。 是否有我遗漏的东西,或者这是
UILocalNotification
中的常见想法


感谢

UILocalNotification是为将来发生的事情而设计的,因此30秒的错误就可以了(也就是说,如果我在15:00开会,那么在15:00:30告诉我不会有问题:)


如果你想获得更高的准确性,你需要保持应用程序运行并使用NSTimer。

我知道这是一个老问题,但我刚刚解决了这个问题,你可以使用
dateByAddingTimeInterval:
方法

notif.fireDate = [[datePicker date] dateByAddingTimeInterval:-30];

您可以使用
NSDateComponents
设置
fireDate
,在其中可以设置fireDate的秒数。当我将它设置为0时不起作用,但如果我将它设置为1秒,它就会起作用。与30-40秒相比,迟到1秒是可以的

NSCalendar *cal = [NSCalendar currentCalendar];
    NSDateComponents *dateComps = [cal components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay |NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond   fromDate:fireDate];
    [dateComps setSecond:1];
    [dateComps setNanosecond:00];
    NSDate *newDate = [cal dateFromComponents:dateComps];
    fireDate = newDate;

你用它干什么?我猜UILocalNotification并没有设计得那么准确?只是出于兴趣,你是如何测量这个错误的?你确定吗。因为如果我的客户问我延期的事,那么我必须弄清楚这一点,否则我的脖子就在他手里了。因此,如果你能给我提供一些相同的链接,那么ut将很有帮助,提前感谢。我在任何地方都找不到明确的说明,但是因为这个系统设计用于使用来自外部来源的通知,我假设他们不太关心准确性。但是,如果问题那么严重,只需提前30秒安排即可;)那是我最初的计划。我想我无论如何都得这么做,所以谢谢。当地通知的问题是他们没有在通知的确切时间开火。如果您使用上述代码,则本地通知将在您想要的点火时间前1分钟触发。所以它可能看起来是在3:50开火,但实际上在你的情况下是3:49。这会让你觉得通知是在准确的时间发出的,但它不是。在某些情况下,如果用户希望将通知设置为从现在开始的1分钟,它将不会启动。这假设偏移量始终为30秒,这是一个黑客攻击,但如果始终为30秒,它应该可以工作。