IOS -使后台取回只发生一天一次(不需要特定的时间)



我使用后台取回调度任务。如果我理解正确的话,后台取回在一天中会发生很多次。我需要把它限制在一天中只发生一次。一切设置正确,现在我已经设置(作为一个临时值)

 UIApplication.sharedApplication().setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

有什么建议吗?

在后台获取处理程序中,检查最后一次执行的日期,如果该时间是昨天,则执行新的获取并存储下一次检查的时间。确定日期是否为昨天需要一点工作:

// assumes oldDate is the last time it was actually fetched
let now = NSDate()
let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let components = cal?.components(.CalendarUnitDay, fromDate:oldDate , toDate: now, options: .WrapComponents)
let days = components?.day
if days? > 0 {
    doActualFetch()
    self.oldDate = now
}

你可能比我更想打开你的可选选项,但这应该能让你动起来。

你的处理程序仍然会每天被调用多次,但是你可以使用它来跳过实际的获取。

相关内容

  • 没有找到相关文章

最新更新