Firebase 구글 로그인 관련 질문입니다

안녕하세요 Firebase를 통해 구글 로그인을 구현하는 중 어려움이 있어 질문을 올리게 되었습니다.

Firebase 문서를 보며 AppDelegate.swift 파일에 구글 로그인을 구현하고 있습니다.
만들고자 하는 앱에서 닉네임을 사용하기 때문에
구글로 로그인 후, 닉네임을 입력받는 뷰컨으로 이동해 닉네임을 db에 등록하려 합니다.

그래서 AppDelegate.swift에 구글 로그인이 구현된 코드 중 로그인이 완료된 시점에서

func transitionToMain() {
    let MainViewController = storyboard?.instantiateViewController(identifier: "MainVC") as? MainViewController
    
    view.window?.rootViewController = MainViewController
    view.window?.makeKeyAndVisible()
}

위와 같은 방법으로 화면을 전환하려 했으나, AppDelegate 파일에서는 storyboard를 사용이 안되는 것으로 알고 있습니다.

궁금한 점들을 정리하자면,
Firebase의 구글 로그인은 왜 AppDelegate파일에서 구현되는 것인가요?, 꼭 AppDelegate파일에서 구현 되어야 하나요?
어떻게 AppDelegate파일에서 화면을 전환할 수 있나요?

firebase를 사용하는 데 익숙하지 않아서… 도움 부탁드립니다!

좋아요 2

firebase 관련 구현이 AppDelegate에서 구현되는 이유는 App의 LifeCycle과 관련해서 설정해줘야 하기 때문일 것 같습니다. 예를 들어 앱의 시작과 동시에 firebase에서 기본적으로 구성해줘야 하는 것들을 실행시켜줘야 database 든 Authentication이든 실행할 수 있기 때문이지 않을까요? (내부 구현을 까보지 않아서 자세히는 모르지만 프레임워크를 그렇게 만들었다면 그렇게 쓰는게 좋은 듯 합니다!)

문제는 로그인 후에 닉네임을 입력받는 뷰컨으로 이동하시는 것 같은데, 굳이 AppDelegate에서 구현하지 마시고 거기서는 로그인이 완료되었다!를 알려주는 Noticication을 전달, 이후에 이걸 관찰하는 관찰자가 자동으로 뷰컨을 띄워주도록 다른 곳에 구현하시면 될 것 같습니다:)

그리고 AppDelegate 전체에서 스토리보드 구현이 다 안되나요…? 흠… 그냥 다른 app사이클에서는 될 것 같은데 저도 이부분은 공부를 더 해야 겠습니다! 그리고 다른 서비스 로그인 구현을 하시려면 Apple 로그인도 함께 구현하셔야 리젝이 되지 않습니다:) 그러려면 apple유료계정이 필요하고 앱스토어 등록 요정님의 도움이 필요한데… 너무 멀리나가는거라 일단 로그인 자체가 완료되었다는걸 가정하고 개발 진행하시는게 어떨까 싶습니다:)

좋아요 1

Notification과 관찰자에 대해서 공부를 더 해봐야겠어요! 답변 감사합니다!

좋아요 1

https://developer.apple.com/documentation/foundation/notificationcenter
수고하세용:)

좋아요 1

App Delegate에서 구현하는 이유에 대해서는 아래의 앱 라이프 사이클 영상을 참고하면 좋습니다.

AppDelegate에서 스토리보드 사용이 안된다기 보다는, ‘AppDelegate는 최초의 스토리보드 시작점이 채 메모리에 올라오기도 전에 먼저 만들어지는 오브젝트이므로, 아직 뷰가 아무 것도 없을 때 우리의 코드가 실행될 가능성이 있다.’ 정도로 생각해 주시면 됩니다.

좋아요 2