uilocalnotification is not firing at exact time

2019-02-18 20:49发布

问题:

I want to implement uilocalnotification in my app. but the problem is that it is not firing at the exact time. it is firing after 30 - 40 secs from the given firing time. Is there something I am missing or this is a common think in UILocalNotification.

Thanks

回答1:

UILocalNotification is designed for things that are happening far in the future so an error of 30 seconds would be OK (i.e. if I had a meeting at 15:00 then telling me at 15:00:30 wouldn't be a problem :)

If you want more accuracy than that you will need to keep your app running and use an NSTimer.



回答2:

I know this is an old question, but I have just figure this out, you can use the dateByAddingTimeInterval : method.

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


回答3:

You can set fireDate by using NSDateComponents, in which you can set seconds for firedate. When I set it to 0 doesn't work, but it works if I set it to 1 seconds. 1 second late will be OK compared to 30-40 seconds.

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;