バックグラウンドでのデータの転送 (HTML)
Windows ランタイムの Windows.Networking.BackgroundTransfer API を使うと、アプリの一時停止中にもバックグラウンドで実行され、運用ライフサイクル管理ごとの操作を示し、アプリの終了後にも持続する、高度なファイルのダウンロード/アップロード機能によってアプリを拡張できます。 この機能は、HTTP プロトコルや HTTPS プロトコルを使った大規模なファイルのダウンロードとアップロード操作に適しています。FTP は、ダウンロード操作時にのみサポートされます。
バックグラウンド転送はアプリの呼び出しとは別に実行され、主にビデオ、音楽、サイズの大きい画像などのリソースの長期の転送操作を目的としています。これらのシナリオでは、アプリが一時停止状態でもダウンロードが続行されるため、バックグラウンド転送の使用が不可欠です。電話では、バックグラウンド転送はアプリが終了した場合でも続行されます。アプリのライフサイクルについて詳しくは、「アプリケーションのライフサイクル」をご覧ください。
注 すぐに完了する可能性がある小さいリソースをダウンロードする場合は、バックグラウンド転送ではなく HttpClient API を使ってください。
バックグラウンド転送機能はどのように動作するか
アプリがバックグラウンド転送を使って転送を開始するときには、BackgroundDownloader または BackgroundUploader クラス オブジェクトを使って要求が構成され初期化されます。それぞれの転送操作は、呼び出し元アプリとは別にシステムによって個別に処理されます。進行情報はアプリの UI でユーザーに状況を示す場合に利用することができ、アプリで一時停止、再開、キャンセルしたり、転送中にデータを読み取ったりすることができます。システムによって転送が処理される方法により、スマートな電力消費が実現し、アプリの中断や終了、突然のネットワーク ステータス変化などのイベントが接続アプリで発生したときに起こる可能性のある問題を回避できます。
バックグラウンド転送を使った単純なファイルのダウンロードのデモについては、このビデオをご覧ください。
Windows Phone ストア アプリ: 現在利用しているアプリでバックグラウンド転送を使い、認証されたファイル要求を作成できるか
バックグラウンド転送では、基本サーバーとプロキシの資格情報、Cookie をサポートするメソッドが用意されており、それぞれの転送操作で (SetRequestHeader を介して) カスタム HTTP ヘッダーを使うこともできます。
この機能ではネットワーク ステータスの変化や予期しないシャットダウンにどのように対応するか
バックグラウンド転送機能により、ネットワークの状態が変化したときに各転送操作に対して一貫性のあるエクスペリエンスが保たれます。これは、接続機能によって提供される接続とキャリアのデータプラン ステータスの情報をインテリジェントに利用しています。さまざまなネットワーク シナリオでの動作を定義するために、アプリは、BackgroundTransferCostPolicy によって定義された値を使って、各転送操作のコスト ポリシーを設定します。
たとえば、操作に対して定義されたコスト ポリシーで、デバイスが従量制課金接続を使っているときに操作を自動的に一時停止する必要があることを示すことができます。"制限のない" ネットワークへの接続が確立されたときには、転送が自動的に再開されます。コストによってネットワークがどのように定義されるかについては、「NetworkCostType」をご覧ください。
バックグラウンド転送機能にはネットワーク ステータスの変化に対応する独自のメカニズムがありますが、ネットワーク接続されたアプリには他にも一般的な接続の考慮事項があります。詳しくは、「利用できるネットワーク接続情報の活用」をご覧ください。
注
Windows Phone ストア アプリでは、接続の種類、ローミング ステータス、ユーザーのデータ プランに基づいて転送されるデータの量を、ユーザーが監視および制限できる機能が用意されています。このため、BackgroundTransferCostPolicy が転送が継続中であることを示す場合でも、電話でバックグラウンド転送が一時停止される可能性があります。
次の表に、電話の現在の状態に応じて、BackgroundTransferCostPolicy の各値に対して、電話でバックグラウンド転送が許可されるかどうかを示します。電話の現在の状態を判断するには、ConnectionCost クラスを使います。
電話の状態 | UnrestrictedOnly | Default | Always |
---|---|---|---|
WiFi 接続 | 許可 | 許可 | 許可 |
従量制課金接続、ローミング時以外、データ制限未満、制限内にとどまる見込み | 拒否 | 許可 | 許可 |
従量制課金接続、ローミング時以外、データ制限未満、制限を超過する見込み | 拒否 | 拒否 | 許可 |
従量制課金接続、ローミング時、データ制限未満 | 拒否 | 拒否 | 許可 |
従量制課金接続、データ制限超過この状態は、ユーザーが Data Sense UI で [バックグラウンドでのデータ通信を制限する] を有効にしている場合にのみ発生します。 | 拒否 | 拒否 | 拒否 |
RequestUnconstrainedDownloadsAsync と RequestUnconstrainedUploadsAsync は、電話ではサポートされません。これらの API の呼び出しは正常にコンパイルされますが、実行時には E_NOT_IMPL 例外を出力して失敗します。
バックグラウンド転送の詳細
セクション | 説明 |
---|---|
ネットワーク リソースからのファイルの転送 | Windows ストア アプリにファイルを安全にダウンロード、アップロードする機能を追加します。 |
Background Transfer API reference | バックグラウンド転送 Windows ランタイム名前空間全体の API ドキュメント。 |
バックグラウンド転送のサンプルに関するページ | このサンプルでは、Windows ストア アプリ用バックグラウンド転送 API の、コストを意識した省電力の柔軟性に優れた動作を示します。 |