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

もう怖くないバックグラウンド処理 Background Tasks のすべて - Hakoda...

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

もう怖くないバックグラウンド処理 Background Tasks のすべて - Hakodate.swift #1

Hakodate.swift #1 LT

Avatar for Kanta Oikawa

Kanta Oikawa

February 22, 2026
Tweet

More Decks by Kanta Oikawa

Other Decks in Technology

Transcript

  1. 3

  2. 4

  3. 5

  4. 6

  5. όοΫάϥ΢ϯυॲཧͷछྨͱํ๏ • Background ͰॲཧΛ։࢝͢Δ • App Refresh (BGAppRefreshTask) • Background

    Push Noti fi cation • Processing (BGProcessingTask) • Foreground Ͱ։࢝ͨ͠ॲཧΛ Background Ͱܧଓ͢Δ • UIApplication / beginBackgroundTask(expirationHandler:) • BGContinuedProcessingTask (26+) 7
  6. Background ͰॲཧΛ։࢝͢Δ App Refresh (BGAppRefreshTask) • e.g. גՁΞϓϦͰ࠷৽ͷגՁΛऔಘ • සൟʹΞΫηε͢ΔσʔλΛ࠷৽ͷঢ়ଶʹอͭ

    • ࣮ߦλΠϛϯά͸ΞϓϦͷ࢖༻ύλʔϯʹԠͯ͡γεςϜ͕ܾఆ • "࣍ճ࣮ߦ·Ͱͷ࠷খ࣌ؒ" ͷΈίϯτϩʔϧՄೳ 8
  7. Background ͰॲཧΛ։࢝͢Δ Background Push Noti fi cation • e.g. χϡʔεΞϓϦͷ଎ใهࣄ

    • ཁ͢Δʹ Remote Push Noti fi cation • Push ϕʔεͰσʔλΛߋ৽
 App Refresh ͸ Fetch ϕʔεͰσʔλΛߋ৽ • Push Noti fi cation Λड͚औͬͨޙͷॲཧ͕ଈ࣮࣌ߦ͞ΕΔอূ͸ͳ͍ 9
  8. Background ͰॲཧΛ։࢝͢Δ Processing (BGProcessingTask) • e.g. σʔλϕʔεͷ੔ཧ • Ϣʔβʔ͕σόΠεΛ࢖༻͍ͯ͠ͳ͍ؒʹ࣮ߦ͞ΕΔ •

    Ϣʔβʔ͕σόΠεͷ࢖༻Λ࢝ΊΔͱఀࢭ͞ΕΔ • ਺෼͔͔Δॲཧ΋࣮ߦͰ͖Δ͕ɺγεςϜʹΑΓதஅ͞ΕΔՄೳੑ͕͋Δ • ωοτϫʔΫ઀ଓঢ়ଶɺిݯ઀ଓঢ়ଶΛ࣮ߦ৚݅ͱͯ͠ࢦఆͰ͖Δ 10
  9. Foreground Ͱ։࢝ͨ͠ॲཧΛ Background Ͱܧଓ͢Δ UIApplication / beginBackgroundTask(expirationHandler:) • e.g. ঢ়ଶͷมߋ,

    σʔλϕʔεͷ੾அ • γεςϜ͕։࢝ͨ͠ॲཧΛɺ BackgroundʹભҠͯ͠΋ܧଓͯ͠׬ྃͤ͞Δ 11
  10. Foreground Ͱ։࢝ͨ͠ॲཧΛ Background Ͱܧଓ͢Δ BGContinuedProcessingTask (26+) • e.g. InstagramͷετʔϦʔΛ౤ߘ •

    Ϣʔβʔ͕։࢝ͨ͠ॲཧΛBackgroundʹભҠͯ͠΋ܧଓͯ͠׬ྃͤ͞Δ • ਐḿ͕Live ActivityͰදࣔ͞ΕΔ 12
  11. όοΫάϥ΢ϯυॲཧΛ࣮ߦ (App Refresh, Processing) Task ID Λࢦఆͯ͠λεΫΛεέδϡʔϧ private func scheduleAppRefresh()

    { let request = BGAppRefreshTaskRequest(identifier: appRefreshTaskIdentifier) request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) do { try BGTaskScheduler.shared.submit(request) print("Scheduled app refresh successfully") } catch { print("Failed to schedule app refresh: \(error)") } } 16
  12. App Refresh ͱ Processing Λσόοά 1. Xcode Ͱ Run Destination

    ʹ࣮ػΛબ୒ 2. Run ͯ͠λεΫΛεέδϡʔϧ 3. Foreground Ͱ Pause program execution ϘλϯΛԡ͢ 4. Home Screen ʹ໭ΔͳͲͯ͠ Background ʹભҠͤ͞Δ 5. LLDBͰҎԼΛ࣮ߦʢൃՐ͍ͤͨ͞λεΫͷTask IDΛࢦఆ͢Δʣ
 e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateLaunchForTaskWithIdenti fi er:@"com.kantacky.BackgroundTasksSample .refresh"] 17
  13. ࣮ࡍʹ΍ͬͯΈͨ ໰୊ͱղܾࡦ • ӡΑ۪͘௚ʹ࣮ߦ͞Εͯɺ࣍ճ࣮ߦ·Ͱͷ࠷খ࣌ؒ͝ͱʹ௨஌͕དྷͯ͏͍͟ • ࣍ճ࣮ߦ·Ͱͷ࠷খ࣌ؒΛେ͖͘͢Δɺ௨஌ର৅ΛߜΔ • Background Push Noti

    fi cation Λ࢖͏ • αʔόʔͰϑΟʔυΛFetchͯ͠ɺ৽ணهࣄΛϦϞʔτ௨஌ • ௨஌ΛఘΊͯɺApp RefreshͰϑΟʔυΛ࠷৽ͷঢ়ଶʹอ͚ͭͩʹͱͲΊΔ 19