티스토리 뷰

[iOS/swift] Google Sign In 연동하기 #1

[iOS/swift] Google Sign In 연동하기 #2


마지막으로 AppDelegate와 ViewController 간의 상호 작용과 View를 변경하는 방법이다.

1) Custom Protocol과 Delegate 생성하기 

2) NSNotification을 보내기 

3) AppDelegate의 속성을 세팅하기 (ViewController가 AppDelegate에 callback 함수를 넘겨주고 AppDelegate에서 로그인이 끝나면 해당 콜백 함수를 호출하는 방식으로 진행.)


내가 참고한 Google 동영상에서는 3번째 방법을 사용하고 

Google 예시 프로젝트에서는 2번을 사용함. 

여기서는 3번 방법을 포스팅한다.


1. MainStoryboard의 화면을 다음처럼 구성하고 로그인 전에는 제일 위의 label과 Sign In버튼만 보여주고 로그인 후에는 label, image, sign out버튼을 보여주도록 화면을 변경한다.  



2. ViewController에 refreshInterface() 함수를 구현하고 viewDidLoad 함수와 sign-out 버튼이 클릭된 후에 호출해 준다.

func refreshInterface(){

        if let currentUser = GIDSignIn.sharedInstance().currentUser {

            // Sign In

            signInButton.isHidden = true

            signOutButton.isHidden = false

            labelRes.text = currentUser.profile.email

            if let url = currentUser.profile.imageURL(withDimension: 175),let data = NSData(contentsOf: url){

                userImage.image = UIImage(data: data as Data)

                userImage.isHidden = false

            }

        } else {

            signInButton.isHidden = false

            signOutButton.isHidden = true

            labelRes.text = "Welcom, Please Sign-In first."

            userImage.isHidden = true

        }

    }


override func viewDidLoad() {

    super.viewDidLoad()

    refreshInterface()

    (UIApplication.shared.delegate as! AppDelegate).signInCallback = refreshInterface

    GIDSignIn.sharedInstance().uiDelegate = self

}

3. AppDelegate에 Sign In callback 함수를 멤버변수로 등록 해주고 sign in이 끝났을때 함수를 호출해 준다. (변수에 할당하는 것은 view controller에서 진행 한다.)

var signInCallback: (() -> ())?


func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {

    // 로그인 성공 실행 되는 함수

    if(error == nil){

        signInCallback!()

    } else {

        print("Sign-in Error \(error)")

    }

}

          



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함