Обнаружение нажатия кнопки входа в Google iOS

Я борюсь с документацией Google по кнопкам входа в систему. По сути, я хочу добавить индикатор активности на экран, как только я нажму кнопку входа в Google. Однако есть только две функции, которые действительно вызываются из приведенной ниже документации.

https://developers.google.com/identity/sign-in/ios/api/protocol_g_i_d_sign_in_u_i_delegate-p#a3674af917a79f4b87a58f3f8ff4d4002

  1. - signInWillDispatch:error:

    Поток входа завершил выбор дальнейших действий, и пользовательский интерфейс больше не должен отображать счетчик или другой элемент «подождите». Более...

  2. - signIn:didSignInForUser:withError:

    Поток входа завершился и прошел успешно, если ошибка равна нулю. Подробнее...`

Я не знаю, куда я могу поместить свой код beginActivityIndicator, поскольку я не знаю, какая функция вызывается сразу после нажатия кнопки входа в Google.

Спасибо,

--ОБНОВЛЕНИЕ С КОДОМ -- Ниже приведены четыре функции, которые у меня есть в моем loginVC, которые унаследованы от GIDSignInUIDelegate и GIDSignInDelegate. В значительной степени мне нужно добраться до функций до SignInWillDispatch, чтобы я мог инициировать индикатор активности. Однако я не смог найти, где это находится в документации. Я попытался включить распознаватель жестов нажатия на кнопку Google. Однако, когда я это делаю, функция входа в систему перестает работать полностью, как если бы это был просто пустой UIView.

    // Google login buttob
    GIDSignIn.sharedInstance().uiDelegate = self
    GIDSignIn.sharedInstance().delegate = self


    // Uncomment to automatically sign in the user.
    //GIDSignIn.sharedInstance().signInSilently()

    // TODO(developer) Configure the sign-in button look/feel
    let googleSignInBtn = GIDSignInButton()
    googleSignInBtn.frame.size = loginButton.frame.size
    googleSignInBtn.center.x = loginButton.center.x
    googleSignInBtn.center.y = loginButton.center.y + 80
    googleSignInBtn.style = .Wide
    self.view.addSubview(googleSignInBtn)



func signIn(signIn: GIDSignIn!, presentViewController viewController: UIViewController!) {
    print("Signed in with google")
}

func signInWillDispatch(signIn: GIDSignIn!, error: NSError!) {
    print("Signin Will Dispatch")
}

func signIn(signIn: GIDSignIn!, dismissViewController viewController: UIViewController!) {
    print("GoogleSignInDismiss")
}

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {

    activityIndicatorBegin() // Having the activity indicator start here is too late. I need it to start as soon as the google button is pressed. Otherwise there would be a moment just after the google view dismisses without activity indicator

    if let error = error {
        print(error.localizedDescription)
        return
    }

    let authentication = user.authentication
    let credential = FIRGoogleAuthProvider.credentialWithIDToken(authentication.idToken, accessToken: authentication.accessToken)

    FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
        if let error = error {
            self.showErrorAlert("Error Sign in Firebase with google", message: error.localizedDescription)
        } else {

        }
        self.activityIndicatorEnd()  
    }
}

func signIn(signIn: GIDSignIn!, didDisconnectWithUser user:GIDGoogleUser!, withError error: NSError!) {
    // Perform any operations when the user disconnects from app here.
    print("didDisconnectWithUser")
}

person user172902    schedule 25.07.2016    source источник
comment
выложи свой код...   -  person EI Captain v2.0    schedule 25.07.2016
comment
Не очень хорошо знаком с IOS, но обязательно ознакомьтесь с этим руководством: Developers.google.com/identity/sign-in/ios/start-integrating и этот: developers.google.com/identity/sign-in/ios/sign-in   -  person Alexandre Beaudet    schedule 25.07.2016
comment
код опубликован Капитан. Я просмотрел руководство для разработчиков, и здесь я застрял. Ваше здоровье   -  person user172902    schedule 25.07.2016
comment
Когда именно вы хотите запустить индикатор? Отметьте его в коде, где вы хотите, чтобы индикатор активности запускался.   -  person Dershowitz123    schedule 25.07.2016
comment
Код googleSignInBtn находится внутри viewDidLoad. Кнопка создается программно. Я не могу добавить индикатор активности в viewDidload, так как это не имеет смысла. Я хотел бы отметить, где я хочу начать, но я не могу отметить это, потому что я не знаю, где находится этот фрагмент кода. Вот поток. Программа загружена-> кнопка Google инициирована в представленииDidLoad-> пользователь нажимает на кнопку-> начинается индикатор активности (здесь я не мог найти функцию для ввода кода)-> пользователь вводит адрес электронной почты и пароль для входа в систему-> конец индикатора активности (эту часть я знаю куда поставить) -> выполнить переход   -  person user172902    schedule 25.07.2016
comment
вы можете исправить индикатор активности в представлении, а в viewDidLoad вы можете скрыть его. при нажатии кнопки вы можете показывать и анимировать.   -  person Subin K Kuriakose    schedule 25.07.2016
comment
Вот в чем вопрос, я не вижу функции срабатывающей по нажатию кнопки. В простом случае, когда у меня есть IBAction UIButton, я знаю, что могу поместить туда код. Однако эта кнопка входа в Google представляет собой UIControl, который наследуется от UIView. И экран входа в Google, кажется, волшебным образом появляется, когда нажимается кнопка «Войти с помощью Google». Самое раннее событие, которое я могу поймать, signInWillDispatch, которое отображает секунды ПОСЛЕ закрытия экрана имени пользователя/пароля google.   -  person user172902    schedule 25.07.2016


Ответы (1)


Задача решена. Я не смог решить эту проблему, создав кнопку программно, как указано выше. Что я сделал, так это создал UIButton и просто сделал следующее

@IBAction func signInWithGoogleBtn(sender: AnyObject) {
    activityIndicatorBegin()
    GIDSignIn.sharedInstance().signIn()
}
person user172902    schedule 26.07.2016