2

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

それが正常に動作しますほとんどの時間:

  • 私は私がWiFiネットワークに接続すると動画がアップロードされ、3G/4G
  • 介して接続されていながら、私は無線LAN上で共有する映像を設定します問題なし

ただし、一部のユーザーは、Wi-Fiに接続するとビデオをアップロードしないことがあります。すべてのアイデアは、

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} 

:次のエラーで

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

:私は彼らからいくつかのログを持って、彼らは無線LANに接続するたびに、私はいくつかの理由で、エラーを見ることができるNSURLSessionは、デリゲートの呼び出しを行いますか?サーバーに問題はありますか?奇妙なことは、私はそれを再現することも、失敗の理由を理解することができないということです。

ありがとうございます!あなたのアプリがキャンセルしたときに

+0

他のタスクによってタスクがキャンセルされたようです。 -999はNSURLErrorCancelled用です。 –

+0

iPhoneをスターバックスに持ってきて、問題を再現できるかどうか確認してください。ユーザーがキャプティブネットワークを実行している可能性があります。 – gnasher729

答えて

0

999エラーが発生し、通常の要求-明示的タスク自体をキャンセルするか、またはそれを含むセッションを無効化する(あるいは解放する)こともできます。

しかし、バックグラウンドダウンロードの場合、フレームワークはもう少し詳しい情報を提供します。辞書キーNSURLErrorBackgroundTaskCancelledReasonKey)の値が0になっていることに気が付くでしょう。ドキュメントでこれを調べると、これはNSURLErrorCancelledReasonUserForceQuitApplicationに対応しています。

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

詳細については、NSURLSession Class Referenceを参照してください。

関連する問題