Сбой приложения iOS при попытке выйти из Facebook с помощью FBSDK для swift - PullRequest
0 голосов
/ 11 февраля 2019

У меня проблемы с использованием FBSDK для моего приложения для iOS.Кажется, что вход в систему работает нормально, но выход из системы сразу приводит к сбою приложения.

Я использую Swift 4 и FBSDK версии 4.4.Я подозреваю, что в документации, которую я нашел в Интернете, и в других решениях, которые я нашел, не использовались такие же точные версии, потому что ничего из того, что я нашел, не помогло мне.Вот мой код делегата приложения:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]?) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
    }

func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        let handled: Bool = FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: options[.sourceApplication] as? String, annotation: options[.annotation])
        return handled
    }

А вот мой код выхода из системы:

@IBAction func btnFbLogoutClicked(_ sender: UIButton) {
        let loginManager : FBSDKLoginManager = FBSDKLoginManager()
        loginManager.logOut()
        self.performSegue(withIdentifier: "UnwindToLogin", sender: self)
    }

Он аварийно завершает работу и закрывает приложение при logOut () и не выполняет переход.Если кто-то использует те же версии FBSDK и Swift, я был бы признателен за некоторые указатели.

1 Ответ

0 голосов
/ 12 февраля 2019

Вы должны добавить отсутствующий метод в Appdelegate и следовать моему коду действия кнопки.Это работает для меня.Надеюсь, это будет работать для вас.

  import UIKit
  import FBSDKCoreKit

  @UIApplicationMain
  class AppDelegate: UIResponder, UIApplicationDelegate {
     var window: UIWindow?
     func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
    }
    func applicationWillResignActive(application: UIApplication) {    
        FBSDKAppEvents.activateApp()
    }
    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
     }
  }

 //MARK: FacebookLogin Button
 @IBAction func btnFacebookLoginClicked(sender: AnyObject) {
    let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
    fbLoginManager.logOut()
    fbLoginManager.loginBehavior = FBSDKLoginBehavior.Web //Without safari Browser
    fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self, handler: { (result, error) -> Void in
        if (error != nil){
            let fbloginresult : FBSDKLoginManagerLoginResult = result
            if(fbloginresult.grantedPermissions.contains("email")){
                self.getFBUserData()
                fbLoginManager.logOut()
            }
        }else if result.isCancelled {
        print("Cancelled")
    }
    })
}
...