Просто разбейте его на 3 случая:
- Это до 7 вечера, а пользователь еще не ввел свои ежедневные данные еще
- Это до 7 вечераи пользователь ввел свои ежедневные данные
- Это уже после 7 вечера
1013 *
В случае 1 вы настроили уведомление на отключение в 19:00 сегодня , а затем повторяйте каждый день.
В случаях 2 и 3 вы устанавливаете уведомление, чтобы оно срабатывало в 7 вечера завтра , а затем повторялось каждый день.
Код для создания и планирования уведомления выглядит следующим образом:
UILocalNotification *dailyNotification = [[UILocalNotification alloc] init];
dailyNotification.fireDate = nextReminderTime; // set this to 7pm today or tomorrow
dailyNotification.timeZone = [NSTimeZone defaultTimeZone];
dailyNotification.repeatInterval = NSDayCalendarUnit;
dailyNotification.soundName = UILocalNotificationDefaultSoundName;
dailyNotification.alertBody = @"You need to enter data for today.";
Конечно, если вы настроили оповещение на 7 вечера сегодня, то пользователь откроет приложение и введет данные до 7 вечера,Уведомление на сегодня должно быть отменено.
В качестве альтернативы (это то, что я делал в аналогичной ситуации), вы можете отменить все уведомления с помощью [[UIApplication sharedApplication] cancelAllLocalNotifications];
и настроить их заново с нуля в зависимости от состояния приложения каждый раз, когда приложение собирается войти вфон (например, в UIApplication
applicationDidEnterBackground:
. Это проще, так как вам не нужно думать о том, какие уведомления вы настроили раньше.