2016-10-24 7 views
1

をdissmissedされなければならないときに、ユーザーがavplayercontrollerを閉じたときに、ここではそれは、私はビデオ位置の時間を送信する必要がある関数を、持って、バックグラウンドでalamofire要求を送信します。ビューコントローラは、

let concurrentQueue = DispatchQueue(label: "networkRequest", attributes: .concurrent) 

fileprivate func sendBackgroundRequest(urlString: String, method: HTTPMethod, parameters: Parameters?) { 

    let headers = createHeader() 

    print(headers) 

    if networkManager!.isReachable { 

     concurrentQueue.async { 

      let request = Alamofire.request(urlString, method: method, parameters: parameters, encoding: JSONEncoding.default, headers: headers) 

      request.responseJSON { data in 

       if data.result.error == nil { 
        if data.response?.statusCode == 200 { 
         print("Success") 
        } else { 
         print(data.response?.statusCode) 
        } 
       } else { 
        print(data.result.error) 
       } 

      } 

     } 

    } 
} 

func sendSeriesDurationTime(provider: String, fileID: String, timePosition: Int) { 
    let parameters: Parameters = [ 
     "time_position": timePosition 
    ] 

    let dataUrl = "\(BASE_URL)\(PLAYED_DURATION_SLUG)\(provider)/\(fileID)" 

    print(dataUrl) 

    sendBackgroundRequest(urlString: dataUrl, method: .post, parameters: parameters) 
} 

私はviewWillDisappearでそれを呼び出します方法。しかし、プレイヤーの「完了」ボタンをクリックすると、アラモファイアが完了するまでにシステムが待機するので、消えるまでに時間がかかります。

私はviewDidDisappear方法が、私のUIは、別のコントローラにフリーズするこの方法でそれを呼び出すことができることを、知っている....

答えて

1

私はちょうど

request.responseJSON { data in 

     if data.result.error == nil { 
      if data.response?.statusCode == 200 { 
       print("Success") 
      } else { 
       print(data.response?.statusCode) 
      } 
     } else { 
      print(data.result.error) 
     } 

    } 
を削除するために必要な、答えを見つけました

リクエストが行われましたが、UIがフリーズしていないため、システムはサーバーの応答を待っていません。

関連する問題