TCBlobDownloadSwift
Powerful file downloads for iOS 7+ with NSURLSession in Swift.
TCBlobDownloadSwift makes it easy to quickly download one or several large file(s) from your backend or the Internet right into your app. Give it an URL, a directory (or not, it can also download into the user's tmp folder), a name (or not, it can also give your file a default name), and it will take care of everything.
See the Usage section for examples.
Features
- File downloads with
NSURLSession
(including background downloads/pause/resume) - File management (download directory + customizable filename)
- Download tasks configuration (cookies, timeout, number of concurrent connections...)
- Progression/Completion Protocol (delegate style)
- Progression/Completion Closures
- Complete example project with concurrent file downloading
Requirements
- iOS 7.0+ / Mac OS X 10.9+
Installation
CocoaPods
Add the following to your Podfile:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'TCBlobDownloadSwift', '~> 0.1.0'
And run:
$ pod install
Here is a helpful article about setting up your project to use CocoaPods with Swift.
Import as an embedded framework
- Drag and drop
TCBlobDownloadSwift.xcodeproj
from the Finder to your opened project's file navigator. - Project's Target -> Build Phases -> Target Dependencies -> add
TCBlobDownloadSwift.framework
. - Click on the + button at the top left of the panel and select "New Copy Files Phase". Set the "Destination" to "Frameworks", and add
TCBlobDownloadSwift.framework
.
Import source files
For iOS 7 and other targets which do not support embedded frameworks, copy the source files (Source/*.swift}
) into your project.
Usage
Before checking the iOS example project, here is how TCBlobDownloadSwift works in a few lines of code:
Closures
Coming!
Delegate
import TCBlobDownloadSwift
// Here is a simple delegate implementing TCBlobDownloadDelegate.
class DownloadHandler: NSObject, TCBlobDownloadDelegate {
init() {}
func download(download: TCBlobDownload, didProgress progress: Float, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
println("\(progress*100)% downloaded")
}
func download(download: TCBlobDownload, didFinishWithError error: NSError?, atLocation location: NSURL?) {
println("file downloaded at \(location)")
}
}
let fileURL = NSURL(string: "http://some.huge/file.mp4")
let download = TCBlobDownloadManager.sharedInstance
.downloadFileAtURL(fileURL!, toDirectory: nil, withName: nil, andDelegate: DownloadHandler())
Roadmap
- Documentation set
- Full background download example
- File upload