背景提取一次调用ios7

时间:2014-02-27 07:31:16

标签: ios objective-c ios7 background-process multitasking

这是我在SO中提出的第一个问题,对不起,如果我没有遵循任何指导原则。

我在我的旧应用程序中实现ios7后台提取。但唯一的问题是我必须在xcode中模拟位置。 我已经在http://www.objc.io/issue-5/multitasking.html中实现了代码。

我的问题是 - 1)这会在设备上定期调用(比方说30秒)吗? 2)我是否需要模拟后台提取以便在设备上进行测试?

2 个答案:

答案 0 :(得分:4)

您应该使用模拟后台提取功能来验证在后台提取时执行的逻辑。即提取任何代码。

您必须设置最小获取间隔。通常情况下,您会将其设置为UIApplicationBackgroundFetchIntervalMinimum,以便在允许的情况下经常

您可以这样设置:

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];

    return YES;
}

默认值为UIApplicationBackgroundFetchIntervalNever,因此如果您未能在启动时设置该值,您的应用将永远不会被唤醒以执行后台提取。您提供的值是唤醒之间的最小秒数;但请注意,该值仅仅是建议性的 - 您的应用程序可能会执行更少或更频繁的提取。

设置UIApplicationBackgroundFetchIntervalMinimum将确保尽可能定期调用您的应用程序,但实际上系统将最终决定。


source

答案 1 :(得分:1)

你可以在performFetchWithCompletionHandler中使用NSTimer:

    var time = NSTimer.scheduledTimerWithTimeInterval(callTime , target: self, selector: #selector(self.notific), userInfo: nil, repeats: true)

    completionHandler(.NewData)

并将其放入didFinishLaunchingWithOptions:

    application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

NSTimer将在您想要的每个callTime中调用您的func