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
500
TestFlightの ProvisioningProfileを使って、 InHouseライクなipaを作る
hikarusato
0
1.7k
AppStoreで最新バージョン以外のiOSアプリをDownloadする方法
hikarusato
22
10k
Other Decks in Technology
See All in Technology
Technical Project Manager の役割とやりがい、少しだけ AI
yoshiiryo1
0
510
AIコーディングはじめました
miso
0
120
eBPF 簡介 2026 版
shunghsiyu
0
110
Agent 活用環境の構築・運用のための AWS サービスのご紹介/agentcore-for-building-and-operating-agents
ren8k
1
310
LLMの知識とAIエージェント
happysamurai294
0
150
新米を「売り越さない」、Aurora DSQLで作る在庫ゼロ死守の限定ドロップEC
yama3133
0
130
自律的なチームを作るためにTechPMがやらないこと
ny7760
0
390
基本から分かる!AWSセキュリティ運用の考え方と任せ方
cmusudakeisuke
1
310
Consistency for mere mortals - A gentle guide to consistency
ufried
0
110
Obsidian Vault Architectures
x5gtrn
PRO
0
230
AIがGISを代替する日:〜すべてをAIが創る時代に、私たちがFOSS4Gに関わる意味〜
lehupa
0
170
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
0
6.3k
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
510
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
330
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
730
Automating Front-end Workflow
addyosmani
1370
210k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
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 ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠