問題タブ [nsurlsessiondownloadtask]
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.
ios - 完了ハンドラ ブロックでキャンセルされた NSURLSessionTask をどのように処理しますか?
を作成しNSURLSessionDownloadTask
、後で終了する前にキャンセルすると、完了ブロックがまだ発生しているように見えます。
このブロック内でダウンロード タスクがキャンセルされたかどうかを確認して、結果のダウンロードがない場合に操作を試みないようにするにはどうすればよいですか?
ios - NSURLSession & NSURLSessionConfig - 構成ヘッダーの破棄
NSURLSession
&に問題がありNSURLSessionConfiguration
、それが私のコードなのか、それともフレームワークの動作を正しく理解していないのかわかりません。
私が直面している問題は、セッション レベルで設定したヘッダーがNSURLSessionTask
セッションから作成されたファイルに存在しないことです。
以下に小さな例を示します。
上記のコードは次を出力します。
documentationの私の理解から、セッションから作成されたタスクまたはリクエストは、セッションから HTTPHeaders を継承する必要があります。私の理解は正しいですか?もしそうなら、誰かが私が間違っていることを見ることができますか?
ios - NSURLSessionDownloadTask を使用して画像を表示する
誰かが私を助けてくれないかと思っていました。画像の URL をテキストフィールドに入力すると、NSURLSessionDownloadTask を使用して UIImageView に画像を表示しようとしています。
この後どこに行けばいいのかわからない。
ios - NSURLSessionDownloadTask を使用してリダイレクト URL から PDF ファイルをダウンロードする
ユーザーがWebサイトにログインしてpdfファイルをダウンロードするアプリを作成しています。
URLSession を使用してサイトに正常にログインできました。
今、私の問題はファイルのダウンロードにあります。
Web サイトでは、次の「http://www.someurl.com/getfile.asp?FILE=12345」の URL を使用しています。これは、get URL に埋め込まれた実際の PDF ファイルへのリダイレクトであることは明らかです。
URLでNSURLSessionDownloadTaskを使用しようとしましたが、pdfファイルをダウンロードできませんでした。
応答から実際の URL にアクセスしてファイルをダウンロードする方法について何か助けはありますか?
ここで私が試したこと:質問をするためだけにURLを変更したことに注意してください
これをログに記録すると、null NSLog(@"%@",appDir); が返されます。
ios - iOS でバックグラウンドで大量のファイルをダウンロードする
合計約 1 GB の 400 から 900 ファイルまで、多数のファイルをダウンロードする必要があるアプリがあります。
これを達成するための最良のアプローチはどれですか?
NSURLSession
その中にエンキューされた1つのすべてのタスク?- パッケージごとに1 つ
NSURLSession
のタスクをキューに入れますか (たとえば、10 x 10)? NSURLSession
異なるキューで複数?
実際には、NSURLSession
すべてのタスク (ファイルごとに 1 つ) がキューに入れられていますが、Lost connection to background transfer service
.
これが私のコードです:
ios - iOS 8で可能なセルラー経由のNSURLSessionバックグラウンドダウンロード?
アプリがバックグラウンドにあり、重要な場所の変更によって起動されたときに、小さなダウンロードを開始する必要があります。BUT Apples の NSURLSessionConfiguration のドキュメントは次のとおりです。
任意のプロパティについて次のように述べています。
大量のデータを転送する場合は、このプロパティの値を YES に設定することをお勧めします。そうすることで、システムはデバイスにとってより最適な時間にこれらの転送をスケジュールできます。たとえば、デバイスがプラグインされ、Wi-Fi 経由でネットワークに接続されるまで、システムは大きなファイルの転送を遅らせる可能性があります。このプロパティのデフォルト値は NO です。
セッション オブジェクトは、アプリがフォアグラウンドにあるときに開始する転送にのみ、このプロパティの値を適用します。アプリがバックグラウンドにある間に開始された転送の場合、システムは常にその裁量で転送を開始します。つまり、システムはこのプロパティが YES であると想定し、指定した値を無視します。
これは、ダウンロードがバックグラウンドで開始された場合、ダウンロードを続行するかどうか、およびいつ実行するかについて、OS が常に裁量権を持っていることを意味しているようです。これらのタスクを完了する前に、OS は常に Wi-Fi 接続を待機しているようです。私の経験はこの推測を支持しています。デバイスが携帯電話に接続されているときに、ダウンロードの通知をいくつか送信できることがわかりました。彼らは立ち往生したままです。デバイスをwifiに切り替えると、すべて通過します。
なんてこと?特に、NSURLSessionConfiguration オブジェクト (任意、allowsCellularAccess) に必要なプロパティがあるため、Apple がこの動作の構成を禁止する理由。もちろん、ダウンロード タスクの開始時にユーザーが常に WiFi に接続しているわけではありません。場所の大幅な変更によるアプリのウェイクアップに対応して、これを行う必要があります。バックグラウンド セッションでダウンロード タスクをスケジュールし、WiFi に切り替えるまでセルラー ネットワークでデリゲート コールバックを受信しません。つまり、WiFi が再び利用可能になるか、アプリをフォアグラウンドに戻すまで、これらのタスクを完了できないということですか?
あなたの誰かがこれに対する回避策を持っていますか?
私はすでに次のことを考えていました:
場所の更新後に長時間実行されるバックグラウンド タスク (古いスタイル) を開始し、defaultSessionConfiguration を使用してそこに自分のものをダウンロードします。それがうまくいくかどうかの経験はありますか?そうでない場合は、NSURLConnection を使用すると思います (さらに古いスタイル)。
ios - iOS - 一定間隔での自動更新データのバックグラウンド転送サービス
サーバーからフィードを取得し、ユーザーに表示して読み取るフィードのアプリを開発しています。アプリの起動時には正常に動作しますが、一時停止または終了時にバックグラウンドでデータをロードしたい(両方の場合)。Android で IntentService を作成し、AlarmManager を使用してそのサービスを一定時間 (たとえば 3 時間) ごとに開始できるため、ユーザーがオンラインになるたびに、新しいフィードの取得を待たずに最新のデータを表示できます。
バックグラウンド転送サービスNSURLSession
とサイレントリモート通知を読みましたが、これが私の目的を達成するのにどのように役立つか理解できませんでした.
リモート通知を受け取ったときに、デリゲートを使用できないため、NSURLSessionDataTask
フォームファイルを再開するにはどうすればよいですか。AppDelegate.m
この問題を解決するのを手伝ってください。過去2日間からグーグルで検索しましたが、これを達成するのに成功しませんでした。
ios - NSURLSessionDownloadTask の使用中に速度を改善するにはどうすればよいですか?
サーバーからいくつかの画像とビデオをダウンロードする必要があります。
とても遅いことがわかりました!速度は約 200K/s で、Android での時間は iPhone の 2/3 です。約 4.6M の mp4 をダウンロードすると、15 秒かかります。
しかし、他のアプリを使用して映画をダウンロードすると、2M/s になることがあります。afnetworking を使用するとき、私は間違っていますか? それがどのように発生し、それに対処するにはどうすればよいか。別の質問は、最後のリクエストをif (i == _collectionArr.count - 1){[SVProgressHUD showSuccessWithStatus:@"Done"];}で監視するのが間違っていることを知っているということ ですが、正しい答えはわかりません。
ご協力いただきありがとうございます。