2015-10-12 24 views
7

Sto cercando di integrare Facebook e Google login nella mia app, ma avere un problema: Entrambi richiedono il seguente da aggiungere nel metodo openURL nella AppDelegate:Integrazione di Google e Facebook login in iOS - AppDelegate openURL

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

return [FBSDKApplicationDelegate sharedInstance] application:application 
                 openURL:url 
              sourceApplication:sourceApplication 
                annotation:annotation 
     ]] 

Esiste comunque la possibilità che entrambi funzionino correttamente. Ho guardato online, ma le risposte sono piuttosto vaghe e non riescono a fornire una buona spiegazione

Soluzione

aggiunto il seguente, che ha fatto il trucco per me (come su iOS 9):

return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:sourceApplication annotation:annotation] || [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation ]; 
+0

Analizzare l'URL che viene inviato nel metodo delegato 'canOpenURL'. –

+0

Scusa, non capisco cosa intendi? – user1686342

+0

Come risponde Maulik, l'URL che si sta utilizzando nel metodo delegato deve essere diverso. Basta registrarli per vedere la differenza. Dovresti anche provare come risposta data da Maulik. –

risposta

4

uso seguente codice ...

- (BOOL)application:(UIApplication *)applicationopenURL:(NSURL *)url 
     sourceApplication:(NSString *)sourceApplicationannotation:(id)annotation 
    { 
     if ([FBAppCall handleOpenURL:url sourceApplication:sourceApplication]) 
     return [FBSDKApplicationDelegate sharedInstance] application:application 
                 openURL:url 
              sourceApplication:sourceApplication 
                annotation:annotation 
     ]]; 
     else 

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

un'altra risposta ..

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

    NSString *stringURL = [ url absoluteString]; 
    if([stringURL containsString:@"fb"]) 
    { 


    return [[FBSDKApplicationDelegate sharedInstance] application:application 
                  openURL:url 
               sourceApplication:sourceApplication 
                 annotation:annotation]; 
    } 
    else 
    { 
     return [GPPURLHandler handleURL:url 
         sourceApplication:sourceApplication 
          annotation:annotation]; 

    } 
} 
+0

Quel codice è obsoleto ... ho visto questo su una risposta precedente che sfortunatamente non ha risolto il mio problema :( – user1686342

+0

capito o meno ... –

+0

Ho usato il seguente codice (aggiunto nel mio post iniziale) che ha fatto il trucco per me. La tua saggezza mi ha portato alla risposta :) – user1686342

Problemi correlati