2016-06-10 2 views
7

Я внедрил Google Sign In точно так же, как Google заявляет, согласно их веб-сайту. Я работал около месяца назад, теперь он просто ничего не делает. Я попытался переделать все, удалив cocoapod и следуя их веб-сайту на T, но ничего не происходит. Это похоже на то, что никто из методов делегата не вызван, и я не уверен, почему. Любая помощь была бы признательна. Благодаря!Кнопка входа в систему Google ничего не делает

import GoogleSignIn 
import Google 
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

    //Get Twitter and set Twitter keys for Application 
    Twitter.sharedInstance().startWithConsumerKey("uBedaxDuMDgImGbjun1oYf0ay", consumerSecret: "OaKqBZUesX5CypHCwrTvTZE22jrXIuRsUeZzVaMHej11R5Vh3b") 
    Fabric.with([Twitter.self]) 

    // Initialize sign-in GOOGLE 
    var configureError: NSError? 
    GGLContext.sharedInstance().configureWithError(&configureError) 
    assert(configureError == nil, "Error configuring Google services: \(configureError)") 

    GIDSignIn.sharedInstance().delegate = self 

    return true 
} 

func application(application: UIApplication, 
       openURL url: NSURL, options: [String: AnyObject]) -> Bool { 
    return GIDSignIn.sharedInstance().handleURL(url, 
               sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String, 
               annotation: options[UIApplicationOpenURLOptionsAnnotationKey]) 
} 

func application(application: UIApplication, 
       openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool { 
    var options: [String: AnyObject] = [UIApplicationOpenURLOptionsSourceApplicationKey: sourceApplication!, 
             UIApplicationOpenURLOptionsAnnotationKey: annotation!] 
    return GIDSignIn.sharedInstance().handleURL(url, 
               sourceApplication: sourceApplication, 
               annotation: annotation) 
} 

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, 
      withError error: NSError!) { 
    print("SIGNING IN") 
    if (error == nil) { 
     let email = user.profile.email 
     print(user.authentication) 
     // ... 
    } else { 
     print("ERROR = \(error.localizedDescription)") 
    } 
} 

View Controller

import GoogleSignIn 
class LoginViewController: UIViewController, UITextFieldDelegate, CLLocationManagerDelegate, GIDSignInUIDelegate 
override func viewDidLoad() { 

    //Default setup for View Controller 
    super.viewDidLoad() 

    GIDSignIn.sharedInstance().uiDelegate = self 
    var error:NSError? 
    GGLContext.sharedInstance().configureWithError(&error) 
    if(error != nil) { 
     print(error) 
    } 

    var signInButton = GIDSignInButton(frame: CGRect(x: 0, y: 0, width: 150, height: 400)) 
    view.addSubview(signInButton) 

} 

EDIT

После ЧАСОВ, лол, из выяснить это, то Google для входа в систему кнопка работает, когда она 1) Held вниз для более чем 2 секунды, 2) Пробел влево/вниз/вправо, но не вверх Я не уверен в этой причине и буду открыт для предложений! Благодаря!

+0

Пожалуйста, пост код –

+0

Там вы идете. Спасибо, что посмотрели – impression7vx

ответ

9

Я понял, хотел бы, чтобы кто-нибудь еще знал эту глупую глупую проблему!

Проблема с кнопкой Google и краном я должен отклонить клавиатуру. Я не надел его здесь, но вот он.

let tap = UITapGestureRecognizer(target: self, action: #selector(LoginViewController.dismissKeyboard)) 
self.view.addGestureRecognizer(tap) 

func dismissKeyboard() { 
    self.view.endEditing(true) 
} 

Делегаты Google исповедуют это по какой-то причине. Я еще не придумал решение, поскольку я буквально сейчас нашел проблему, но если у кого-то еще есть проблема, я надеюсь, что это поможет!

+0

Эй, я не совсем уверен, что вы имеете в виду. Я думаю, что у меня такая же проблема. Я заставил его работать, а потом внезапно прекратил работать. Когда я удаляю «GIDSignIn.sharedInstance(). UiDelegate = self», эта строка кода прерывается, и когда я его всплываю, я не получаю ошибок, но абсолютно ничего не происходит. – tryingtolearn

+0

Ну, моя проблема в том, что у меня была кнопка входа в google, и, кроме того, я добавил жест нажатия на весь вид. Таким образом, он будет регистрировать жест tap, а не кнопку google. Поэтому, если я удержался бы дольше на кнопке google, тогда кран не зарегистрировался, но кнопка google была бы. Поэтому мне пришлось найти способ зарегистрировать кран на экране (который позволял клавиатуре скрываться, если он был там) и использовать кнопку GID. – impression7vx

3

Реализовать делегировать UITapGestureRecognizer и обрабатывать случай вы повернутым на вашем знаке Google в кнопке:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 
    if touch.view is GIDSignInButton { 
     return false 
    } 
    return true 
} 

Swift 3:

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { 
    if touch.view is GIDSignInButton { 
     return false 
    } 
    return true 
} 

Это решило проблему для меня.

+1

@ EricD, я обновил свой ответ, спасибо за внимание. – fic

7

У меня была такая же проблема, и это было проблемой с распознающим жесты, который был привязан к главному виду, чтобы убрать клавиатуру. Он случайно захватил также штрихи внутри GIDSignInButton. Изменение этого параметра помогло:

tapGesture.cancelsTouchesInView = false 
+0

Это трюк! Ты буквально спас меня. Лучший ответ даже после 17 месяцев –

2

Быстрый, простое решение:

шаги:

  1. Перенести на UIGestureRecognizerDelegate
  2. Вставить в следующих методов
  3. добавить dismissOnTap() на ваш взгляд контроллер

Код:

class ViewController: UIViewController, UIGestureRecognizerDelegate { 

override func viewDidLoad() { 
     super.viewDidLoad() 

     // Call dismissOnTap 
     dismissOnTap() 

} 

func dismissOnTap() { 
     self.view.isUserInteractionEnabled = true 
     let tap = UITapGestureRecognizer(target: self, action: Selector("dismissKeyboard")) 
     tap.delegate = self 
     tap.cancelsTouchesInView = false 
     self.view.addGestureRecognizer(tap) 
} 

    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 
     if touch.view is GIDSignInButton { 
      return false 
     } 
     return true 
    } 

    func dismissKeyboard() { 
     self.view.endEditing(true) 
    } 

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