如何设置本地通知以每 48 小时通知用户一次?
Posted
技术标签:
【中文标题】如何设置本地通知以每 48 小时通知用户一次?【英文标题】:How can I set a local notification to notify user after every 48 hours? 【发布时间】:2014-01-25 07:22:18 【问题描述】:在 ios 中,我想安排一个通知,在用户关闭应用程序后 48 小时后通知他。除了 48 小时,它还必须在晚上 7 点显示。当天。
例如: 当前时间是下午 5 点,用户关闭应用。然后通知应该在 2 天后下午 5 点弹出,但我希望它延迟到晚上 7 点。为了达到上述标准,我应该如何编写代码?
【问题讨论】:
你知道要延迟多少小时吗?如果是,那么您可以在安排通知时添加该时间延迟。 【参考方案1】:在- (void)applicationWillResignActive:(UIApplication *)application
方法中,
-
计算要显示的实际时间,即 48 小时 + 小时到当天晚上 7 点。
取消任何当前预定的通知
创建一个
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];
【讨论】:
第一点是我卡住的地方。我知道如何获得 48 小时,但直到晚上 7 点我才知道时差有多大【参考方案2】: 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.
【讨论】:
我想知道如何计算“差异”?以上是关于如何设置本地通知以每 48 小时通知用户一次?的主要内容,如果未能解决你的问题,请参考以下文章