2017-05-04 66 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建議來優化它們。 –