在iOS中,我想安排通知,以便在关闭应用程序48小时后通知用户。除了48小时外,它必须在晚上7点出现。当天。
例如: 当前时间是下午5点,用户关闭应用程序。然后通知应该在下午5点后2天后弹出,但我希望它延迟到晚上7点。为了达到上述标准,我应该如何编写代码?
答案 0 :(得分:1)
在- (void)applicationWillResignActive:(UIApplication *)application
方法中,
UILocalNotification
并设置所需的参数(触发和提醒文本的时间)。根据评论进行修改:
如果我理解你,这应该是你想要的。它计算48小时后的时间,并手动将开火时间设置为晚上7点。如果计算的时间大于晚上7点,它将在第二天被解雇。
NSDate *currentDate = [NSDate date];
NSDate *futureTime = [currentDate dateByAddingTimeInterval:60*60*48];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSTimeZone *timeZone = [NSTimeZone systemTimeZone];
[calendar setTimeZone:timeZone];
NSDateComponents *components = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit fromDate:futureTime];
if ([components hour] >= 19) { // make it the next day
[components setDay:[components day] + 1 ];
}
[components setHour:19];
[components setMinute:00];
NSDate *alertTime = [calendar dateFromComponents:components];
答案 1 :(得分:0)
NSDateFormatter *DateFormatter=[[NSDateFormatter alloc] init];
[DateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date =[NSDate dateWithTimeInterval:60*60*48 sinceDate:[NSDate date]];
NSString *dateString=[DateFormatter stringFromDate:date];
NSInteger timeLater=[dateString substringWithRange:NSMakeRange(11, 2)].integerValue;
if(timeLater<19)
date =[date dateByAddingTimeInterval:(19-timeLater)*60*60];
dateString=[DateFormatter stringFromDate:date];
NSLog(@"%@",dateString);
notification.fireDate =date.