๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS/iOS

์•ฑ ์ƒ๋ช…์ฃผ๊ธฐ(AppLifeCycle)(2) - ํ™œ์šฉ(feat.Youtube Premium)

by Fomagran ๐Ÿ’ป 2020. 10. 20.
728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค!

 

์ €๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์•ฑ ์ƒ๋ช…์ฃผ๊ธฐ ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š”.  <- ์•ฑ ์ƒ๋ช…์ฃผ๊ธฐ ๊ฐœ๋…ํŽธ

 

์•ฑ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์˜ค๋Š˜์€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

 

์ด๋ฒˆ์—๋Š” ์•ฑ ์ƒ๋ช…์ฃผ๊ธฐ ์ค‘์—์„œ Background์ƒํƒœ์— ์žˆ๋Š” sceneDidEnterBackground(_:) ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•ด์„œ

 

์œ ํŠœ๋ธŒ ํ”„๋ฆฌ๋ฏธ์—„์ด ์–ด๋–ค ์›๋ฆฌ๋กœ ๋˜์–ด์žˆ๋Š”์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

 

Storyboard


๋จผ์ € ํ”„๋ฆฌ๋ฏธ์—„์ธ์ง€ ๋…ธ๋ฉ€์ธ์ง€๋ฅผ ๊ตฌ๋ณ„ํ•  ๋ ˆ์ด๋ธ”๊ณผ ๋…ธ๋ฉ€,ํ”„๋ฆฌ๋ฏธ์—„ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๊ฐ๊ฐ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

 

๋˜ ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์Œ์•… ์žฌ์ƒ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์Œ์•…์„ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ๋„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

 

 

ViewController


๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ๋ ˆ์ด๋ธ”๊ณผ ๋ฒ„ํŠผ๋“ค์„ ๋ชจ๋‘ ์—ฐ๊ฒฐํ•ด์ฃผ๊ณ  action๋„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

ํ”Œ๋ ˆ์ด๋ฒ„ํŠผ์˜ ์ƒํƒœ์™€ ๋กœ๊ทธ์ธ์ƒํƒœ๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜๋„ ๊ฐ๊ฐ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

ํ”Œ๋ ˆ์ด๋ฒ„ํŠผ ์ƒํƒœ์™€ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์ด์šฉํ•ด ๊ฐ ๋ฒ„ํŠผ์˜ ์•ก์…˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.  

์ด๋ฏธ์ง€ ์•„์ด์ฝ˜ ์›ํ•˜๋Š” ์•„์ด์ฝ˜์„ ๊ตฌํ•ด์„œ Asset์— ๋„ฃ์–ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ๋‹ค์Œ์œผ๋ก  ์Œ์•…์„ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์–ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋จผ์ € AVFoundation์„ import ํ•ด์ค€ ๋’ค

AVAudioPlayer๋ฅผ ๋‹ด๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

๋ทฐ๋””๋“œ๋กœ๋“œ๋กœ ๊ฐ€์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฎค์งํ”Œ๋ ˆ์ด ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

 

1
2
3
4
5
6
7
8
 let song = Bundle.main.path(forResource: "Gang Gang Schiele", ofType: "mp3")
        
        do {
            musicPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: song!))
            try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback,mode: AVAudioSession.Mode.default,options: AVAudioSession.CategoryOptions.mixWithOthers)
        } catch {
            print("error")
        }

 

let song = Bundle.main.path(forResource: "์›ํ•˜๋Š” ๋…ธ๋ž˜ ์ด๋ฆ„", ofType: "ํƒ€์ž…") <- ์—ฌ๊ธฐ์„œ ๋…ธ๋ž˜๋Š” ๋”ฐ๋กœ ์ €์žฅ์„ ํ•ด๋‘๊ณ  ์ด๋ฆ„๊ณผ ํƒ€์ž…์„ ์ ์œผ์…”์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ๋“œ๋””์–ด ์•ฑ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ํ™œ์šฉํ•  ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค.

 

SceneDelegate


SceneDelegate๋กœ ์ด๋™ํ•˜์…”์„œ sceneDidEnterBackground ๋ฉ”์†Œ๋“œ์— NotificationCenter๋ฅผ ํ™œ์šฉํ•ด ์•ฑ์ด background์— ์ง„์ž…ํ–ˆ์„ ๋•Œ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. (๋…ธํ‹ฐํ”ผ์ผ€์ด์…˜ ์„ผํ„ฐ๋ฅผ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์€  ์—ฌ๊ธฐ ๋ฅผ ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.)

๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•ด ๋ทฐ๋””๋“œ๋กœ๋“œ์— ๋…ธํ‹ฐํ”ผ์ผ€์ด์…˜ ์˜ต์ €๋ฒ„๋ฅผ ์„ค์ •ํ•ด์ฃผ๊ณ  @objc ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

 ๋งŒ์•ฝ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์ง„์ž…ํ–ˆ์„ ๋•Œ ๋…ธ๋ฉ€ ์œ ์ €๋ผ๋ฉด ๋ฎค์งํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ •์ง€์‹œํ‚ค๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ค๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋‹ค ์ž‘์„ฑํ•ด์ฃผ๊ณ  ๋‚˜๋ฉด ์œ ํŠœ๋ธŒ ํ”„๋ฆฌ๋ฏธ์—„๊ณผ ๊ฐ™์ด ๋…ธ๋ฉ€์œ ์ €์ผ๋•Œ ๋ฐฑ๊ทธ๋ผ์šด๋กœ ์ด๋™ํ•˜๋ฉด ๋…ธ๋ž˜๊ฐ€ ๊บผ์ง€์ง€๋งŒ ํ”„๋ฆฌ๋ฏธ์—„์œ ์ €์ผ๋•Œ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์ด๋™ํ•ด๋„ ๋…ธ๋ž˜๊ฐ€ ๊บผ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

App Video


 

 

Github


์ „์ฒด์†Œ์Šค์ฝ”๋“œ

 

fomagran/AppLifeCyle

Contribute to fomagran/AppLifeCyle development by creating an account on GitHub.

github.com

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€