2015-10-12 39 views
7

我想Facebook和谷歌登錄融入我的應用程序,但有一個問題:這都需要以下添加到在AppDelegate中OpenURL方法:整合谷歌和Facebook登錄iOS中 - AppDelegate中的OpenURL

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

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

是否有這些都正常工作。我在網上看了但答案是相當模糊,並不能提供一個很好的解釋

解決方案

添加了的伎倆對我下面的(如iOS版9):

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

解析URL在'canOpenURL'委託方法中發送的內容。 –

+0

對不起,我不太明白你的意思? – user1686342

+0

正如Maulik回答的那樣,您在委託方法中獲得的URL必須不同。只需登錄他們即可查看差異。你也應該試試Maulik給出的答案。 –

回答

4

使用下面的代碼...

- (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]]; 
    } 

另一個答案..

- (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

這段代碼已經過時了...我在前面的答案中看到過這個,但是不幸沒有解決我的問題:( – user1686342

+0

明白了或不... –

+0

我使用了下面的代碼(在我的初始文章中添加了)你的智慧導致我回答:) – user1686342