๊ฐœ๋ฐœ ์‚ฝ์งˆ๊ธฐ/iOS

[iOS]BackgroundTasks ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, task ์‹คํ–‰, ์ค‘๋‹จ ํ…Œ์ŠคํŠธํ•˜๊ธฐ.

๋ ˆ๋ชฌํ‚ด๐Ÿ‹ 2020. 2. 24. 10:45

์•ˆ๋…•ํ•˜์„ธ์š”, ๋ ˆ๋ชฌํ‚ด์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜๋„ ์ €๋Š” BackgroundTasks ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์จ๋ณด๋ ค๊ณ  ๋ฌดํ•œ ์‚ฝ์งˆ ์ค‘์ด์—์š”..ใ…Žใ…Ž

๊ทธ ์ค‘ task๋ฅผ ์‹คํ–‰/์ค‘๋‹จํ•˜๋Š” ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ดค์–ด์š”.

 

1.  ์‹คํ–‰ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ธฐ

1. BGTaskScheduler์—๊ฒŒ task๋ฅผ submitํ•˜๋Š” ์ฝ”๋“œ ์‹คํ–‰.

2. ๊ทธ ๋‹ค์Œ ์‹œ์ ์— break point ์žก๊ธฐ

3. break ํฌ์ธํŠธ๊ฐ€ ๊ฑธ๋ฆฌ๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ด ์ž…๋ ฅํ•˜๊ธฐ.

4. ์•ฑ์„ ๋‹ค์‹œ ๊ตฌ๋™ ์‹œํ‚ค๊ธฐ. (๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฝ์šฐ, ์•ฑ์„ ๋‹ค์‹œ foreground๋กœ ์˜ฌ๋ฆฌ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค! ์™œ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋„ค์š”... ์ €๋งŒ ๊ทธ๋Ÿฐ ๊ฑธ๊นŒ์š”.)

 

๋ฐ˜๋“œ์‹œ ์‹ค ๊ธฐ๊ธฐ์—์„œ ์‹คํ–‰์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋””๋ฒ„๊ทธ ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉํ•ด๋‹ฌ๋ผ๊ณ  ๊ฒฝ๊ณ ๊ฐ€ ์žˆ๋„ค์š” 

 

e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateLaunchForTaskWithIdentifier:@"Info.plist์— ๋“ฑ๋กํ•œ ํƒœ์Šคํฌ Identifier"]

 

์ž˜ ์ˆ˜ํ–‰๋˜๋ฉด ์ฝ˜์†”์— ์•„๋ž˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋œจ๋ฉด์„œ ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค. ํƒœ์Šคํฌ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณณ์—์„œ BP๋„ ์žกํž™๋‹ˆ๋‹ค.

Simulating launch for task with identifier ์•„๊นŒ ์‹คํ–‰ ์‹œํ‚จ ํƒœ์ŠคํŠธ Identifier

Starting simulated task: <BGAppRefreshTask: ์•„๊นŒ ์‹คํ–‰ ์‹œํ‚จ ํƒœ์ŠคํŠธ Identifier>

 

2. ํƒœ์Šคํฌ ์ˆ˜ํ–‰ ๋ฉˆ์ถ”๊ธฐ

1. ํ…Œ์ŠคํŠธ ํ•  ํƒœ์Šคํฌ ๋ธ”๋ก ๋‚ด๋ถ€์— ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ ๊ฑธ๊ธฐ

2. ํƒœ์Šคํฌ๋ฅผ ์‹คํ–‰ ์‹œํ‚ค๊ธฐ (์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‹คํ–‰ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด์š”)

3. ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๊ฐ€ ๊ฑธ๋ฆฌ๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ด ์ž…๋ ฅํ•˜๊ธฐ.

e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateExpirationForTaskWithIdentifier:@"๋“ฑ๋กํ•œ Task Identifier"]

 

 

๋ง ์•ˆ๋“ฃ๋Š” ๋ ˆ๋ชฌํ‚ด์€ ์‹œ๋ฎฌ์—์„œ ๋Œ๋ ค๋ณด์•˜์ง€๋งŒ ์•ˆ๋œ๋‹ค๋Š” ์‘๋‹ต์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค ใ…‹ใ…‹

 

+ ์ด ๋ฐฉ๋ฒ•์„ ํ•œ์ฐธ ์ฐพ์•˜๋Š”๋ฐ... ๋ฐ”๋กœ ์•„๋ž˜ ๋งํฌ์— ์žˆ๋”๋ผ๊ตฌ์š”? ใ…‹ใ…‹ ์™œ ์ €๋Š” ๋ชป๋ณด๊ณ  ํ•œ์ฐธ ์‚ฝ์งˆ์„ ํ•˜๊ณ  ์•ˆ๋œ๋‹ค๊ณ  ํ–ˆ๋Š”์ง€.... ๋ฏผ๋ง์“ฐ....

https://developer.apple.com/documentation/backgroundtasks/starting_and_terminating_tasks_during_development

 

Starting and Terminating Tasks During Development | Apple Developer Documentation

Article Starting and Terminating Tasks During Development Use the debugger during development to start tasks and to terminate them before completion. OverviewThe delay between the time you schedule a background task and when the system launches your app to

developer.apple.com