2016-12-29 2 views
1

iOS Google SDK에서 signIn 프로세스가 완료 될 때 이벤트를 처리하는 관련 메소드를 찾지 못했습니다.Google SDK iOS - sign() 메소드 완료 핸들러

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

이 메서드는 매개 변수로 완료 처리기를 사용하지 않지만 SignIn 프로세스 완료를 처리 할 수있는 다른 API 메서드가 있습니까?

Google 문서에서 항목을 찾지 못했습니다. 또한 Google의 공식 자습서도 상당히 비판적입니다.

왜 내가 이것을 필요로합니까? 별도의 GoogleManager 클래스를 생성하여 Google 로그인 프로세스를 처리합니다. 완료 될 때 segue를 수행하기 위해 VC에서 완료 핸들러를 전달하고 싶습니다. 어떻게 접근해야합니까?

+0

Google SDK의 완료 처리기와 관련된 방법이 없습니다. –

+0

NotificationObserver를 추가 할 수 있습니다. – Wolverine

답변

2

하면 사용자 정의 GoogleManager에 대해 하나의 대리자를 만들고 그 GoogleManager 내부 대리자의 인스턴스를 생성하고 그 후, 당신은 사용자 정의 클래스 GoogleManager의 인스턴스를 생성하는 클래스가 대리자를 구현할 때 사용자 정의 위임 사용이라고 GIDSignInDelegate 방법이라고 불리는 방법. 그래서 이런 식으로 보일 것입니다.

protocol GoogleManagerDelegate { 
    func receiveResponse(user: GIDGoogleUser)// Pass Parameter that you want 
} 

은 이제 GIDSignInDelegate 방법에 응답을 얻을 GoogleManager 수업 시간에 당신은 GoogleManagerDelegate 메소드를 호출 할 필요가있다.

class GoogleManager { 
    var delegate: GoogleManagerDelegate? 

    //Your other method  

    func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) { 
     self.delegate?.receiveResponse(user: user) 
    } 
} 

는 이제 생성 GoogleManager의 인스턴스와 자기에의 위임 인스턴스를 설정 컨트롤러 내부의 GoogleManagerDelegate를 구현합니다.

class ViewController: UIViewController, GoogleManagerDelegate { 

    //Your other methods  

    func googleSignIn() { 
     let googleManager = GoogleManager() 
     googleManager.delegate = self 
    } 

    //GoogleManagerDelegate method 
    func receiveResponse(user: GIDGoogleUser) { 
     //Access user object here 
    } 
} 
+0

위의 편집을 참조하십시오. – DCDC

+0

@DCDC 왜 sharedGIDSignIn을 만들었습니까? 그리고 그것이 무엇을 위해, 나는 그것에 관해 그것에 관해 아무것도 대답하지 않고있다. –

+0

고민하지 마시오, 고맙습니다. – DCDC

관련 문제