2

私は 1 年以上前に、ユーザーに写真共有とビデオ共有を提供するアプリを作成しました。数週間前に新しい機能を導入するまで問題なく実行されました: WiFi が利用可能な場合にのみアップロードするビデオをマークする可能性: ビデオは、allowsCellular が NO に設定されている NSURLSessionConfiguration で NSURLSession を使用するように設定されています.

ほとんどの場合、問題なく動作します:

  • 3G/4G 経由で接続しているときに、ビデオを WiFi で共有するように設定しました
  • WiFi ネットワークに接続すると、ビデオは問題なくアップロードされます

ただし、一部のユーザーは、WiFi に接続すると動画がアップロードされません。それらからいくつかのログを取得しましたが、Wifi に接続するたびにエラーが表示されます。何らかの理由で、NSURLSession が次のデリゲート呼び出しを行います。

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error

次のエラーが発生します。

Error: Error Domain=NSURLErrorDomain Code=-999 "(null)" UserInfo={NSErrorFailingURLStringKey=https://my-videos-bucket.s3.amazonaws.com/4074196678138134606/F17F7308-2810-4325-A5AF-BB8FFC093AC6.mov, NSURLErrorBackgroundTaskCancelledReasonKey=0, NSErrorFailingURLKey=https://my-videos-bucket.s3.amazonaws.com/4074196678138134606/F17F7308-2810-4325-A5AF-BB8FFC093AC6.mov}

何か案は?サーバーに問題がある可能性はありますか?奇妙なことに、それを再現することも、失敗の理由を理解することもできません。

前もって感謝します!

4

1 に答える 1

1

999 エラーは通常、タスク自体を明示的にキャンセルするか、タスクを含むセッションを無効にする (場合によっては解放する) ことによって、アプリが要求をキャンセルしたときに発生します。

ただし、バックグラウンド ダウンロードの場合、フレームワークはもう少し詳しい情報を提供します。ディクショナリ キーNSURLErrorBackgroundTaskCancelledReasonKey) の値が 0 であることがわかります。ドキュメントを調べると、これが に対応していることがわかりますNSURLErrorCancelledReasonUserForceQuitApplication

つまり、ユーザーがホーム ボタンを明示的にダブルタップし、上にスワイプしてアプリを終了したため、リクエストがキャンセルされました。その結果、バックグラウンド ダウンロードは自動的にキャンセルされました。

詳細については、 NSURLSession クラス リファレンスを参照してください。

于 2016-08-13T06:35:05.273 に答える