如何设置本地通知,每48小时后通知用户?

时间:2014-01-25 07:22:19

标签: ios objective-c uilocalnotification nsnotificationcenter

在iOS中,我想安排通知,以便在关闭应用程序48小时后通知用户。除了48小时外,它必须在晚上7点出现。当天。

例如: 当前时间是下午5点,用户关闭应用程序。然后通知应该在下午5点后2天后弹出,但我希望它延迟到晚上7点。为了达到上述标准,我应该如何编写代码?

2 个答案:

答案 0 :(得分:1)

- (void)applicationWillResignActive:(UIApplication *)application方法中,

  1. 计算要显示的实际时间,即当天的48小时+小时至晚上7点。
  2. 取消任何当前的预定通知
  3. 创建UILocalNotification并设置所需的参数(触发和提醒文本的时间)。
  4. 根据评论进行修改:

    如果我理解你,这应该是你想要的。它计算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.