apple/iOS

[iOS] SwiftUI SceneDelegate, AppDelegate 변경

lgvv 2022. 8. 25. 02:18

SwiftUI SceneDelegate, AppDelegate 변경

 

해당 포스팅은 실제 프로젝트를 그대로 가져왔습니다. 따라서 네이밍이나 주석 등 불편한 부분이 있을 수 있습니다

 

자 이 포스팅을 왜 쓰냐면 SwiftUI 기반으로 프로젝트를 진행중인데, window를 변경해야하는 경우가 생겼음.

근데, 이게 기존에 SwiftUI에서 제공되는 WindowGroup을 사용하기에 자료도 넘 적고, 생각보다 코드관리도 잘 안되고 불편한게 너무나도 많았음.

 

그래서 많은 고민 끝에, SwiftUI에서 SceneDelegate와 AppDelegate를 채택해서 사용하기로 함.

 

이게 무슨말이냐면

 

SwiftUI

 

기존에 처음에 SwiftUI로 프로젝트를 만들면 이렇게 나타날 것이고, Scene은 보다시피 ScenePhase를 통해서 관리하여 사용할 수 있었다.

다만, 다른 쪽에서 윈도우를 교체해야 하거나, 알림 등 SceneDelegate에 작성해야 하는 코드가 많을 경우 SwiftUI를 제대로 활용하기가 어려웠음. 

(아직 스유를 잘 몰라서 그럴 확률 200%)

 

그래서 익숙하게 사용하는 AppDelegate와 SceneDelegate로 갈아타기 슝슝

이렇게 두개의 파일을 추가해준다.

1. SwiftUI의 @main을 AppDelegate로 옮겨주어야 한다

이리로 옮겨!

.

2. info.plist를 변경해야 한다.

이렇게 작성해!

스유로 프로젝트를 만든결우 Info.plist가 보이지 않을 수도 있는데, 그 경우에

나는 workspace사용해서 좀 많은데 sdk랑 key는 무시해도 됩니다.

저기 보면 info라고 있다.

 

🚨 주의: Enable Multiple Windows를 YES로 해둘경우 검은 화면이 나타날 수 있음.