2016-12-29 2 views
1

В iOS Google SDK Мне не удалось найти соответствующий метод обработки событий при успешном выполнении процесса signIn.Google SDK iOS - обработчик завершения метода sign()

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

Этот метод не принимает обработчик завершения в качестве параметра, есть ли какой-либо другой метод API, который может обрабатывать завершение процесса SignIn?

Мне не удалось найти что-либо в документах, также официальный урок Google довольно неустранимый.

Зачем мне это нужно? Я создаю отдельный класс GoogleManager для обработки google Sign In, и я хочу передать обработчик завершения из моего VC, чтобы выполнить segue, когда закончите. Как к нему подойти?

+0

В Google SDK нет никакого метода с обработчиком завершения. –

+0

Вы можете добавить NotificationObserver. – Wolverine

ответ

2

Создание одного делегата для пользовательских GoogleManager и создать экземпляр этого делегата внутри этой GoogleManager и реализовать этот делегат на классе, где вы создаете экземпляр пользовательского класса GoogleManager, после того, что, когда GIDSignInDelegate метод называется использование пользовательского делегата и назвал его метод. Поэтому он должен выглядеть примерно так.

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

Сейчас в GoogleManager классе, когда вы получите ответ в GIDSignInDelegate метода необходимо вызвать метод GoogleManagerDelegate.

class GoogleManager { 
    var delegate: GoogleManagerDelegate? 

    //Your other method  

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

Теперь реализовать GoogleManagerDelegate внутри контроллера, где ваше создание экземпляра GoogleManager и установить его экземпляр делегата для себя.

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

nevermind, да, что работает, спасибо – DCDC

Смежные вопросы