这是我在SO中提出的第一个问题,对不起,如果我没有遵循任何指导原则。
我在我的旧应用程序中实现ios7后台提取。但唯一的问题是我必须在xcode中模拟位置。 我已经在http://www.objc.io/issue-5/multitasking.html中实现了代码。
我的问题是 - 1)这会在设备上定期调用(比方说30秒)吗? 2)我是否需要模拟后台提取以便在设备上进行测试?
答案 0 :(得分:4)
您应该使用模拟后台提取功能来验证在后台提取时执行的逻辑。即提取任何代码。
您必须设置最小获取间隔。通常情况下,您会将其设置为UIApplicationBackgroundFetchIntervalMinimum
,以便在允许的情况下经常:
您可以这样设置:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
return YES;
}
默认值为UIApplicationBackgroundFetchIntervalNever,因此如果您未能在启动时设置该值,您的应用将永远不会被唤醒以执行后台提取。您提供的值是唤醒之间的最小秒数;但请注意,该值仅仅是建议性的 - 您的应用程序可能会执行更少或更频繁的提取。
设置UIApplicationBackgroundFetchIntervalMinimum将确保尽可能定期调用您的应用程序,但实际上系统将最终决定。
答案 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