エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 のバックグラウンド ファイル転送

2014/06/18

対象: Windows Phone 8 および Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

Windows Phone OS 7.1 では、アプリケーションがフォアグラウンドで実行されなくなっても、HTTP 経由による 1 つまたは複数のファイルのアップロード要求またはダウンロード要求をキューに入れて、バックグラウンドで実行できます。 既存の転送の状態を問い合わせ、進行状況のインジケーターをエンド ユーザーに提供する場合も、ファイル転送を開始するための API を使用する必要があります。バックグラウンド ファイル転送を使用するアプリケーションの作成手順については、「Windows Phone 8 のバックグラウンド ファイル転送を実装する方法」を参照してください。

このトピックは、次のセクションで構成されています。

バックグラウンド転送サービスの API は、Microsoft.Phone.BackgroundTransfer 名前空間にあります。使用する主なプログラミング要素は、BackgroundTransferRequest クラスと BackgroundTransferService クラスです。BackgroundTransferRequest オブジェクトは、1 つの転送要求を表し、転送元と転送先のファイル パス、転送方法、および転送の現在の状態が含まれます。 BackgroundTransferService オブジェクトは、新しい転送の開始、および既存のファイル転送の問い合わせまたは削除に使用します。

バックグラウンド転送サービスは、HTTP および HTTPS を使用する転送のみをサポートします。FTP はサポートされていません。BackgroundTransferService を使用すると、ファイルのアップロードとダウンロードをバックグラウンドで実行できます。GET HTTP メソッドはファイルのダウンロードでサポートされており、POST メソッドはファイルのダウンロードまたはアップロードでサポートされています。転送用にメソッドを設定するには、BackgroundTransferRequest オブジェクトの Method プロパティを使用します。

すべてのバックグラウンド転送には、ローカル ファイル パスが必要です。ダウンロードには、ダウンロードしたファイルを保存する場所を指定する転送先パスが必要です。アップロードには、アップロードするファイルが格納されている場所を指定する転送元パスが必要です。バックグラウンド転送で使用するすべてのローカル パスは、アプリケーションの分離ストレージ内の、"/shared/transfers" という名前のルート ディレクトリ内に存在する必要があります。このディレクトリはアプリケーションのインストール時にオペレーティング システムによって作成されますが、アプリケーションでこのディレクトリを削除または名前変更した場合は、ファイル転送を開始する前に作成し直す必要があります。ルートの "/shared/transfers" ディレクトリの下には追加のディレクトリ構造を自由に作成でき、転送の完了後はファイルをコピーまたは移動して、バックグラウンド転送サービスによってファイルが変更されていないことを確認できますが、"/shared/transfers" ディレクトリ下に存在しないパスを使用して転送を開始しようとすると、例外がスローされます。

転送要求の HTTP ヘッダーを設定するには、BackgroundTransferRequest オブジェクトの Headers プロパティを使用します。以下のヘッダーは、システムで使用するために予約されており、呼び出し元のアプリケーションでは使用できません。次のいずれかのヘッダーを Headers コレクションに追加した場合、Add(BackgroundTransferRequest) メソッドを使用して転送要求をキューに入れようとすると、NotSupportedException がスローされます。

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • Range

  • Unless-Modified-Since

バックグラウンド転送 API によって開始されたバックグラウンド転送は、通常、TransferPreferences プロパティによって設定される要件、およびバッテリー電源と使用可能な接続に関するシステム要件が満たされると、直ちに開始されます。ただし、複数のアプリケーションがバックグラウンド転送をキューに入れる可能性があるので、先に追加された転送が完了するまでの間、転送の開始がさらに遅れる場合があります。

Windows Phone 8 には通信量モニター機能が導入されています。この機能により、データ通信プランで策定した上限に近づいたときに、アプリがデータ転送を制限することをユーザーが要求できます。ユーザーがこの機能をオンにしている場合、ConnectionCost の次のメンバーの値に応じて、バックグラウンド転送が一時停止される場合があります。

  • ApproachingDataLimit – この値が true であれば、アプリが現在フォアグラウンドで動作しているかどうかにかかわらず、バックグラウンド転送が続行されます。

  • OverDataLimit – この値が true であれば、アプリが現在フォアグラウンドで動作している場合にのみ、バックグラウンド転送が続行されます。

  • Roaming – この値が true であれば、アプリが現在フォアグラウンドで動作しているかどうかにかかわらず、バックグラウンド転送が一時停止されます。

通信量モニター機能の概要と、アプリでこの機能を使用してデータ使用量を調整する方法の詳細については、「Windows Phone 8 のデータセンサー API でデータの使用を調整する方法」を参照してください。

重要:重要:

バックグラウンド ファイル転送を使用するアプリケーションは、一般的なアプリケーションの要件のほかに、ストア にアプリケーションを登録するための追加の認定要件を満たさなければなりません。アプリケーションの設計や実装を行う際には、これらの要件を考慮する必要があります。詳細については、「Windows Phone の特定のアプリの種類に関する追加の要件」を参照してください。

バックグラウンド転送に対しては、ファイル サイズ、接続速度、およびデバイスのリソースに関する複数の制限がオペレーティング システムによって適用されます。ここでは、Windows Phone のバックグラウンド転送に関するポリシーの一覧を示します。Windows Phone エミュレーターは Wi-Fi および外部電源に接続されたデバイスをシミュレートすることに注意してください。他の条件の下でアプリケーションが動作することを検証するには、物理デバイスでテストする必要があります。

サイズ

最大アップロード ファイル サイズ

携帯ネットワーク接続経由 - 5 MB

バッテリー電源のある Wi-Fi 接続経由 - 20 MB

外部電源のある Wi-Fi 接続経由 - 100 MB

携帯ネットワーク接続経由での最大ダウンロード サイズ

20 MB - ファイルがこの制限を超えた場合、転送の TransferPreferences プロパティは自動的に AllowBattery に変更されます。これにより、転送には Wi-Fi が必要になります。

外部電源のない Wi-Fi 経由での最大ダウンロード サイズ

100 MB - 100 MB より大きいファイルでは、転送の TransferPreferences プロパティを None に設定する必要があります。そうしないと転送は失敗します。転送のサイズが不明で、この制限を超える可能性がある場合は、値を None に設定する必要があります。その場合は、電話が外部電源に接続されていて、Wi-Fi 接続されているときだけ転送が実行されるようになります。

制限

アプリケーションごとのキュー内の最大未処理要求数 (これには、アクティブな要求と保留中の要求が含まれます)

25 - 転送は、完了しても、キューから自動的に削除されません。新しい転送のためにスロットを空けておくためには、アプリケーションで Remove(BackgroundTransferRequest) を使用して、完了した転送をキューから削除する必要があります。

デバイス上の全アプリケーションの最大同時転送数

2

デバイス上の全アプリケーションの最大キュー内転送数

500

要求ごとの最大 HTTP ヘッダー数

15

HTTP ヘッダーの最大サイズ

各 16 KB

ポリシー

  • アプリがフォアグラウンドである間に、バックグラウンド転送サービスは以下のデータ ネットワーク上で転送を行います。アプリがフォアグラウンドでない間は、これらのネットワークでは転送は行われません。この制限は HttpWebRequest オブジェクトにより共有されるため、この場合は独自の転送を実行してもバックグラウンド転送を使用する場合より有利になることはありません。

    • 2G、EDGE、Standard GPRS

    3G 以上のネットワークでは、その他の条件がすべて満たされている場合、アプリがフォアグラウンドで動作しているかどうかにかかわらず、バックグラウンド転送が続行されます。

  • 5 MB を超えるファイルの場合、サーバー側で content-length ヘッダーが必要です。サーバーは、応答で content-length を常に返す必要があります。これを行わないと、転送のパフォーマンスが大幅に低下する可能性があります。

  • 5 MB を超えるファイルの場合、サーバー側で範囲ヘッダーが必要です。サーバーは、範囲要求ヘッダーを常にサポートする必要があります。これを行わないと、転送のパフォーマンスが大幅に低下する可能性があります。

低速の転送

デバイスのネットワーク接続が次の速度より低下すると、転送は一時停止された後、再試行されます。これらの制限 (単位は Kbps) は低い値であり、通常であれば達することはありません。

ネットワーク メディア

最低データ速度

3G

50 Kbps

Wi-Fi/USB

100 Kbps

表示:
© 2014 Microsoft