所以我已将Google登录集成到我的应用中,并在AppDelegate.swift
中具有以下功能:
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
变量?
答案 0 :(得分: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(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) || GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication!, annotation: annotation)
}