DownloadManager


다운로드 매니저를 사용하기 전에 반드시 AppDelegate 설정을 해야합니다.

func application(
    _ application: UIApplication,
    handleEventsForBackgroundURLSession identifier: String,
    completionHandler: @escaping () -> Void
) {
    DownloadManager.shared.setBackgroundCompletionHandler(
        sessionIdentifier: identifier,
        completionHandler: completionHandler
    )
}

위와 같은 부분을 추가하여야, 앱이 백그라운드인 상태가 되어도 다운로드 관련 작업을 원활하게 진행할 수 있습니다.


class DownloadManager : NSObject, URLSessionDownloadDelegate

다운로드 매니저 클래스는 아래와 같은 속성과 메서드를 가지고 있습니다.


정적 속성

shared

static let shared: DownloadManager { get }
타입설명설정
DownloadManager현재 활성화된 다운로드 매니저에 접근하기 위한 속성불가능

다운로드 매니저에 접근하기 위한 정적 속성입니다. 아래에 언급되는 속성 및 메서드를 호출할 때, DownloadManager.shared를 사용하여 접근할 수 있습니다.


속성

downloadsUrl

var downloadsUrl: URL { get }
타입설명설정
URL다운로드된 아이템이 저장되는 최상위 디렉토리불가능

다운로드된 아이템이 저장되는 디렉토리 중 최상위 디렉토리를 나타내는 속성입니다.

items

var items: [DownloadItem] { get }
타입설명설정
[DownloadItem]현재 다운로드 목록에 있는 아이템들불가능

현재 다운로드 목록에 있는 아이템들을 반환하는 속성입니다.

참고: DownloadItem

maxParallelDownloads

var maxParallelDownloads: Int { get set }
타입설명설정기본값
Int동시에 다운받을 수 있는 아이템 최대 개수가능3

동시에 받을 수 있는 아이템의 최대 개수를 반환하거나 설정합니다.


메서드

add(mediaItem:allowsCellularAccess:)

@discardableResult func add(
    mediaItem: MediaItem,
    allowsCellularAccess: Bool = true
) -> DownloadItem.Id
파라미터타입설명필수기본값
mediaItemMediaItem추가하고자 하는 미디어 아이템O없음
allowsCellularAccessBool다운로드 시 셀룰러 데이터 사용 여부Xtrue

다운로드를 할 미디어 아이템을 추가합니다. 현재 다운로드가 진행되고 있는 아이템의 수가 maxParallelDownloads 보다 적으면 바로 다운로드를 시작합니다. 셀룰러 데이터 사용을 허용하지 않으려면, allowsCellularAccess를 false로 설정하여 호출하십시오.

addListener(_)

func addListener(_ listener: DownloadManager.Listener)
파라미터타입설명
listenerDownloadManager.Listener추가할 다운로드 매니저 리스너

다운로드 매니저 리스너를 추가하기 위한 메서드입니다. 리스너를 추가한 후, 해당 리스너가 더 이상 필요 없을 떄는 반드시 removeListener(_) 메서드를 사용해서 제거하세요.

itemsByStatus(_)

func itemsByStatus(_ status: DownloadItem.Status) -> [DownloadItem]
파라미터타입설명
statusDownloadItem.Status가져오고자 하는 아이템의 다운로드 상태

특정 다운로드 상태의 아이템 목록을 가져오기 위해서 사용하는 메서드입니다.

pause(id:)

func pause(id: DownloadItem.Id)
파라미터타입설명
idDownloadItem.Id일서 정지할 다운로드 아이템의 아이디

다운로드를 일시 정지할 때 사용하는 메서드입니다.

참고: DownloadItem.id

pauseAll()

func pauseAll()

다운로드 목록에 있는 모든 아이템의 다운로드를 일시 정지하게 하는 메서드입니다.

remove(id:)

func remove(id: DownloadItem.Id)
파라미터타입설명
idDownloadItem.Id제거할 다운로드 아이템의 아이디

다운로드 목록에서 아이템을 지울 때 사용하는 메서드입니다.

참고: DownloadItem.id

removeAll()

func removeAll()

다운로드 아이템 목록을 모두 지우는 메서드입니다.

removeCompleted()

func removeCompleted()

다운로드가 완료된 아이템을 목록에서 모두 지우는 메서드입니다.

removeListener(_)

func removeListener(_ listener: DownloadManager.Listener)
파라미터타입설명
listenerDownloadManager.Listener제거할 다운로드 매니저 리스너

다운로드 매니저 리스너를 제거하기 위한 메서드입니다.

resume(id:)

func resume(id: DownloadItem.Id)
파라미터타입설명
idDownloadItem.Id계속 진행할 다운로드 아이템의 아이디

다운로드를 일시 정지한 아이템의 다운로드를 재개하는 메서드입니다.

참고: DownloadItem.id

resumeAll()

func resumeAll()

일시 정지한 모든 아이템의 다운로드를 재개하는 메서드입니다.