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
1.9k
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
130
TestFlightの ProvisioningProfileを使って、 InHouseライクなipaを作る
hikarusato
0
1.7k
AppStoreで最新バージョン以外のiOSアプリをDownloadする方法
hikarusato
22
10k
Other Decks in Technology
See All in Technology
AI時代、データエンジニアが一番おもろい
genshun9
0
670
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
5
380
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
cscengineer
PRO
0
120
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
120
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
120
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
1
2.4k
Railsのように考える: See through the Master
snoozer05
PRO
4
1.1k
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
220
AIによるクリエイティブ生成を行う上での試行錯誤
plaidtech
PRO
0
160
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.3k
あけおめLINE 傾向とその対策
nasa9084
0
180
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
240
Featured
See All Featured
How to make the Groovebox
asonas
2
2.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Paper Plane
katiecoart
PRO
4
53k
Being A Developer After 40
akosma
91
590k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Deep Space Network (abreviated)
tonyrice
0
310
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Designing for Performance
lara
611
70k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
430
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Agile that works and the tools we love
rasmusluckow
331
22k
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 ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠