3

AFNetworking 2.0 の AFHTTPSessionManager とその優れた HTTP 便利なメソッドを中心にアプリを作成しました。このネットワーク機能をすべてバックグラウンドで実行できるようにする必要があり、かなり心配しています。

Apple のドキュメントを読むと、バックグラウンド セッションではデータ タスクがサポートされていないことがわかります。AFHTTPSessionManager の GET、POST、PUT などの実装を簡単に調べたところ、全面的に NSURLSessionDataTask を使用しているようです。

足りないものはありますか、それとも再設計や再加工が必要ですか?

私が正しい (そして私がそうであると思う) 場合、およびこのコードパスではバックグラウンドでのアップロードとダウンロードが許可されない場合、データ以外のタスクを使用する AFURLSessionManager の他のメソッドをラップできなかった理由はありますか?現在の HTTP メソッドが「dataTaskWithRequest:completionHandler」をラップするのと同じ方法ですか? たとえば、POST の場合、おそらく「uploadTaskWithRequest:fromData:progress:completionHandler」を使用できますか?

これが実行可能なルートであるかどうか疑問に思っているので、なぜ AFNetworking 開発者がそれを使用しなかったので、AFHTTPSessionManager の便利なメソッドがバックグラウンド転送を可能にするのかを尋ねています。

4

1 に答える 1

0

AFNetworking を使用すると、バックグラウンド リクエストを実行できます (ただし、タスク固有の完了ブロックを使用しないように注意し、適切なアプリ デリゲート メソッドを実装していることを確認してください。AFNetworking 2.0 とバックグラウンド転送を参照してください)。おそらく、リクエストを作成するプロセスを簡素化するために を使用することもできますrequestWithMethod(AFHTTPRequestSerializerただし、IIRC では、HTTPBodyバックグラウンド アップロード リクエストでリクエストを使用することはできないため、リクエストの本文をファイルに保存してから、そのファイルを使用したバックグラウンド アップロード リクエスト)。

ただし、バックグラウンド セッションを使用している場合、AFHTTPSessionManagerメソッドを使用してタスクを開始できないことは間違いありません。彼らがそのように実装した理由については、問題フォーラムNSURLSessionDataTaskに適した質問です。

于 2015-02-12T14:26:23.620 に答える