我正在构建一个应用程序,当应用程序在后台时,需要更新firebase数据库中的值。
我正在使用静默通知来触发didReceiveRemoteNotification
方法。
每5分钟收到一次推送通知。
这是我的代码:
func updateValuesWhenNotification(input: String, completion: (result: String) -> Void) {
refInDatabase.setValue(aValue)
completion(result: "we finished!")
}
...
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
let aps = userInfo["aps"] as! [String: AnyObject]
print(aps["content-available"]!)
if (aps["content-available"]!).intValue == 1 {
print("Content notification")
if (loggedIn == false) {
print("User is not logged, so no notifications")
completionHandler(.NoData)
} else {
updateValuesWhenNotification("commands") {
(result: String) in
print("got back: \(result)")
}
completionHandler(.NewData)
}
}
每次应用收到推送通知时,输出为:
内容通知
回来了:我们完了!
意味着一切正常吗?
然而,当应用程序进入后台时,真的将数据库中的值更新2或3次,然后在输出相同时停止更新(意味着无论如何都会触发更新但是没有DB中的真实更新。有时(例如20分钟后)它会重新更新。
我可以做什么/尝试? 如果您希望我给出更多精确度或指示,请询问。 非常感谢任何帮助: - )