URLSession

3649 ワード

~正式な書類と読む~

Declaration

class URLSession : NSObject

Overview


URLSSessionクラスおよび関連クラスは、URLを介してデータをダウンロードおよびアップロードするAPIを提供する.
また、アプリケーションがまだ実行されていないか停止していない場合でも、バックグラウンドでアプリケーションをダウンロードすることをサポートします.
URL Session Delegate、URL SessionTaskDelegateを使用して認証をサポートしたり、リダイレクトやタスク完了などのイベントを受信したりできます.
Note
The URLSession API involves many different classes that work together in a fairly complex way which may not be obvious if you read the reference documentation by itself. Before using the API, read the overview in the URL Loading System topic. The articles in the Essentials, Uploading, and Downloading sections offer examples of performing common tasks with URLSession.
URLセッションAPIは異なるクラスと一緒に動作するため、APIを使用する前に、URL Loading System topicの概要を参照してください.
Your app creates one or more URLSession instances, each of which coordinates a group of related data-transfer tasks. For example, if you’re creating a web browser, your app might create one session per tab or window, or one session for interactive use and another for background downloads. Within each session, your app adds a series of tasks, each of which represents a request for a specific URL (following HTTP redirects, if necessary).

Types of URL Sessions


The tasks within a given URL session share a common session configuration object,
which defines connection behavior, like the maximum number of simultaneous connections to make to a single host, whether connections can use the cellular network, and so on.
URLSSessionに追加するタスクはcommon session coです
構成を共有し、接続動作を定義します.(connection behavior)
たとえば、1台のホストに同時に接続できる最大数です.
接続がセルラーネットワークを使用できるかどうか.
URLSSessionは、configurationオブジェクトを持たないshared単一セッションを提供します.
セッションの作成時にカスタマイズは許可されませんが、basic requestなどの制限リクエストを発行する場合に便利です.
非共有セッションを作成する場合は、次の3つの構成のいずれかを指定する必要があります.
  • default:共有セッションと同様ですが、委任を指定できます.(to obtain data incrementally)
  • Empheral:キャッシュ、Cookie、認証情報はディスクに書き込まれません.
  • Background:appが実行されていない場合、バックグラウンドでアップロードおよびダウンロードタスクを実行します.
  • Using a Session Delegate


    Session Delegateを実装し、様々なイベントが発生したときに情報を取得します.例:
  • Authentication fails. -- 認証失敗時
  • Data arrives from the server. -- サーバからのデータ取得時は
  • Data becomes available for caching. -- データのキャッシュが必要な場合
  • 委任から提供される機能が不要な場合は、セッションの作成時にAPIを使用し、委任を必要としません.
    Important
    sessionオブジェクトはdelegateと強い参照関係があり、sessionが無効にならないと、アプリケーションが終了する前にメモリ漏洩が発生します.
    Each task you create with the session calls back to the session’s delegate,
    using the methods defined in URLSessionTaskDelegate. You can also intercept these callbacks before they reach the session delegate by populating a separate delegate that’s specific to the task.

    Asynchronicity and URL Sessions


    URLSSessionAPIは非同期です.
  • InswiftまたはObjective-Cは、タスクの完了時に実行するタスクを渡す完了処理ブロックを提供する.
  • InswiftまたはObjective-C、Delegateメソッドを使用して、転送中または完了後にロールバックを受け取ることができます.
  • Thread Safety


    URLセッションはスレッドが安全であるため、任意のスレッドコンテキストでセッションを作成できます.
    delegateメソッドが完了ハンドラを呼び出すと、タスクは適切なdelegateキューに自動的に配置されます.
    When your delegate methods call the provided completion handlers, the work is automatically scheduled on the correct delegate queue.