首页 > 解决方案 > Facebook 登录 + Google 登录 + Braintree Paypal 支付 - AppDelegate 问题

问题描述

我的应用程序有 google 登录、facebook 登录和 Braintree 集成。

我在 appdelegate.swift 中加入了以下代码:

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {

    let checkFB = FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
    let checkGoogle = GIDSignIn.sharedInstance().handle(url as URL!,sourceApplication: sourceApplication,annotation: annotation)
    return checkGoogle || checkFB
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
    if url.scheme?.localizedCaseInsensitiveCompare("com.release.braintreepayments") == .orderedSame {
        return BTAppSwitch.handleOpen(url, options: options)
    }
    return false
}

当我输入 时func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {},我的登录停止工作,如果我将其注释掉,则登录工作正常。你能告诉我如何将两者结合起来吗?我确信在选择这两种方法中的一种时会有一些冲突,但我两者都需要。

我也为此联系了 Braintree 支持。

标签: iosswift3facebook-loginbraintreegoogle-signin

解决方案


尝试只使用第二个:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
    if url.scheme?.localizedCaseInsensitiveCompare("com.release.braintreepayments") == .orderedSame {
        return BTAppSwitch.handleOpen(url, options: options)
    }

    guard let sourceApplication = options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String else {
            return false
        }
    let annotation =  options[UIApplicationOpenURLOptionsKey.annotation]

    let checkFB = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: sourceApplication, annotation: annotation)
    let checkGoogle = GIDSignIn.sharedInstance().handle(url as URL!,sourceApplication: sourceApplication,annotation: annotation)

    return checkFB || checkGoogle

}

推荐阅读