使用静默通知执行http请求

时间:2016-06-01 23:22:08

标签: ios swift

我想在我的应用中使用静音推送通知。我在我的应用和手机上启用了后台模式。

当无提示通知到达时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文字。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

您需要设置支持后台下载并使用它的URL会话。在NSURLSession类参考中搜索“背景”,了解有关如何执行此操作的信息。

我认为您不必询问后台时间才能启动后台下载。你应该有足够的时间来做到这一点。