ios后台任务定时器

Posted

技术标签:

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

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

非常感谢!

【问题讨论】:

如果在同一时间配置了时间表,则可能! :) NSTimer 在后台不起作用,只有当您的应用程序使用一种后台模式时,它才能在后台执行任何操作。您可以使用某种静默推送通知的后台刷新。 【参考方案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"];


希望对你有帮助。

【讨论】:

以上是关于ios后台任务定时器的主要内容,如果未能解决你的问题,请参考以下文章

如何让iOS设备上App定时执行后台任务(下)

如何让iOS设备上App定时执行后台任务(下)

iOS后台运行任务

如何让iOS设备上App定时执行后台任务(上)

如何让iOS设备上App定时执行后台任务(上)

iOS 保证定时器进入后台依然运行