2016-10-07 38 views
2

Ich hatte meine iOS App fast fertig zum Ausgehen, aber ich habe die schrecklichste Idee ... für Swift 3 zu gehen. Seitdem ist alles schiefgelaufen.SignIn Google Button Absturz mit Swift 3

Jetzt, da ich die offensichtlichsten Bugs und Probleme beseitigt habe, kann ich die Lösung für dieses Problem nicht finden: Wenn ich den SignInButton zum Initiieren einer Google-Session drücke, stürzt meine App ab. Im Debug-Navigationsfenster zeigt:

*0- objc_exception_throw 
1- +[NSException raise:format] 
2- [GIDSignIn SignInWithOptions:] 
3- [GIDSignInButton pressed]* 

ich die Google SignIn über CocoaPods installiert habe und der vorherige Schritt des mit dem Google-Teil in den AppDelegate „Verbinden“ scheint ok zu arbeiten.

Hat jemand Probleme mit dieser GoogleSignIn-Schaltfläche in Swift 3? Irgendwelche Vorschläge? Danke allen im Voraus!

Antwort

0

Sie geben zu wenige Informationen, aber wenn der Debugger einen Aufruf von objc_exception_throw nicht mehr anzeigt, sollten weitere Informationen in der Konsole im Bereich Debugbereich angezeigt werden.

Wenn Sie diese Informationen nicht sehen können, stellen Sie sicher, dass für "Alle Ausnahmen" kein Haltepunkt aktiv ist. Deaktivieren Sie in diesem Fall den Haltepunkt, versuchen Sie es erneut und teilen Sie uns mit, was passiert.

+0

Danke für den Rat. Ich habe den Breakpoint "All Exceptions" deaktiviert und festgestellt, dass ich ein Problem mit der Google Id hatte (einige Missverständnisse zwischen Programmierern verschiedener Plattformen). Ich werde jetzt prüfen, ob es mit der neuen ID richtig funktioniert. – Susana

0

Da Google SignIn nicht geöffneter Quellcode ist, können Sie unter der Haube nicht sehen, selbst wenn Sie All Exception Breakpoint aktivieren. Also, was Sie melden Debug-Stack ist richtig.

Das passiert mir fehlende Google SignIn-Anforderung. Mein Fall hatte ich mehrere Ziele und vergaß, ein Google URL-Schema von Google SignIn Einstellung zu haben.

  1. Copy URL-Schema von Google
  2. Select Target-Zeichen versehen
  3. Paste auf Info-> URL-Typen '+'

enter image description here

0

Die Informationen du hast gegeben, ist zu wenig. Aber stellen Sie sicher, dass Sie diese Dinge getan haben.

Sie sollten URL-Schemas wie in der folgenden Abbildung hinzugefügt haben. enter image description here

In Ihrem AppDelegate Klasse stellen Sie sicher, haben Sie die folgende Funktion

//this function is added only 
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
    return GIDSignIn.sharedInstance().handle(url as URL!, 
              sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation]) 
} 

Und für Viewcontroller hinzugefügt oder in dem Sie die Schaltfläche hinzugefügt haben, den Code wie folgt

Import UIKit Import sein sollte Google importieren GoogleSignIn

Klasse ViewController: UIViewController, GIDSignInUIDelegate, GIDSignInDe Legat {

//label to display name of logged in user 
@IBOutlet weak var labelUserEmail: UILabel! 


override func viewDidLoad() { 
    super.viewDidLoad() 

    //error object 
    var error : NSError? 

    //setting the error 
    GGLContext.sharedInstance().configureWithError(&error) 

    //if any error stop execution and print error 
    if error != nil{ 
     print(error ?? "google error") 
     return 
    } 


    //adding the delegates 
    GIDSignIn.sharedInstance().uiDelegate = self 
    GIDSignIn.sharedInstance().delegate = self 

    //getting the signin button and adding it to view 
    let googleSignInButton = GIDSignInButton() 
    googleSignInButton.center = view.center 
    view.addSubview(googleSignInButton) 

} 

//when the signin complets 
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) { 

    //if any error stop and print the error 
    if error != nil{ 
     print(error ?? "google error") 
     return 
    } 

    //if success display the email on label 
    labelUserEmail.text = user.profile.email 
} 

}

Es sollte 3.

Referenz mit Swift auf diese Weise arbeiten: Google Sign In Integration with Swift 3

Verwandte Themen