【问题标题】:ios background task timerios后台任务定时器
【发布时间】:2015-10-23 07:43:55
【问题描述】:

我正在设计一个应用程序,需要在特定时间以后台模式向服务器发送数据。所以我想知道: 应用程序是否可以在我安排后 24 小时执行一段代码(仅一次)?

非常感谢!

【问题讨论】:

  • 如果在同一时间配置了时间表,则可能! :)
  • NSTimer 在后台不起作用,只有当您的应用程序使用一种后台模式时,它才能在后台执行任何操作。您可以使用某种静默推送通知的后台刷新。

标签: ios objective-c background-task


【解决方案1】:

NSUserDefaults 中存储日期,然后再检查 24 小时 ..

  NSDate *date = [[NSUserDefaults standardUserDefaults] objectForKey:@"CONSCIENCE_START_DATE"];

if (!date) {

    // This is the 1st run of the app

    date = [NSDate date];

    [[NSUserDefaults standardUserDefaults] setObject:date forKey:@"CONSCIENCE_START_DATE"];

}

NSString *str = [NSString stringWithFormat:@"%@",date];

NSLog(@"  date string = %@",str);

NSTimeInterval secondsBetween = [[NSDate date] timeIntervalSinceDate:date]; // in seconds

int numberOfHours = secondsBetween / 3600; // convert in hours

NSLog(@"There are %d hours in between the two dates.", numberOfHours);

if (numberOfHours > 24) {

    // do your code here ...

    [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"CONSCIENCE_START_DATE"];

}

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2017-02-05
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    相关资源
    最近更新 更多