4

サーバーに画像をアップロードするアプリに取り組んでおり、バックグラウンドを使用していますNSURLSessionUploadTask。これは、10 ~ 20 枚の写真など、アップロードされた画像の数が少ない場合に最適です。ただし、一度に 100 個以上の画像をアップロードしようとすると、問題が発生します。background はどのくらいスケーラブルNSURLSessionUploadTaskですか?

電話すると

NSURLSessionUploadTask *task = [uploadSession uploadTaskWithRequest:request fromFile:fileURL];

繰り返し、セマフォを待ってブロックします。これは、バックグラウンド アップロード デーモンとの通信の往復時間が原因ですか? バックグラウンド アップロード デーモンが他のアップロード タスクを処理するのを待っていますか? 100 枚以上の写真があるため、これらの呼び出しが合計 40 秒以上ブロックされるのを見てきました。また、これらの呼び出しが終了すると、アップロードが進行するまでに時間がかかり、一度に数秒間停止することがよくあります。

100 以上のアップロード タスクをセットアップして、iOS 7 にアップロードを処理してもらいたいと思っています。ただし、必要に応じて、一度にいくつかのアップロード タスクを作成できます。これは、iOS 7 で利用可能な高度なバックグラウンド アップロード機能を備えているため、残念なことのように思えますNSURLConnection

ご協力いただきありがとうございます。

4

3 に答える 3

1

NSURLSession は魔法のツールではなく、リファクタリングおよび拡張された NSURLConnection です。これを使用するときに私が行うことは、未処理のトランザクションを 4 や 10 などの固定最大値で調整することです。これは、Apple のプライベート開発フォーラムで Quinn と長い間やり取りした後、現在行っています (興味があれば、おそらくリンクを掘り下げることができます)。結局のところ、彼の言いたいことは、Apple が実際にスロットリングを行うことはできないということでした。積極的に番号を管理する必要があります。そうです、この点に関しては、6 と 7 の間に大きな違いはありません。

最大 4 つの接続を使用して、一度に何百もの画像を取得しても問題ありません。

于 2013-11-14T12:28:52.197 に答える
0

明確な質問がいくつかあり、申し訳ありませんが、コメント形式にうまく収まりません。

  1. で作成された構成を使用してセッションを作成してい
    -[NSURLSessionConfiguration backgroundSessionConfiguration:]ますか?

  2. 一時停止中など、アプリがフォアグラウンドにないときにアップロードが行われていますか?

于 2014-01-14T16:33:33.247 に答える