SceneDelegate와 AppDelegate

어플을 개발중에 있는데 현재는 로그인 부분을 REST API와 통신하면서
로그인을 성공하게 되면 토큰을 생성해줍니다.
따라서 토큰이 2~3시간정도 유효해서 토큰이 만료되지 않는 한, 앱을 껐다켜도 자동로그인이 계속
되도록 하는 기능을 구현중에 있습니다.

저는 AppDelegate에서 API를 활용하여 토큰이 유효한지 정보를 받아오도록 구현하였고
만약 토큰이 유효하다면 앱을 실행시켰을 때 로그인화면이 아닌 메인화면으로 바로 가도록 구현하려고 하였습니다.

그러던 중 iOS13부터 SceneDelegate를 활용한다는 정보를 파악할 수 있었고
그부분에서 질문이 생겨서 이렇게 글을 남깁니다!

제가 개발하고자 하는 어플은 아이패드를 대상으로 하지않기에 굳이 SceneDelegate를 사용하지 않고 AppDelegate에서 모두 처리시켜도 된다고 생각했는데 혹시 이부분에 대해 어떻게 생각하시는지 궁금합니다!

좋아요 1

먼저 Scene Delegate 가 나온 이유부터 이야기 해야겠네요.

iOS 13 부터 하나의 앱에서 멀티-씬(윈도우)가 가능해 집니다.

사파리나 메모 같은 앱을 동시에 여러개 띄우는 걸 본 적 있으시죠? 그 여러개의 씬을 각각 관리하는 게 SceneDelegate 입니다. 이 경우 Scene Delegate가 Foreground와 Background 상태를 관리하게 되며, AppDelegatesms 각각의 SceneSession을 관리해 줘야 합니다.

멀티-씬 기능을 지원하지 않으려면 Scene Delegate를 지우고 plist 에서 AppDelegate에서 모든 걸 처리해도 됩니다.

좋아요 1

답변 감사합니다! Scene Delegate의 존재 이유(?)에 대해 모호했었는데 이해가 되는 것 같습니다!!

한가지 더 궁금한 점이 있는데, 그렇다면 어플을 개발하는 개발자 입장에서
멀티-씬 기능을 굳이 지원하고싶지 않다면 하지 않아도(링고스타님께서 언급하신 두번째 방법 - AppDelegate에서 모든 것을 처리)
앱을 출시할 때 리젝 사유가 된다거나 기타 문제가 없는 것인가요?

좋아요 1

네, 그 기능을 pass 하고 개발하셔도 앱 스토어에 올리는 건 문제없습니다.