Upgrade to Pro — share decks privately, control downloads, hide ads and more …

15分でわかる バックグラウンドアップロード

yimajo
September 17, 2017

15分でわかる バックグラウンドアップロード

iosdc2017 の発表資料です

yimajo

September 17, 2017
Tweet

More Decks by yimajo

Other Decks in Technology

Transcript

  1. ΞϓϦ J04 EFMFHBUFͱͯ͠Πϯελϯε౉͢ EFMFHBUFͷϝιουݺͼग़͠ σʔϞϯϓϩηε Ξοϓϩʔυ͢ΔϑΝΠϧ w ΞϓϦ͕όοΫάϥ΢ϯυͷঢ়ଶͰ΋ Ξοϓϩʔυ͢ΔͨΊɺJ04͸σʔϞϯ ϓϩηεʹ௨৴Λ೚ͤΔ

    ࢀߟ<ॻ੶>্Λ໨ࢦ͢ϓϩάϥϚʔͷͨΊͷJ1IPOFΞϓϦ։ൃςΫχοΫJ04ฤ w σʔϞϯ͸ϑΝΠϧύεʹΞΫηε ͦ͠ͷϑΝΠϧΛΞοϓϩʔυ͢Δ w ׬ྃ௨஌͸σʔϞϯ͕EFMFHBUFϝ ιουΛݺͼग़͢
  2. /// - Parameter: /// - fileURL: Ξοϓϩʔυ͢ΔσʔλΛϩʔΧϧͰϑΝΠϧԽͨ͠URL /// - identifier:

    ϢχʔΫͳID func upload(fileURL: URL, identifier: String) { let config = URLSessionConfiguration.background(withIdentifier: identifier) let session = URLSession(configuration: config, delegate: self, delegateQueue: nil) let request = makeRequest(with: fileURL) let task = session.uploadTask(with: request, fromFile: fileURL) task.resume() } // 1: URLSessionConfigurationΛ࡞੒ // 2: URLSessionΛ࡞੒ // 3: URLRequestΛ࡞੒(ϦΫΤετύϥϝʔλΛ૊ΈཱͯΔͨΊϚϧνύʔτͳURLRequestΛ࡞ͬͯฦ͢) // 4: URLSession͔ΒUploadTaskΛऔΓग़͢ʢΞοϓϩʔυ͢ΔϑΝΠϧͷ৔ॴ͕ඞཁʣ Ξοϓϩʔυͷखଓ͖
  3. /// Ξοϓϩʔυਐḿ࣌ʹݺͼग़͞ΕΔ func urlSession(_ session: URLSession, task: URLSessionTask, didSendBodyData bytesSent:

    Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64) { /// ΞοϓϩʔυࡁΈͷbyte਺ͰਐḿΛͱΔ… /// task͔ΒΩϟϯηϧͰ͖Δ… } /// Ξοϓϩʔυ׬ྃ࣌ʹݺͼग़͞ΕΔ func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { /// task͔ΒεςʔλείʔυΛऔΓग़ͨ͠Γ… /// ׬ྃॲཧ… } ݺͼग़͞ΕΔ%FMFHBUF