我的AppDelegate中有以下代码:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil))
application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
return true
}
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
completionHandler(UIBackgroundFetchResult.NewData)
getData()
}
func getData(){
// function that gets certain data from the server and notifies the
// user of the info fetched
}
我在这里遇到两个问题:
第一个问题是,除非我点击" Debug>模拟后台提取",否则永远不会执行后台提取。我无限期地等待它,它从未被单独调用过。
第二个问题是,当我的应用程序仍处于打开状态时,当我点击模拟背景提取时,模拟器存在应用程序然后执行后台提取,即使应用程序是后仍然可以使用后台提取跑步而不关闭它。
我是否遗漏了与后台获取相关的任何代码?或者有任何错误的代码?这是我编写的唯一直接与后台提取相关的代码,而不是向功能添加后台提取。
答案 0 :(得分:1)
Apple提供了一种算法,根据您自己对应用的使用情况,定义后台提取应触发的频率。如果你经常使用它,那么它会尽可能频繁地获取,但是如果你每天下午4点使用,那么后台提取应该在之前触发,所以你的数据在启动时会更新。
检查详细答案:Background fetch stops working after about 10 to 14 hours
答案 1 :(得分:0)
iPhone设置中有一个选项可以关闭后台应用程序刷新,它负责调用后台提取,并且还可以全局关闭所有应用程序。
检查设置>一般>后台应用刷新