Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iOSDC2025 みてねiOSアプリにおける バックグラウンドアップロード継続の挑戦
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
HikaruSato
September 20, 2025
Technology
1.7k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOSDC2025 みてねiOSアプリにおける バックグラウンドアップロード継続の挑戦
https://fortee.jp/iosdc-japan-2025/proposal/30a8ef80-5065-49e9-983a-3c26784f51f2
HikaruSato
September 20, 2025
More Decks by HikaruSato
See All by HikaruSato
TestFlightの ProvisioningProfileを使って、 InHouseライクなipaを作る
hikarusato
0
1.7k
AppStoreで最新バージョン以外のiOSアプリをDownloadする方法
hikarusato
22
10k
Other Decks in Technology
See All in Technology
【NRUG vol.18】KubernetesにおけるNew Relicデータ取得量削減の考え方
nrug_member
0
170
アジャイルな経理と Claude Code と経営の未来
kawaguti
PRO
3
160
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
120
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
540
就職⽀援サービスにおけるキャリアアドバイザーのシフトスケジューリング
recruitengineers
PRO
1
150
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
1.3k
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
240
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
140
AIはどのように 組織のアジリティを変えるのか?
junki
4
1k
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
1.3k
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
280
10年間のブログ発信を振り返って見えたWebアプリケーションエンジニアとしての軌跡
stefafafan
0
170
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Visualization
eitanlees
152
17k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
Designing for Performance
lara
611
70k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
Scaling GitHub
holman
464
140k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
A Tale of Four Properties
chriscoyier
163
24k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Transcript
©MIXI 1 ΈͯͶiOSΞϓϦʹ͓͚Δ όοΫάϥϯυΞοϓϩʔυܧଓͷઓ iOSDC 2025
©MIXI 2 ࣗݾհ • ࠤ౻ ޫ(Hikaru Sato) • גࣜձࣾMIXI ΈͯͶࣄۀຊ෦
• ՈΞϧόϜΈͯͶͷiOSΤϯδχΞ
©MIXI 3 ຊτʔΫͰ͢͜ͱ • ΈͯͶͱ • ڈ࣮ͨ͠όοΫάϥϯυΞοϓϩʔυʹ͍ͭͯ ◦ڈղܾͨ͠՝ ◦࠾༻ͨ͠ղܾҊ ◦ࠓޙΓ͍ͨ͜ͱ
• iOS26 SDKͷ׆༻ • ·ͱΊ
©MIXI 4 ΈͯͶͱ
©MIXI 5 ࢠͲͷࣸਅͱಈըΛՈʹڞ༗ͯ͠ίϛϡ χέʔγϣϯΛָͯ͠͠ΉεϚϗΞϓϦ
©MIXI 6 ࣸਅɾಈըΛɺແྉɾແ੍ݶʹڞ༗Ͱ͖Δ
©MIXI 7 • ΈͯͶʹ͓͍ͯʮࣸਅͱಈըΛՈʹڞ༗͢ ΔʯʢΞοϓϩʔυʣͱͯॏཁ • ʮΞοϓϩʔυମݧͷվળʯ͕ࠓճͷςʔϚ
©MIXI 8 ڈղܾͨ͠՝
©MIXI 9 • ը૾ɾಈըͷΞοϓϩʔυதʹόοΫάϥϯυભҠ͢ Δͱ30ඵͰΞοϓϩʔυ͕தஅ͞Εͯ͠·͏ ◦ iOSͷ beginBackgroundTask ͷ੍ݶ ◦
ͦͷͨΊΞοϓϩʔυதʹΞϓϦΛ։͖ଓ͚͍ͯΔඞཁ͕͋Δ ◦ ΈͯͶͰҰʹଟ͘ͷը૾ɾಈըΛΞοϓϩʔυ͢Δ͕͋ ΔͨΊɺ͜ͷ੍ݶͰΞοϓϩʔυ͕தஅ͞Ε͍͢ ՝
©MIXI 10 Ξοϓϩʔυதஅ͞Εͨ࣌
©MIXI 11 BGProcessingTaskͷ༷͕ΈͯͶͱ߹Θͳ͔ͬͨ • 1ճͷ࣮ߦ͕࣌ؒ5ఔ • ͍ಈըͷΞοϓϩʔυ͕ऴΘΒͳ͍ • ͕ΞΠυϧঢ়ଶ •
Ξοϓϩʔυྃޙͷ௨͕ਂʹඈΜͰ͠·͏ݒ೦ × ղܾҊ1 BGProcessingTask https://developer.apple.com/documentation/backgroundtasks/bgprocessingtask
©MIXI 12 • Widget ExtensionͷҰछͰ͋ΔͨΊΞϓϦଆͷॲཧΛܧଓ͢Δ͜ ͱͰ͖ͳ͔ͬͨ × ղܾҊ2 Live Activity
https://developer.apple.com/jp/design/human-interface-guidelines/live-activities
©MIXI 13 • ϓϩτλΠϓΛ࡞ͬͨͱ͜ΖUIʹPiPͷಈըૢ࡞ͷϘλϯ͕ग़ ͯ͠·͏͕όοΫάϥϯυ࣌Ξοϓϩʔυ͕ܧଓ͞Εͨ ◦ ղܾҊ3 ϐΫνϟΠϯϐΫνϟ ϓϩτλΠϓͷ࣌ͷUI
©MIXI 14 ࣮ࡍʹϦϦʔεͨ͠ػೳ
©MIXI 15 • ΞοϓϩʔυதͷόοΫάϥϯυભҠ࣌ʹUIViewΛϐΫ νϟΠϯϐΫνϟ(PiP)Ͱදࣔ͢Δ͜ͱͰΞοϓϩʔυΛܧ ଓ͢Δ ◦ ͜ͷػೳʮΈͯͶϓϨϛΞϜProʢ༗ྉϓϥϯʣʯݶఆ ◦ ຊػೳಛڐग़ئத
ϦϦʔεͨ͠ػೳ
©MIXI 16 • BGProcessingTaskҊ(ਂͷॆిதͷΞοϓϩʔυ)ͷࣾಈ࡞ ϨϏϡʔલʹͦͷҊ͕μϝͩͬͨ࣌ʹͲ͏͢Δ͔ΛਓͰ૬ஊ͠ ͍ͯͨ࣌ʹग़ͨΞΠσΞͷ̍ͭͩͬͨɻ ◦ ࢼ͠ʹPiPͰ࣮ͯ͠ΈͨΒόοΫάϥϯυ੍ݶΛಥഁͰ͖͍ͯͨ ◦ PiPͰదͳද͕ࣔͰ͖ͳ͔ͬͨΒదͳϩʔΧϧͷಈըΛPiPͰ࠶ੜ͠
͓ͯ͘ͳͲҊͱͯ͋ͬͨ͠ ղܾࡦ͕ੜ·Εͨഎܠ
©MIXI 17 Έ UIViewΛϏσΦ ϑϨʔϜΛදࣔ͢ΔΦϒδΣΫτ (AVSampleBufferDisplayLayer)ʹม͢Δ͜ͱͰPiPͰද͍ࣔͯ͠Δ
©MIXI 18 ࢀߟࢿྉ • uakihir0͞ΜͷGithubͷެ։ϥΠϒϥϦ ◦ https://github.com/uakihir0/UIPiPView • ϛϥςΟϒ͞Μͷ৴ίϝϯτόʔͷTech Blog
◦ https://tech.mirrativ.stream/entry/2021/11/26/114002 • iOSDC 2022 ͷTsuzukihashi͞ΜͷτʔΫ ◦ https://speakerdeck.com/tsuzuki817/dong-hua-dakeziyanai-ios- 15nopikutiyainpikutiyawoshi-tutehao-kinauiwobiao-shi-saseyou
©MIXI 19 ͔ͬͨ͠ͱ͜Ζ
©MIXI 20 • UIViewΛPiPͰදࣔ͢ΔͨΊͷ࣮ • όοΫάϥϯυભҠ࣌ʹࣗಈͰPiPΛ։࢝͢Δ •PiPͷUIͷදࣔ/੍ݶपΓ ͔ͬͨ͠ͱ͜Ζ
©MIXI 21 ͔ͬͨ͠ͱ͜Ζ UIViewΛPiPͰදࣔ͢ΔͨΊͷ࣮
©MIXI 22 ࣮ࣗମ͕͍͠ • UIViewΛϏσΦϑϨʔϜͷΦϒδΣΫτ(AVSampleBufferDisplayLayerɺ CMSampleBuffer)ʹม͢Δ࣮ • PiPΛ։࢝Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷ݅ ◦ Capability
-> BackgroundModes -> Audio, AirPlay, and Picture in Picture ◦ AVAudioSession#setCategory(.playback) ͕ඞཁ • PiP͕։࢝͞Εͳͯ͘Τϥʔ͕ฦͬͯདྷͳ͍߹͕͋Δ • ࣮ৄࡉαϯϓϧίʔυࢀর ◦ https://github.com/HikaruSato/AutoPictureInPictureUIViewExample UIViewΛPiPͰදࣔ͢ΔͨΊͷ࣮
©MIXI 23 •PiPͷUIViewʹʮin picture in picture.ʯͷΑ͏ͳจݴ͕ೖΔ •͜ΕΛճආ͢ΔͨΊAVSampleBufferDisplayLayerΛ࣋ͭ UIView#alpha = 0ʹͯ͠ಁ໌ʹ͍ͯ͠Δ
࣮͕͔ͬͨ͠ͱ͜ΖͷҰྫ
©MIXI 24 ͔ͬͨ͠ͱ͜Ζ όοΫάϥϯυભҠ࣌ʹࣗಈͰPiP Λ։࢝͢Δ
©MIXI 25 •AVPictureInPictureController#canStartPictureInPictureAutomaticallyFromI nline = true ʢόοΫάϥϯυભҠ࣌ʹࣗಈͰPiPΛ։࢝ʣ͕ಈ࡞͢Δ ͕݅Θ͔Βͳͯ͘ࢼߦࡨޡͨ͠ ◦ ݅
▪ දࣔରͷAVSampleBufferDisplayLayer͕ඳը͞Ε͍ͯΔ ▪ όοΫάϥϯυભҠલʹAVPictureInPictureController ͕ॳظԽ͞Εͯ ͍Δ ▪ AVPictureInPictureSampleBufferPlaybackDelegateͷ pictureInPictureControllerIsPlaybackPaused(_:) Γ͕ false όοΫάϥϯυભҠ࣌ʹࣗಈͰPiPΛ։࢝͢Δ
©MIXI 26 extension XXX: AVPictureInPictureSampleBufferPlaybackDelegate { public func pictureInPictureController(_ pictureInPictureController:
AVPictureInPictureController, setPlaying playing: Bool) {} public func pictureInPictureControllerTimeRangeForPlayback(_ pictureInPictureController: AVPictureInPictureController) -> CMTimeRange { .init( start: .indefinite, // 30ʹηοτ duration: .init(seconds: 60 * 60 * 24 * 30, preferredTimescale: .init(1)) ) } public func pictureInPictureControllerIsPlaybackPaused(_ pictureInPictureController: AVPictureInPictureController) -> Bool { false // ˒canStartPictureInPictureAutomaticallyFromInline = true ʢόοΫάϥϯυભҠ࣌ʹࣗಈͰPiP͕։࢝͢ΔʣͷͨΊʹfalseʹ͢Δ } public func pictureInPictureController(_ pictureInPictureController: AVPictureInPictureController, didTransitionToRenderSize newRenderSize: CMVideoDimensions) {} public func pictureInPictureController(_ pictureInPictureController: AVPictureInPictureController, skipByInterval skipInterval: CMTime) async {} } AVPictureInPictureSampleBufferPlaybackDelegateͷίʔυ
©MIXI 27 • ϧʔτͷWindowʹPiPͷUIViewΛՃ͍ͯ͠Δ ◦ ΞοϓϩʔυதΞϓϦͷͲͷը໘͔ΒόοΫάϥϯυભҠͨ͠ͱ͖Ͱ PiPΛ։࢝͢ΔͨΊ όοΫάϥϯυભҠ࣌ʹࣗಈͰPiPΛ։࢝͢Δ PiPͷView Window
©MIXI 28 ͔ͬͨ͠ͱ͜Ζ PiPͷUIͷදࣔ/੍ݶपΓ
©MIXI 29 PiPͷUI
©MIXI 30 PiPͷUI • ࠷ऴతʹফͤͳ͔ͬͨ Ұ࣌ఀࢭϘλϯɺਐḿόʔɺ×ϘλϯɺΞ ϓϦΔϘλϯʢӈ্ʣͨ͠ • Ұ࣌ఀࢭϘλϯλοϓͯ͠Կ͠ͳ͍ ◦
ͦͷڍಈʹ͍ͭͯԿ͔ରࡦ͢Δ͔ͷ͕ٞ͋ͬͨϦϦʔεޙ ಛʹʹͳ͍ͬͯͳ͍
©MIXI 31 ਅͬࠇʹͳΔ • ϩοΫ͔Βղআͨ͠ͱ͖ʹPiPͷը໘͕ਅͬࠇʹͳΔ͜ͱ͕͋Δ • ͜ͷݱΛͰ͖Δ͚ͩආ͚ΔͨΊʹPiPͷը໘ߋ৽Λ࠷1ʹ1ճ ߦ͏Α͏ʹ͍ͯ͠Δ
©MIXI 32 ੍ݶ ଞΞϓϦͰPiPΛ։࢝͢ΔͱPiP͕ଞΞϓϦͷͷͰ্ॻ͖͞ΕͯΞοϓ ϩʔυ͕ࢭ·Δ
©MIXI 33 PiPͷόοΫάϥϯυΞοϓϩʔ υͰղܾͰ͖ͳ͔ͬͨ͜ͱ
©MIXI 34 ղܾͰ͖ͳ͔ͬͨ͜ͱ • ϩοΫதͷΞοϓϩʔυ ◦ PiPදࣔதʹϩοΫ͢ΔͱΞϓϦͷϓϩηε͕Ұ࣌ఀࢭঢ়ଶʹ ͳΔ ◦ ϩοΫΛղআ͢Δͱϓϩηε͕࠶։͢Δ͕ΞοϓϩʔυλΠ
ϜΞτͯ͠͠·͏ ◦ ϩοΫޙʹ͍ͭϓϩηε͕ࢭ·Δ͔ґଘ
©MIXI 35 AppleͷϨϏϡʔରࡦ
©MIXI 36 • ػೳΛ͑ͯઆ໌ͯ͠AppleͷϨϏϡʔʹग़͢͜ͱͰٸʹReject ͞Εͳ͍Α͏ʹରࡦΛͨ͠ ◦ PiP։࢝Ϣʔβʔͷૢ࡞Ͱ։࢝͢Δඞཁ͕͋ΓɺϓϩάϥϜతʹPiP։࢝͢Δͷ AppleͷϨ ϏϡʔͰReject͞ΕΔɺͱυΩϡϝϯτʹهࡌ͕͋Δ ▪
https://developer.apple.com/documentation/avkit/adopting-picture-in-picture-in-a-custom-player#Handle-User-Initiated- Requests ◦ Ϣʔβʔͷૢ࡞͕͏ը૾ɾಈըͷΞοϓϩʔυૢ࡞ޙόοΫάϥϯυભҠͰPiPΛ։͍࢝ͯ͠ Δ͕ͦΕ͕Appleͱͯ͠OKͳͷ͔Λ೦ͷҝɺ֬ೝ͢Δ͜ͱʹͨ͠ • ϨϏϡʔͳ͘௨ͬͨ AppleͷϨϏϡʔରࡦ
©MIXI 37 ֬ೝํ๏ App Store Connect → App Review ʹؔ͢Δใ
ʹPiPͷΞοϓϩʔυػೳʹͭ ͍ͯಈը͖Ͱઆ໌ͯ͠ਃͨ͠ͱ͜Ζɺಛʹͳ͘৹͕ࠪ௨ͬͨ
©MIXI 38 αϯϓϧίʔυ
©MIXI 39 αϯϓϧίʔυ • https://github.com/HikaruSato/ AutoPictureInPictureUIViewExample • UIViewͰPiPΛදࣔ͠όοΫάϥϯυભҠ࣌ʹPiP͕ ࣗಈͰ։࢝͢ΔΑ͏ʹͨ͠࠷খݶͷίʔυྔͷαϯϓϧ ίʔυ
©MIXI 40 αϯϓϧίʔυͷಈ࡞
©MIXI 41 ࠓޙΓ͍ͨ͜ͱ
©MIXI 42 iOS26 SDKͷ׆༻ ※Xcode26 RC x iOS26 RC Ͱݕূ
©MIXI 43 • iOS26 SDK(Xcode 26)ͰForegroundͰ։࢝Ͱ͖Δ BGContinuedProcessingTask͕όοΫάϥϯυλεΫͱͯ͠ WWDCͰൃද͞Εͨ ◦ https://developer.apple.com/documentation/backgroundtasks/performing-long-running-tasks-on-ios-and-ipados
◦ https://developer.apple.com/jp/videos/play/wwdc2025/227/ • ͜ͷػೳPiPͷΞοϓϩʔυʹ͔ͳΓࣅ͍ͯͨͷͰ׆༻Ͱ͖Δ͔ Λௐࠪͨ͠ iOS26 SDKͷ׆༻
©MIXI 44 BGContinuedProcessingTask ͱ • ϑΥΞάϥϯυͰ։࢝͞ΕɺඞཁʹԠͯ͡όοΫάϥϯυͰ ࣮ߦΛܧଓͰ͖ΔόοΫάϥϯυλεΫ • ਐߦঢ়گΛϥΠϒ ΞΫςΟϏςΟʹදࣔ͠ɺϢʔβʔඞཁʹԠ
ͯ͡ΩϟϯηϧͰ͖Δ https://developer.apple.com/documentation/backgroundtasks/bgcontinuedprocessingtask
©MIXI 45 BGContinuedProcessingTask Λར༻͢ΔϝϦοτ • PiPͷΞοϓϩʔυͰͰ͖ͳ͔ͬͨϩοΫதͷΞοϓ ϩʔυ͕Մೳ
©MIXI 46 BGContinuedProcessingTask Λར༻͢ΔσϝϦοτ • େ͖ͳσϝϦοτͳ͘ɺڧ͍ͯݴ͑ BGContinuedProcessingTaskͷUI੍ݶʹґଘ͢Δͱ͜Ζ
©MIXI 47 BGContinuedProcessingTaskͷUI
©MIXI 48
©MIXI 49 λεΫྃ࣌ • ྃ͢Δͱফ͑Δ
©MIXI 50 εςʔλεόʔʹ͠·ͬͨͱ͖ ը໘ϩοΫ
©MIXI 51 BGContinuedProcessingTaskͷUI • Title, SubtitleͷΈΧελϚΠζՄೳ • ࠨଆΞϓϦͷΞΠίϯɺӈଆਐḿදࣔ
©MIXI 52 BGContinuedProcessingTaskͷUI • completedUnitCount(ਐḿ) ͕ totalUnitCountʢ߹ܭʣʹୡ͢Δ ͱɺӈଆ͕νΣοΫϚʔΫʹͳΔ
©MIXI 53 BGContinuedProcessingTaskͷUI • จࣈ৭എܠ৭ࢦఆͰ͖ͳ͍ʢͱࢥΘΕΔʣ͕߹ʹΑͬͯݟ ͮΒ͍
©MIXI 54 BGContinuedProcessingTaskͷUI • όοΫάϥϯυλεΫΛεςʔλεόʔʹด·ͬͯΔ࣌ ੨͘ͳΔ
©MIXI 55 ࣮ํ๏
©MIXI 56 Background Modesͷࢦఆ͍Βͳ͍ ଞͷBackground TaskͱҧͬͯBackground Modesͷ Capabilityඞཁͳ͠ɻԼه͕͍Βͳ͍
©MIXI 57 plistΛઃఆ • plistʹBackground Task IdentifierΛొ͢Δඞཁ͕͋Δ ◦ ଞͷBackground Taskͱಉ༷
©MIXI 58 BGTaskScheduler.shared.register(forTaskWithIdentifier: taskIdentifier, using: nil) { task in //
ϝΠϯҎ֎ͷεϨουͰಈ࡞͢Δ let task = task as! BGContinuedProcessingTask task.expirationHandler = { /* γεςϜʹΑΓλεΫ͕Ωϟϯηϧ͞Εͨ࣌ͷॲཧ */ } task.progress.totalUnitCount = 100 // ྃ task.progress.completedUnitCount = 0 // ਐḿͷ for i in 1...100 { task.progress.completedUnitCount = Int64(i) // ਐḿΛߋ৽ task.updateTitle("Processing", subtitle: "xxx%") } task.updateTitle("Completed", subtitle: "") task.setTaskCompleted(success: isCompleted) } https://developer.apple.com/documentation/backgroundtasks/performing-long-running-tasks-on-ios-and-ipados όοΫάϥϯυλεΫొͷίʔυ
©MIXI 59 do { let request = BGContinuedProcessingTaskRequest(identifier: taskIdentifier, title:
"Start", subtitle: "") // .queue λεΫϦΫΤετΩϡʔʹՃ͞ΕɺޙͰ࣮ߦ͞ΕΔ͜ͱ͕͋Δ(default) // .fail λεΫϦΫΤετΛ͙͢ʹ࣮ߦͰ͖ͳ͍߹ʹΤϥʔʹͳΔ request.strategy = .queue if BGTaskScheduler.supportedResources.contains(.gpu) { request.requiredResources = .gpu // GPUΛར༻͍ͨ͠߹ʹηοτɻ } try BGTaskScheduler.shared.submit(request) } catch { print("Failed to submit request: \(error)") } https://developer.apple.com/documentation/backgroundtasks/performing-long-running-tasks-on-ios-and-ipados όοΫάϥϯυλεΫͷ࣮ߦґཔ
©MIXI 60 GPU͏߹ XcodeͷCapabilityͰBackground GPU AccessΛՃ͢Δ
©MIXI 61 ݕূͯ͠ΈͯΘ͔ͬͨ͜ͱ
©MIXI 62 ݕূͯ͠ΈͯΘ͔ͬͨ͜ͱ • completedUnitCount(ਐḿͷ) ͕Ұఆ࣌ؒͷ͏ͪʹมԽ͕ͳ͍ ͱϓϩηε͕ऴྃ͞ΕΔ ◦ ࢭ·Δ࣌ؒෆఆ ◦
ਐḿ͕Θ͔Βͳͯ͘ॲཧΛܧଓ͢ΔͨΊʹcompletedUnitCountΛ૿͢ ͳͲͷ͕ඞཁͳ߹͕͋Γͦ͏
©MIXI 63 ݕূͯ͠ΈͯΘ͔ͬͨ͜ͱ • iOS Simulator Ͱಈ࡞͠ͳ͍ ◦ https://developer.apple.com/documentation/backgroundtasks/bgtaskscheduler/error/code/ unavailable#Discussion
◦ Documentʹॻ͍ͯ͋Δ
©MIXI 64 ݕূͯ͠ΈͯΘ͔ͬͨ͜ͱ • Swift Language Version ͕ Swift 6
ͩͱ BGTaskScheduler.shared.submit()ͰΫϥογϡ͢Δ ◦ Xcode26 RC࣌Ͱ࠶ݱɻAppleʹόάϨϙʔτࡁΈ ◦ Swift 5 ͩͱΫϥογϡ͠ͳ͍
©MIXI 65 ݕূͯ͠ΈͯΘ͔ͬͨ͜ͱ • ॲཧதͷBGContinuedProcessingTask1ΞϓϦ1ͭ·Ͱ ◦ BGTaskScheduler.shared.submit()Ͱ৽ͨͳλεΫΛsubmitͯ͠ 2ͭ։࢝͞Εͳ͍ ◦ ॲཧதͷBGContinuedProcessingTask͕1Ͱ1ͭ·Ͱͳͷ͔
ະݕূɻ
©MIXI 66 ݕূͯ͠ΈͯΘ͔ͬͨ͜ͱ • ͷόοςϦʔ͕গͳ͍࣌தஅ͞Ε͍͢ ◦ Ϧιʔε੍ͳͲΛཧ༝ʹλεΫΛऴྃ͢Δ͜ͱ͋Δͱ͍͏هࡌDocumentʹॻ͍ͯ͋Δ ◦ https://developer.apple.com/documentation/backgroundtasks/ bgcontinuedprocessingtask#overview
©MIXI 67 ݕূͯ͠ΈͯΘ͔ͬͨ͜ͱ • ࣗͷݕূͰ iOS26 ਖ਼ࣜ൛ʹΞοϓσʔτޙ BGContinuedProcessingTask Λ։࢝Ͱ͖ͳ͘ͳͬͨ ◦
Developer ForumsͰ֬ೝத ◦ https://developer.apple.com/forums/thread/801126
©MIXI 68 ݕূʹར༻ͨ͠ίʔυ https://github.com/HikaruSato/ExampleBackgroundProcess • ݕূ༻ʹ৭ʑࢼͨ͠ͷͰ͋·Γ៉ྷͰͳ͍Ͱ͢
©MIXI 69 ΈͯͶͷΞοϓϩʔυʹΈࠐΉͳΒ... ࣮ࡍʹ࠾༻͢Δ͔Ͳ͏͔ܾ·͍ͬͯͳ͍
©MIXI 70 • ΞοϓϩʔυதͷόοΫάϥϯυભҠ࣌ʹ BGContinuedProcessingTaskΛར༻͍ͨ͠ ◦ PiPͷόοΫάϥϯυΞοϓϩʔυΛସ͍ͨ͠ ΈͯͶͷΞοϓϩʔυʹΈࠐΉͳΒ...
©MIXI 71
©MIXI 72 ·ͱΊ
©MIXI 73 ൺֱ UIViewͷPiP BGContinuedProcessingTask ࣮ͷ͢͠͞ ˚ ̋ ϩοΫதͷಈ࡞ ✖
̋ UIͷࣗ༝ ̋ ✖
©MIXI 74 ·ͱΊ • ϐΫνϟΠϯϐΫνϟʹΑΓiOSΞϓϦͰόοΫάϥ ϯυͰΞοϓϩʔυͰ͖ΔΑ͏ʹͳͬͨ ◦ ͨͩ͠ϩοΫதΞοϓϩʔυ͕ࢭ·Δ • iOS26
ͷ BGContinuedProcessingTask ͰͦΕղܾ ͦ͠͏
©MIXI 75 ҰॹʹʮੈքதͷՈͷ͜͜ΖͷΠϯϑϥʯΛͭ͘Γ·ͤΜ͔ʁ https://team.mitene.us/
©MIXI 76 ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠