我在appdelegate中进行后台提取的代码从未完全运行。我打开了后台提取选项并更新了plist。iOS:为什么抓取背景函数从未完全执行?
我按调试触发代码>模拟背景抓取
这是代码
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
User.getNotifications(User.getUserDetails()["id"].string!, callback: {(notifications) in
//update notification badge count
notificationBadgeCount = X
})
}
'User.getNotifications' 看起来像这样
getNotifications(id: String, callback...){
alamofire.request(.GET....){ jsonResponse in
//GETS HERE
callback(jsonResponse)
}
}
当触发模拟背景获取,alamofire GET请求被发送并且数据被返回(我已经检查了服务器并且发送了呼叫),但是,该应用似乎暂停在ge中的(// GETS HERE) t通知调用,所以剩下的代码在后台获取(//更新通知标志计数)永远不会运行。
该代码似乎超时。我应该得到30秒,但它似乎超过5秒或什么东西。
任何想法为什么这段代码没有执行?
注意:如果我手动重新打开应用程序,则执行其余代码。
你没有对你的'completionHandler'做任何事情。 – jtbandes