重置为每天设置的UILocationNotification开火日期

时间:2015-06-08 08:56:36

标签: ios uilocalnotification

我的应用程序中的一个功能允许使用最大值。用户每天3次 - 一旦他/她使用了3次,他们就不能再次使用它直到第二天。 我在我的应用中使用UILocationNotification,每天都会显示通知。如果用户打开我的应用程序,并且他当天没有使用这些功能,那么我会在当天下午4点准备启动通知。但现在我想要的是,当用户正在使用该应用程序时 - 如果他/她使用该功能3次,那么通知应该不会起火并且它应该在同一时间设置为第二天。

这就是我显示本地通知的方式。

- (void) fireNoteForEachDay {
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    UILocalNotification *notif = [[UILocalNotification alloc] init];
    NSCalendar *gregCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *dateComponents = [gregCalendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:[NSDate date]];
    [dateComponents setHour:16];
    [dateComponents setMinute:0];
    [dateComponents setSecond:0];
    [notif setFireDate:[gregCalendar dateFromComponents:dateComponents]];
    [notif setAlertBody:@"Come back to the app – to use '<function name>' !"];
    [notif setRepeatInterval:NSDayCalendarUnit];
    [notif setTimeZone:[NSTimeZone defaultTimeZone]];
    [[UIApplication sharedApplication] scheduleLocalNotification:notif];
}

如果我今天下午3点使用所有这三个功能 - 所以现在它应该在明天的下午4点重置。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

明天获取

NSDateComponents *tomorrowComponents = [NSDateComponents new];
tomorrowComponents.day = 1 ;
NSCalendar *gregCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *tomorrow = [gregCalendar dateByAddingComponents:tomorrowComponents toDate:[NSDate date] options:0];

为明天添加时间

NSDateComponents *tomorrowAtTimeComponent = [gregCalendar components:(NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:tomorrow];
tomorrowAtTimeComponent.hour = 16;
tomorrowAtTimeComponent.minute = 0;
NSDate *tomorrowAt4pm = [gregCalendar dateFromComponents:tomorrowAtTimeComponent];

重置注释

[[UIApplication sharedApplication] cancelAllLocalNotifications];
UILocalNotification *notif = [[UILocalNotification alloc] init];
[notif setFireDate:tomorrowAt4pm];
[notif setAlertBody:@"Come back to the app – to use '<function name>' !"];
[notif setRepeatInterval:NSDayCalendarUnit];
[notif setTimeZone:[NSTimeZone defaultTimeZone]];
[[UIApplication sharedApplication] scheduleLocalNotification:notif];