ios - 谷歌登录按钮按下检测 ios

标签 ios objective-c swift xcode google-signin

我正在为他们的登录按钮上的谷歌文档苦苦挣扎。基本上,我想在按下谷歌登录按钮后立即在屏幕上添加一个事件指示器。但是,只有两个函数真正从下面的文档中调用

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:

    如果错误为零,则登录流程已完成并成功。更多...`

我不知道可以将 beginActivityIndi​​cator 代码放在哪里,因为我不知道在按下 Google 登录按钮后会立即调用哪个函数。

谢谢,

--更新代码-- 以下是我的 loginVC 中继承自 GIDSignInUIDelegate 和 GIDSignInDelegate 的四个函数。我几乎需要在 SignInWillDispatch 之前访问函数,以便我可以启动事件指示器。但是,我找不到它在文档中的位置。我尝试在谷歌按钮上包含点击手势识别器。但是,当我这样做时,登录功能完全停止工作,就好像它只是一个空白的 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")
}

最佳答案

问题解决了。我无法通过像上面那样以编程方式创建按钮来解决它。我所做的是创建一个 UIButton 并简单地执行以下操作

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

关于ios - 谷歌登录按钮按下检测 ios,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38566423/

相关文章:

swift - 有没有办法交换不同类型的对象?

objective-c - 将 CGContext 复制到另一个 CGContext

swift - 如何在 Swift 中用字符串进行文本到语音转换时产生 1-5 秒的小停顿?

ios - UIBezierPath和CAShapeLayer初始动画跳转

ios - 获取 .app 或 .ipa 的实时/当前版本

ios - 证书保留在ASIHTTPRequests的缓存中?

ios - 使用 UITableViewCell 绘制条形图 - 单元格可变地部分填充颜色

ios - 检查字符串时间范围是否为现在

java - 来自 Java 开发人员 POV 的 iOS 委托(delegate)

ios - 自 iOS 9.0 起不再有可用位置