問題タブ [nsurlsessionuploadtask]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
307 参照

nsurlsession - NSURLSession デリゲートはクラス間で分割されます - NSURLSession、NSURLUploadTask、NSURLDownloadTask

アプリのアップロード/ダウンロード メディア機能を作成中です。アップロードのキューは正常に機能していましたが、ダウンロードと必要なダウンロードデリゲートを追加すると、タスクはダウンロードでしたが、アップロードデリゲートはイベントと呼ばれました。私の最初のクラス構造は、アップロードまたはダウンロードのいずれかを保持できる TransferModel とともに、NSURLSession とデリゲート (ダウンロードは除く) を持つシングルトン QueueController でした。ダウンロードを追加しようとしたときに、コールバックが正しく機能していなかったため、転送関連のデリゲートを 2 つのサブクラス TransferUploadModel と TransferDownloadModel に配置するように移動しましたが、デリゲートが起動しません。

メソッドのシグネチャは次のようになります。

どんな助けでも大歓迎です。

ありがとう、J

0 投票する
2 に答える
564 参照

ios - NSURLSessionUploadTask バックグラウンド セッション - いくつかのパラメーターを使用したファイルのアップロード

サーバー側には、投稿パラメータ userid、authenticationKey、いくつかのタイトル、いくつかのコメント、およびファイルを受け入れる PHP Web サービスがあります。

iPhoneで音声を録音し、このサービスにアップロードしています。NSURLSessionUploadTask を使用し、DefaultSessionConfiguration でマルチパート ファイル アップロード リクエストを作成すると、コードは正常に動作します。

ただし、バックグラウンド セッション構成を使用してファイルをアップロードしたいと考えています。

ポスト リクエストで、バックグラウンド ファイル アップロードのサンプル コードを (いくつかのパラメーターと共に) 見つけることができませんでした。Swift と iOS 8 を使用しています

助けていただければ幸いです。

ありがとう。サラ

0 投票する
0 に答える
668 参照

ios - バックグラウンドで NSURLSessionUploadTask を使用してファイルをアップロードする

NSURLSessionUploadTask を使用して複数のファイルをアップロードしています。バックグラウンドで同じプロセスを実行したいのですが、現在のファイルでは問題なく動作します。現在のファイルが正常にアップロードされるまで、アプリは中断されません。これで、2 番目のファイルがアップロードされると、再度起動するかアプリがアクティブになるまでアップロード プロセスが開始されません。アップロードが間に合っていないのは良いことです。最初のアップロード プロセスが終了したときに、次のアップロード プロセスを開始する方法はありますか。2 番目のアップロードもバックグラウンドで開始されますが、アプリがバックグラウンドに入ってから最大 3 分で動作します。ここに私のコードを示します:

上記のコードは完全に機能していますが、アプリのバックグラウンド モードの 3 分後にバックグラウンドで次のファイルのアップロードが開始されないという問題があります。

どんな助けでも感謝します。前もって感謝します... 詳細については、私に連絡してください。

0 投票する
0 に答える
728 参照

ios - NSURLSessionUploadTask が NSURLSessionConfiguration backgroundSessionConfiguration でデリゲート メソッドを呼び出していない

backgroundSessionConfigurationを使用して画像をNSURLSessionUploadTaskアップロードし、アプリケーションのバックグラウンド モードでライブ アップロード プロセスを維持しようとしています。

しかし、私が使用するときbackgroundSessionConfiguration、デリゲートメソッドを呼び出しNSURLSessionUploadTaskながらデリゲートメソッドを呼び出していませんdefaultSessionConfiguration

これがコードです。

に変更backgroundSessionConfigurationするとdefaultSessionConfiguration、デリゲート メソッドが呼び出されます。

私が欠けているものを理解するのを手伝ってください。

ありがとう、ニティン

0 投票する
0 に答える
223 参照

objective-c - NSURLSessionUploadTask と API 呼び出し

問題:

ユーザーの写真をデバイスギャラリーからサーバーにアップロードする必要がある写真整理/バックアップ iOS アプリを構築しています。

ユーザーが自分のプロフィールを作成してアプリにログインすると、自分のギャラリーで画像がスキャンされます。アップロードは、マルチパート フォーム データ リクエストとして約 10 ファイルのバッチで行われます。各バッチがアップロードされた後、サーバーに API 呼び出しを行い、完了したばかりのアップロードをコミットする必要があります。サーバーは、以前にコミットされたバッチを処理した後、画像コンテンツなどに基づいてアルバムを作成するなど、独自のコミットを行うこともできます。その場合、クライアントはアップロードのコミット中にサーバーから非同期応答を取得し、アップロードをコミットする前にまずサーバーのコミットをフェッチする必要があります。続いて、次の 10 枚の画像のバッチのアップロードが予定されています。

この目的のために NSURLSessionUploadTask を使用しています。アプリが一時停止状態のときにアップロードが完了すると、アプリが起動し、以下の 1、2、3 または 2、3 のいずれかを実行する必要がある場合があります。

  1. 以前にコミットされたアップロードに対してサーバーによって行われたコミットを取得します
  2. 完了したばかりのアップロードをコミットします
  3. アップロードする 10 枚の画像の次のバッチをスケジュールします

================================================== ==

これはうまくいきません。アップロードの完了後にアプリが起動されたときに、アプリが 1,2,3 または 2,3 を実行するのに十分な時間がありません。バックグラウンド実行時間の要求は、Apple が 180 秒に制限しているため、180 秒を超えることはありません。

サーバーは画像の上書きを開始する前に 100 個の画像のバッファーを持っているため、バッチをコミットせずにバッチをアップロードし続けることはできません。コミットせずにアップロードを続けると、サーバーは以前にアップロードされた画像を上書きし始め、データが失われます。

また、コミットを実行せずに画像の複数のバッチをアップロードしようとしても、進行中のアップロードが終了するとすぐにバックグラウンドで NSURLSessionUploadTask としてスケジュールした最初のタスクが、アップローダー デーモン nsurlsessiond によってすぐに取得されないことを確認しました。5 分後、場合によっては 10 分後に応答することもあります。プロセス全体を通して、私は良好な Wi-Fi 接続を維持しており、それに応じて NSURLSession が構成されています。

上記について、nsurlsessiond キューが空になった場合、すぐに次のタスクを選択しないことを StackOverflow で読みました。実験のために、アプリをアップロードしてバックグラウンドに入れるために3〜4個のバッチを送信しましたが、動作は同じです。2 番目のアップロードは 5 ~ 10 分後まで取得されず、3 番目と 4 番目も同様です。

================================================== ==

位置情報サービスを使用せずに Google フォトが継続的にアップロードされるのを見てきました。Dropboxもそれを行います。それらのコミット アーキテクチャは、私たちのものとは異なる場合があります。しかし現在、追加の API 呼び出しを行う必要があるコミット側全体を無視した後でも、3 ~ 4 バッチの画像を継続的にアップロードすることさえできません。

アプリのバックグラウンド アップロードの解決策を考え出すために、この状況を分析する方法を教えていただけませんか。

再度、感謝します。

0 投票する
1 に答える
435 参照

ios - アプリケーションが中断されたときに NSURLSessionUploadTask が機能しているかどうかを確認するにはどうすればよいですか?

アプリケーションがフォアグラウンドで実行されている場合、次の呼び出しが定期的に表示されます。NSURLSessionTaskDelegate -> URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:

アプリケーションがバックグラウンドに移行して中断されると、このメソッドの呼び出しが停止するため、NSURLSessionUploadTask がアップロードを継続しているかどうかについてのフィードバックがありません。アップロードに関するフィードバックを得る方法はありますか?

0 投票する
1 に答える
604 参照

ios - NSURLSessionUploadTask 応答のコンテンツ データが null です

ここに私がいるところがありNSURLSessionUploadTaskます:

  • iOS アプリケーションがNSURLSessionUploadTaskPOST を使用して開始する
  • サーバーが HTTP POST リクエストを受け取る
  • サーバーはリクエストのコンテンツを読み取り、データがアップロードされます
  • サーバーは、以下で構成される HTTP 応答を iOS に送信します。
  • iOS アプリケーションが応答を受信しNSLogsNSURLSessionTaskDelegate -> URLSession:task:didCompleteWithError:
  • ただし、NSLogメソッドの場合の応答コンテンツにしようとするとNSURLSessionTaskDelegate: -> URLSession:dataTask:didReceiveData:
  • が呼び出され、出力用にこれを取得します:
  • これについて奇妙なのは、データが null の場合、応答が if ステートメント ブロックをトリガーするべきではないということです!
  • また、応答データが Wireshark 経由で iOS アプリケーションに送信されたという証拠もあります。サーバーからの HTTP 応答のパケット キャプチャを次に示します。 ワイヤーシャーク

iOS が HTTP 応答でコンテンツを失っているように見える理由を誰か教えてもらえますか?

0 投票する
1 に答える
106 参照

ios - NSURLSessionUploadTask (1) データをアップロードする、(2) ~200 秒間ハングする、(3) 繰り返す

ここに私がいるところがありNSURLSessionUploadTaskます:

  • iOS アプリケーションがNSURLSessionUploadTaskPOST を使用して開始する
  • サーバーが HTTP POST リクエストを受け取る
  • サーバーはリクエストのコンテンツを読み取り、データがアップロードされます
  • iOS アプリケーションが URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:繰り返し呼び出し、最後の呼び出しが次のtotalBytesSent値に等しいtotalBytesExpectedToSend
  • サーバーは、以下で構成される HTTP 応答を iOS に送信します。
  • iOS アプリケーションがこの応答を受信します (Wireshark で確認) ワイヤーシャーク
  • iOS アプリケーションは、アップロード タスクを完了するために次のメソッドを呼び出し ません。
    • NSURLSessionTaskDelegate: -> URLSession:dataTask:didReceiveData:
    • NSURLSessionTaskDelegate -> URLSession:task:didCompleteWithError:
  • 代わりに、約 200 秒間ハングした後、iOS アプリケーションはデータ アップロード タスクを繰り返します。

このデータのアップロード、HTTP 200 応答、約 200 秒のハング プロセスが無期限に繰り返されるようです。HTTP 応答が iOS アプリケーションによって受信されると、呼び出されNSURLSessionTaskDelegate: -> URLSession:dataTask:didReceiveData:ないのはなぜ ですか?NSURLSessionTaskDelegate -> URLSession:task:didCompleteWithError:

0 投票する
1 に答える
446 参照

ios - NSURLSession と Content-Type の問題

写真を Web サービスにアップロードしようとしていますが、次のコードを使用しています。

エラー 500 が表示され、どうすればよいかわかりません。

ThisThis、およびThisのようなボディデータの追加である AFNetworking の実装を試みました。しかし、運はありません。

上記のコードは、Ray Wenderlich の Web サイトからのものです

サーバーを提供する必要があるのはこれだけです:

  1. ファイル(画像)
  2. API キー (NSMutableURLRequest のaddValue:forHTTPHeaderField: を使用してみましたが、うまくいかなかったので、URL で使用しています。安全性の面でベスト プラクティスではないことはわかっていますが、これまでのように必死になっています。これに 10 時間以上取り組んでいます! 一歩ずつ!)
  3. あるContent-Typeべきmultipart/form-data

それが私が提供する必要があるすべてですが、それでも私はどこにも行きません!

誰でも助けてもらえますか?

前もって感謝します

更新 1: URL 構造に変更を加え、API キーを HTTPBody の辞書として追加したところ、エラー 403 が発生しました。

Apple が接続のこの部分をシリアル化する努力をしていないのは、本当に奇妙に思えます。ともかく。誰でも助けてくれて本当にありがとう!