我想在我的应用中使用静音推送通知。我在我的应用和手机上启用了后台模式。
当无提示通知到达时didReceiveRemoteNotification
委托方法正在调用。但是我不能在这个方法中做任何http请求。我使用以下代码:
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
print("step 1")
let request = NSMutableURLRequest(URL: NSURL(string: "url")!)
request.HTTPMethod = "POST"
let postString = "search=\(username)&me=\(anonId)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
print("step 2")
if error == nil {
let jsonResult: Dictionary = (try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as! Dictionary<String, AnyObject>
let results = jsonResult["result"] as! [[String: AnyObject]]
print(results)
for item in results {
}
completionHandler(UIBackgroundFetchResult.NewData)
}
}
}
当通知到达时,我在控制台上看到step 1
文本。但我无法看到step 2
文字。
如何解决此问题?
答案 0 :(得分:0)
您需要设置支持后台下载并使用它的URL会话。在NSURLSession
类参考中搜索“背景”,了解有关如何执行此操作的信息。
我认为您不必询问后台时间才能启动后台下载。你应该有足够的时间来做到这一点。