LoginSignup
50
47

More than 5 years have passed since last update.

NSURLSessionConfigurationについてメモ

Posted at

NSURLSessionConfigurationについて整理する

NSURLSessionConfiguration、意外と情報が少ないので整理しておく。

インスタンスの生成

以下のメソッドで、NSURLSessionConfigurationのインスタンスを生成することができます。

  • + defaultSessionConfiguration
  • + ephemeralSessionConfiguration
  • + backgroundSessionConfigurationWithIdentifier:

defaultSessionConfiguration

NSURLConnectionと同じように通信するように設定されたインスタンスを生成します。
キーチェーンに保存された証明書や、ストレージに永続化されたキャッシュ、NSURLConnectionNSURLDownloadと同じcookieのストレージを使います。

ephemeralSessionConfiguration

証明書やキャッシュ、cookieをメモリ上に保存するデータ転送のためのインスタンスを生成します。
NSURLSessionが破棄されたタイミングで全てのデータが消去されます。

また、メモリ使用量の制約を受けるため、使用時にはどの程度の転送量が発生するか、考慮する必要があります。

backgroundSessionConfigurationWithIdentifier:

HTTP/HTTPS通信で、ダウンロード・アップロード処理をバックグラウンドで行えるインスタンスを生成します。
アプリケーションとは別なプロセスで通信するため、アプリケーションがバックグラウンドにいる場合や、アプリケーションが終了している場合でも通信を継続します。
(ユーザーがアプリを強制終了した場合は通信を終了します)

このクラスメソッドで指定するidentifierは、指定したIDのNSURLSessionのインスタンスを再生成するときに必要になります。
ダウンロード完了時にアプリケーションが終了しているとき、再起動されたアプリケーションを進行中のバックグラウンド転送のタスクに紐付け直します。
その際にidentifierが必要になります。

実装時に考慮したほうが良さそうなプロパティ

allowsCelluarAccess

3G・4G回線を使ったアクセスを許可するか、指定するプロパティです。
デフォルト値はYESです。

timeoutIntervalForRequest

データの転送が始まるまで、何秒待機するか指定するプロパティです。
デフォルト値は60秒です。

timeoutIntervalForResource

全てのデータを転送するまで、何秒待機するか指定するプロパティです。
デフォルト値は604800秒(7日間)です。

discretionary

バックグラウンド転送の際、バッテリー残量や通信状況に応じて通信処理の優先度を下げても良いか、指定するメソッドです。
大容量のファイル転送などの場合、YESを設定することが推奨されています。

50
47
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
50
47