2016-05-23 15 views
4

ich bin mit Google sdk für signin Google aber nach der E-Mail und Passwort eingebengoogle signin nicht Delegatmethode nach Erfolg Aufruf

in viewDidLoad habe ich hinzugefügt Delegat

// set Google Zeichen In Delegierten

[GIDSignIn sharedInstance].delegate = self; 
    [GIDSignIn sharedInstance].uiDelegate = self; 

-(void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error{ 
} 

nicht aufgerufen. wo ist das Problem nicht

bekommen, wenn ich Benutzer E-Mail und Passwort am Eingabe ich dieses

enter image description here

dieser Methode bin immer genannt wird und Fehler zeigt, ist null.

- (void)signInWillDispatch:(GIDSignIn *)signIn error:(NSError *)error { 

} 
+0

Haben Sie etwas dafür bekommen? – UserDev

+0

@Sport: hast du es gelöst? Ich habe das gleiche Problem ... – Goodsquirrel

+0

@Spot und Goodsquirrel, Ich bin vor demselben Problem, bitte lassen Sie mich wissen, wenn Sie es behoben haben. –

Antwort

0

AFAIK GIDSignIn Klasse hat zwei Delegierte Eigenschaften:

  • delegate
  • uiDelegate

Die Methode, die nicht aufgerufen wird für Sie in uiDeleagte ‚s-Protokoll definiert ist.

+0

das ist ich habe alles bereit in meinem Code. – Sport

2

In folgendem Code in Ihrer AppDelegate.m Datei

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ 



    return [[GIDSignIn sharedInstance] handleURL:url 
           sourceApplication:sourceApplication 
             annotation:annotation]; 
    } 
1

Die Methode, die aufgerufen ist auf GIDSignInUiDelegate genannt wird, während die Methode, die nicht genannt ist auf die GIDSignInDelegate nach der Anmeldung aufgerufen wird. Hier ist, was die GIDSignIn Header-Datei sagt:

@protocol GIDSignInDelegate <NSObject>   
- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error; 

@protocol GIDSignInUIDelegate <NSObject> 
@optional 
- (void)signInWillDispatch:(GIDSignIn *)signIn error:(NSError *)error; 

Da Sie beide die uiDelegate und die Delegierten auf Ihre UIViewController Instanz festgelegt haben, sollten beide Methoden aufgerufen.

Als ich auf das gleiche Problem stieß, war mein Fehler, dass ich auch das AppDelegate auf GIDSignInDelegate gesetzt habe, was stundenlang Verwirrung stiftete! Mein Tipp: Überprüfen Sie, ob Ihr ViewController immer noch die delegate von GIDSignIn.sharedInstance ist, wenn Sie von der Anmeldung zurückkehren. einen Haltepunkt in dem Rückruf, der aufgerufen wird erhalten:

- (void)signInWillDispatch:(GIDSignIn *)signIn error:(NSError *)error { 
    if (GIDSignIn.delegate != self) {NSLog("gotcha!")} 
} 
0

Ich habe ein sehr ähnliches Problem, bis zu realisieren, dass die GIDSignInDelegate Müll zwischen dem Start des signin und bekommen den Rückruf gesammelt wurde. Wenn ich eine Referenz an anderer Stelle speichern wollte, lösten sich meine Probleme. (vermutlich verwendet Google eine schwache Referenz)

Verwandte Themen