快速背景提取无效

时间:2016-07-29 12:21:52

标签: ios swift service background notifications

我的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
}

我在这里遇到两个问题:

  1. 第一个问题是,除非我点击" Debug>模拟后台提取",否则永远不会执行后台提取。我无限期地等待它,它从未被单独调用过。

  2. 第二个问题是,当我的应用程序仍处于打开状态时,当我点击模拟背景提取时,模拟器存在应用程序然后执行后台提取,即使应用程序是后仍然可以使用后台提取跑步而不关闭它。

  3. 我是否遗漏了与后台获取相关的任何代码?或者有任何错误的代码?这是我编写的唯一直接与后台提取相关的代码,而不是向功能添加后台提取。

2 个答案:

答案 0 :(得分:1)

Apple提供了一种算法,根据您自己对应用的使用情况,定义后台提取应触发的频率。如果你经常使用它,那么它会尽可能频繁地获取,但是如果你每天下午4点使用,那么后台提取应该在之前触发,所以你的数据在启动时会更新。

检查详细答案:Background fetch stops working after about 10 to 14 hours

答案 1 :(得分:0)

iPhone设置中有一个选项可以关闭后台应用程序刷新,它负责调用后台提取,并且还可以全局关闭所有应用程序。

检查设置>一般>后台应用刷新

Background App Refresh Settings