Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
iOSDC2025 みてねiOSアプリにおける バックグラウンドアップロード継続の挑戦
Search
HikaruSato
September 20, 2025
Technology
2.1k
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
映像変換サーバーなしで端末内でHLSを生成してライブ配信
hikarusato
0
510
TestFlightの ProvisioningProfileを使って、 InHouseライクなipaを作る
hikarusato
0
1.7k
AppStoreで最新バージョン以外のiOSアプリをDownloadする方法
hikarusato
22
10k
Other Decks in Technology
See All in Technology
AIで選択肢が広がった組織設計の理想と現実
konifar
16
7.5k
リアクションエンジニア ― 小さなリアクションから、話しかけやすい組織をつくる ―
ryuguyana
1
100
AIコーディングはじめました
miso
0
130
Flutter Widget Previewerで始めるUIプレビューとVRTの自動化
sakusaku3939
0
190
Technical Project Manager の役割とやりがい、少しだけ AI
yoshiiryo1
0
550
Content Mapper APIの応用例~CSS Modules、言語ファイル~
uhyo
2
490
基本から分かる!AWSセキュリティ運用の考え方と任せ方
cmusudakeisuke
1
340
[General] 개발자로 해외 기업에서 일하기
skydoves
1
250
新米を「売り越さない」、Aurora DSQLで作る在庫ゼロ死守の限定ドロップEC
yama3133
0
140
AI時代、つくる力を自分たちの手に。 ──電通×KAG、アジャイルとAI駆動開発で挑む開発の変革
yuukiyo
3
450
AIテスト自動化と評価駆動開発EDD
happysamurai294
0
130
今から始めるAWS環境の暗号移行 - ポスト量子時代に備える
sato4mi
0
150
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
600
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
320
Ruling the World: When Life Gets Gamed
codingconduct
0
430
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
890
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
810
A Tale of Four Properties
chriscoyier
163
24k
Git: the NoSQL Database
bkeepers
PRO
433
67k
Code Reviewing Like a Champion
maltzj
529
40k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
910
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
60k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
540
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 ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠