How can I skip the first occurrence of a repeating UNCalendarNotificationTrigger?

2k views Asked by At

Say today is a Monday and it's 1 PM. I want to schedule a weekly local notification from my iOS app starting today at 2 PM. I'd do this:

NSDateComponents *components = [[[NSDateComponents alloc]init]autorelease];
components.weekday = 2;
components.hour = 14;
components.minute = 0;

UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:YES];
//then make a UNMutableNotificationContent and UNNotificationRequest and schedule it

But if I want to start it next Monday at 2 PM, how do I skip the first occurrence?

To ask the question another way, how do I schedule a repeating UNCalendarNotificationTrigger starting at some arbitrary time, instead of the first occurrence of the repeat interval?

1

There are 1 answers

0
Danny Bravo On

Thinking outside of the box here.

You could configure your server to deliver a silent push notification to your phone some time in the future (i.e: tomorrow early morning). When you receive the push notification in the background you can use this to setup your local calendar notification. This way you can effectively skip the first notification, or schedule them to start any time in the future.

Of course, you shouldn't rely exclusively on the APNS network, so you'll need to track state of the notifications via an API call when the app is foregrounded.