Slide 1

Slide 1 text

J04Ҏ߱ͷ /FUXPSL3FBDIBCJMJUZ 0UFNBDIJTXJGU

Slide 2

Slide 2 text

7*4*545FDIOPMPHJFTגࣜձࣾॴଐ ʢΦϑΟε͸ؙͷ಺ʣ TIJ[!TU[O TIJ[ ͣ͠ !TIJ[ TU[O TIJ[ ։ൃܦݧݴޠ 4XJGU,PUMJO+BWBTDSJQU1)1$+BWB(Pʜ

Slide 3

Slide 3 text

ΞϓϦར༻؀ڥ͕֦େ wϚϧνϓϥοτϑΥʔϜ wެڞແྉ8Jpͷීٴ΍̑(ͷొ৔ ωοτϫʔΫͷ઀ଓঢ়ଶͷมԽ΋େ͖͘

Slide 4

Slide 4 text

4$/FUXPSL3FBDIBCJMJUZ w4ZTUFN$POpHVSBUJPOGSBNFXPSLͷΠϯ λʔϑΣΠε wݱࡏͷ/FUXPSLͷઃఆ΍ର৅ϗετ 8Jpͳ Ͳ ΁઀ଓͰ͖Δ͔Ͳ͏͔Λ֬ೝ͢Δ͜ͱ͕ Ͱ͖Δ https://developer.apple.com/documentation/systemconfiguration/scnetworkreachability-g7d

Slide 5

Slide 5 text

3FBDIBCJMJUZTXJGU w"QQMF͕ఏڙ͍ͯ͠ΔαϯϓϧίʔυΛݩʹ ͨ͠ωοτϫʔΫ઀ଓঢ়گΛ֬ೝ͢ΔϥΠ ϒϥϦ wΫϩʔδϟ΍/PUJpDBUJPOͰݱࡏͷ઀ଓঢ়گ Λ֬ೝͰ͖Δ https://github.com/ashleymills/Reachability.swift

Slide 6

Slide 6 text

3FBDIBCJMJUZTXJGU https://github.com/ashleymills/Reachability.swift //declare this property where it won't go out of scope relative to your listener let reachability = Reachability()! reachability.whenReachable = { reachability in if reachability.connection == .wifi { print("Reachable via WiFi") } else { print("Reachable via Cellular") } } reachability.whenUnreachable = { _ in print("Not reachable") } do { try reachability.startNotifier() } catch { print("Unable to start notifier") }

Slide 7

Slide 7 text

3FBDIBCJMJUZͷޡղ let reachability = Reachability()! if reachability.connection == .wifi { print("ϦϞʔτ௨৴ͯ͠ը૾Λऔಘ") } else { print(“ϩʔΧϧΩϟογϡΛ࢖͏") }

Slide 8

Slide 8 text

3FBDIBCJMJUZͷޡղ “Always attempt to make a connection. Do not attempt to guess whether network service is available, and do not cache that determination.” https://developer.apple.com/library/archive/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/WhyNetworkingIsHard/WhyNetworkingIsHard.html#//apple_ref/doc/ uid/TP40010220-CH13-SW3 ઀ଓΛࢼΈΔલʹνΣοΫΛͯ͠͸͍͚ͳ͍

Slide 9

Slide 9 text

3FBDIBCJMJUZͷਖ਼͍͠࢖͍ํ Important: The SCNetworkReachability API is not intended for use as a preflight mechanism for determining network connectivity. You determine network connectivity by attempting to connect. If the connection fails consult the SCNetworkReachability API to help diagnose the cause of the failure. https://developer.apple.com/library/archive/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/WhyNetworkingIsHard/WhyNetworkingIsHard.html#//apple_ref/doc/ uid/TP40010220-CH13-SW3 ·ͣ͸઀ଓΛࢼͯ͠Έͯ ࣦഊͨ͠ͱ͖ͷݪҼΛಛఆ͢ΔͨΊʹ࢖͏

Slide 10

Slide 10 text

ͨͩɻɻɻ ࠁʑͱมԽ͢Δ ωοτϫʔΫͷ઀ଓঢ়گΛߟྀͯ͠ ਖ਼࣮͘͠૷͢Δͷ͸೉͍͠

Slide 11

Slide 11 text

XBJUT'PS$POOFDUJWJUZ https://developer.apple.com/documentation/foundation/urlsessionconfiguration/2908812-waitsforconnectivity wJ04Ͱొ৔ w઀ଓʹࣦഊͨ͠৔߹ɺ࠶઀ଓ͞Εͨ࣌ʹࣗ ಈͰϦΫΤετΛ࠶ૹͯ͘͠ΕΔ wඞཁͳ઀ଓঢ়گΛߟྀͯ͘͠ΕΔ wόοςϦʔͷফඅʹ΋ྑ͍

Slide 12

Slide 12 text

ઃఆํ๏ λΠϛϯά͸63-4FTTJPOͷΠϯελϯεੜ੒લ let configuration = URLSessionConfiguration.default configuration.waitsForConnectivity = true let session = URLSession(configuration: configuration) λΠϜΞ΢τΛઃఆ͢Δ σϑΥϧτ͸̍िؒ configuration.timeoutIntervalForResource = 600 // 10෼

Slide 13

Slide 13 text

ઃఆํ๏ EFMFHBUFͰ࠶઀ଓ࣌ͷΠϕϯτΛड͚औΔ let session = URLSession(configuration: configuration, delegate: delegate, delegateQueue: nil) 63-4FTTJPO͸EFMFHBUFΛڧࢀর͢Δ “The session object keeps a strong reference to the delegate until your app exits or explicitly invalidates the session. If you don’t invalidate the session, your app leaks memory until it exits.” session.invalidateAndCancel()

Slide 14

Slide 14 text

ͨͩɻɻɻ ༗ޮͳͷ͸ϦΫΤετ࣌ʹ઀ଓ͕ͳ͘࠶઀ଓͨ࣌͠ ⽐ ϦΫΤετ࣌ʹ͸੒ޭͨ͠΋ͷͷ ్தͰ઀ଓ͕੾Εͯ͠·ͬͨ৔߹ʹ͸ ࠶ૹͯ͘͠Εͳ͍ NSURLErrorNetworkConnectionLost 1005)

Slide 15

Slide 15 text

ରॲ๏ 63-4FTTJPOͷڍಈΛཧղ͢Δ https://developer.apple.com/library/archive/qa/qa1941/_index.html#//apple_ref/doc/uid/DTS40017602 Ϩεϙϯε͕มΘΔϦΫΤετ 1045ͳͲ ͷ৔߹ ঢ়ଶ͕ෆ໌ͳͷͰ࠶ૹ͠ͳ͍ Ͱ͖ͳ͍ Ϩεϙϯε͕͍ͭ΋ಉ͡ϦΫΤετ (&5ͳͲ ͷ৔߹ 63-4FTTJPO͕ࣗಈͰ࠶ૹͯ͘͠ΕΔ͜ͱ͕͋Δ

Slide 16

Slide 16 text

ରॲ๏ ࣮૷ͷํ਑ https://developer.apple.com/library/archive/qa/qa1941/_index.html#//apple_ref/doc/uid/DTS40017602 Ϩεϙϯε͕มΘΔϦΫΤετ 1045ͳͲ ͷ৔߹ ݸʑͷϦΫΤετΛ*%ͳͲͰಛఆͯ͠ɺݸʑʹରԠ͢Δ Ϩεϙϯε͕͍ͭ΋ಉ͡ϦΫΤετ (&5ͳͲ ͷ৔߹ ୯७ͳϦτϥΠॲཧ͕Մೳɻڞ௨ͷ࣮૷Ͱରॲɻ ˞લఏͱͯ͠ਖ਼͍͠)551ϝιουΛ࢖༻͢Δ ɹؒҧ͍ͬͯΔ৔߹͸αʔόʔଆͰରॲ͢Δํ͕ద੾

Slide 17

Slide 17 text

ଞͷ໰୊ ϞόΠϧσʔλ௨৴ͷ࢖༻Մ൱͸ϑϥάͰ൑ఆͰ͖ͳ͍ BMMPXT$FMMVMBS"DDFTTϓϩύςΟ $BQUJWF1PSUBM໰୊ ެڞͷແྉ8Jp઀ଓ࣌ͷϩάΠϯϖʔδ /81BUI.POJUPS J04Ҏ߱ IUUQTRJJUBDPNTIJ[JUFNTBFDGBGBE ʲ4XJGU J04ʳJ04Ҏ߱ͷ/FUXPSL3FBDIBCJMJUZ

Slide 18

Slide 18 text

͋Γ͕ͱ͏͍͟͝·ͨ͠