2017-05-04 57 views
0

所以我已经集成谷歌登录到我的应用程序,并具有以下功能在我AppDelegate.swiftGoogle和Facebook在AppDelegate中登录url处理程序?

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
    // handled to go back to application after google log in 
    let handled = GIDSignIn.sharedInstance().handle(url, sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: [:]) 

    return handled 
} 

现在我想要添加Facebook登录和我应该添加以下到相同的功能:

let handled = FBSDKApplicationDelegate.sharedInstance().handle(application(app, open: url, options: [UIApplicationOpenURLOptionsKey.sourceApplication], annotations: options[:]) 

我该如何处理需要返回两个不同的handled变量?

回答

1

就是这样,我发现来管理这两种情况下

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool { 

    let canHandleURL = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) 
    let canHandleGoogleUrl = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication!, annotation: annotation) 
    if canHandleURL { 
     return true 
    } else if canHandleGoogleUrl { 
     return true 
    } else { 
     return false 
    } 
} 

继@JAL建议,可以优化该代码添加以下行:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool { 

    return FBSDKApplicationDelegate.sharedInstance().application(applic‌​ation, openURL: url, sourceApplication: sourceApplication, annotation: annotation) || GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication!, annotation: annotation) 

} 
+0

那么,这两个功能一样,那么漂亮许多? (我有的和你放的那个) – MarksCode

+0

为什么不直接优化呢? 'return FBSDKApplicationDelegate.sharedInstance()。application(application,openURL:url,sourceApplication:sourceApplication,annotation:annotation)|| GIDSignIn.sharedInstance()。handleURL(url,sourceApplication:sourceApplication !,注解:注解)' – JAL

+0

是的,它们几乎是一样的,你可以通过@JAL建议来优化它们。 –