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

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

Avatar for yimajo yimajo
September 17, 2017

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

iosdc2017 の発表資料です

Avatar for yimajo

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