iOS Swift實現(xiàn)斷點續(xù)傳,Demo簡單易懂,沒有太多復雜模塊和邏輯,完整體現(xiàn)斷點續(xù)傳的原理

IMG_0687_meitu_1.jpg

ResumeFromBreakPoint

Swift實現(xiàn)斷點續(xù)傳,Demo簡單易懂,沒有太多復雜模塊和邏輯,完整體現(xiàn)斷點續(xù)傳的原理
對應的Objective-C斷點續(xù)傳:https://github.com/whde/BreakPoint
GitHub:https://github.com/whde/ResumeFromBreakPoint

/*Objective-C*/
pod 'BreakPoint', '~> 1.0.1'

WhdeBreakPoint

簡單的網(wǎng)絡請求隊列管理類,簡單的管理,不做太多復雜處理

/*創(chuàng)建請求,添加請求到數(shù)組中
  WhdeSession請求失敗,取消請求等需要從數(shù)組中移除*/
static func asynDownload(urlStr:NSString, progress:ProgressBlock, success:SuccessBlock, failure:FailureBlock) ->WhdeSession
/*取消請求,移除數(shù)組中對應的請求*/
static func cancel(urlStr:String)
/*暫停,即為取消請求*/
static func pause(urlStr:String)

WhdeFileManager

斷點續(xù)傳專用的文件管理

/*根據(jù)NSURL獲取存儲的路徑,文件不一定存在
  文件名為Url base64轉換*/
static func filePath(url:NSURL) -> String
/*獲取對應文件的大小*/
static func fileSize(url:NSURL) -> UInt64
/*根據(jù)url刪除對應的文件*/
static func deleteFile(url:NSURL) ->Bool

WhdeSession

網(wǎng)絡收發(fā)

/*創(chuàng)建請求,開始下載,設置已經(jīng)下載的位置*/
func asynDownload(urlStr:NSString, progress:ProgressBlock, success:SuccessBlock, failure:FailureBlock, callCancel:CallCancel) ->WhdeSession 
/*取消下載*/
func cancel() -> Void
/*暫停下載即為取消下載*/
func pause() -> Void 
/*出現(xiàn)錯誤,取消請求,通知失敗*/
internal func URLSession(session: NSURLSession, didBecomeInvalidWithError error: NSError?)
/*下載完成*/
internal func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?)
/*接收到數(shù)據(jù),將數(shù)據(jù)存儲*/
internal func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData) {
     let response:NSHTTPURLResponse = dataTask.response as! NSHTTPURLResponse
     if response.statusCode == 200 {
         /*無斷點續(xù)傳時候,一直走200*/
         self.progressBlock!(progress:(Float.init(dataTask.countOfBytesReceived)/Float.init(dataTask.countOfBytesExpectedToReceive)), receiveByte: dataTask.countOfBytesReceived, allByte: dataTask.countOfBytesExpectedToReceive)
         self.save(data)
     } else if response.statusCode == 206 {
         /*斷點續(xù)傳后,一直走206*/
         self.progressBlock!(progress:((Float.init(dataTask.countOfBytesReceived+Int64.init(startFileSize))/Float.init(dataTask.countOfBytesExpectedToReceive+Int64.init(startFileSize)))), receiveByte: dataTask.countOfBytesReceived, allByte: dataTask.countOfBytesExpectedToReceive);
         self.save(data)
     }
 }
/*存儲數(shù)據(jù),將offset標到文件末尾,在末尾寫入數(shù)據(jù),最后關閉文件*/
func save(data:NSData) -> Void

使用

    var urlStr: String?="http://dlsw.baidu.com/sw-search-sp/soft/2a/25677/QQ_V4.1.1.1456905733.dmg"
    /*開始下載
      繼續(xù)下載*/
    @IBAction func start(sender: AnyObject) {
        
        WhdeBreakPoint.asynDownload(urlStr!, progress: { (progress, receiveByte, allByte) in
            self.progressView.progress = progress
            self.progressLabel.text = "\(Int.init(progress*100))%"
            }, success: { (filePath) in
                print("success:"+(filePath as String))
        }) { (filePath) in
            print("success:"+(filePath as String))
        }
    }
    
    /*根據(jù)Url暫停*/
    @IBAction func pause(sender: AnyObject) {
        WhdeBreakPoint.pause(urlStr!)
    }
    /*根據(jù)Url去刪除文件*/
    @IBAction func deleteFile(sender: AnyObject) {
        WhdeFileManager.deleteFile(NSURL.init(string: urlStr!)!)
    }
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市城榛,隨后出現(xiàn)的幾起案子偎快,更是在濱河造成了極大的恐慌官卡,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宇整,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機宣脉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剔氏,“玉大人塑猖,你說我怎么就攤上這事〗轵龋” “怎么了萌庆?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長币旧。 經(jīng)常有香客問我践险,道長,這世上最難降的妖魔是什么吹菱? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任巍虫,我火速辦了婚禮,結果婚禮上鳍刷,老公的妹妹穿的比我還像新娘占遥。我一直安慰自己,他們只是感情好输瓜,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布瓦胎。 她就那樣靜靜地躺著,像睡著了一般尤揣。 火紅的嫁衣襯著肌膚如雪搔啊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天北戏,我揣著相機與錄音负芋,去河邊找鬼。 笑死嗜愈,一個胖子當著我的面吹牛旧蛾,可吹牛的內(nèi)容都是我干的莽龟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼锨天,長吁一口氣:“原來是場噩夢啊……” “哼毯盈!你這毒婦竟也來了?” 一聲冷哼從身側響起病袄,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤奶镶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后陪拘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厂镇,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年左刽,在試婚紗的時候發(fā)現(xiàn)自己被綠了捺信。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡欠痴,死狀恐怖迄靠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喇辽,我是刑警寧澤掌挚,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站菩咨,受9級特大地震影響吠式,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抽米,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一特占、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧云茸,春花似錦是目、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亡容,卻和暖如春嗤疯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背萍倡。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工身弊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辟汰,地道東北人列敲。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓阱佛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親戴而。 傳聞我的和親對象是個殘疾皇子凑术,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容