Я отправляю Local Notification
каждый день в одно и то же время.Не отправляйте ежедневное местное уведомление, если приложение уже открыто
Мне было интересно, если бы был способ не отправлять уведомление, если пользователь уже открыл приложение в тот день?
Вот код, я использую, чтобы проверить, если уведомления допускается, а затем отправить уведомление:
- (void)viewDidLoad {
[super viewDidLoad];
UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
// before we create any new ones, cancel all existing notifications
[[UIApplication sharedApplication]cancelAllLocalNotifications];
if ([[[UIApplication sharedApplication] currentUserNotificationSettings] types] != UIUserNotificationTypeNone) {
UILocalNotification* localNotification = [[UILocalNotification alloc] init];
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *comp = [cal components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute) fromDate:[NSDate date]];
comp.hour = 19; // 19 = 7PM
comp.minute = 45; // 7:45 PM
comp.second = 01; // 7:45:01 PM
localNotification.fireDate = [cal dateFromComponents:comp];
localNotification.alertBody = @"Local Notification in iOS8";
localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.repeatInterval = NSCalendarUnitDay;
// this will schedule the notification to fire at the fire date
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
// this will fire the notification right away, it will still also fire at the date we set
[[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];
}
}
Edit: Вот код, который я пытаюсь реализовать метод предложения за ответ ниже с? Очевидно, я не получаю что-то здесь, хотя:/
- (void)isDateLowerThanToday {
NSDate *now = [NSDate date];
int daysToAdd = -1;
NSDate *newDate1 = [now dateByAddingTimeInterval:60*60*24*daysToAdd];
NSLog(@"NewDate1 = %@", newDate1);
}
Сладкого Я собираюсь попробовать, что имеет смысл! – SRMR
Является '[self sendNotification];' заполнителем для моего кода, который у меня уже есть, который отправляет уведомление? – SRMR
Я знаю, что я должен реализовать 'isDateLowerThanToday', но является ли код внутри этого метода, находящего дату? Думаю, мне сложно понять, как это сделать? Можете ли вы помочь мне на этом быстро? Благодаря! – SRMR