Facebook SDK for iOS
[swift]Facebook SDK for iOS でログイン / 認証ができない・クラッシュする(iOS9.x / iOS10.x)場合の解決(解消)方法&原因
[環境]
Xcode: 9.3
Swift: 4.1
iOS: 9.3.5
iOS: 10.3.3
iOS: 11.2.6
iOS: 11.3
僕たちが開発・提供しているアプリ「RootTrip(ルートトリップ)」にて、
iOSが11になり、Facebook SDK for iOS を最新版(4.32.0)にした際に、
iOS11.xのデバイスではFacebookログイン・認証が通るが、iOS9.x / iOS10.xのデバイスだとFacebookログイン・認証が通らず、アプリがクラッシュしてしまうという現象が発生しました。
その解決(解消)方法と原因を紹介します。
【どのような現象か】
1) 「次へ」をタップする
2) 白い画面で止まってしまう&先に進まない(クラッシュする)
【解決(解消)方法】
AppDelegate.swiftの該当箇所を下記のようにします。
1 2 3 4 5 6 7 8 9 |
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation) } // iOS9.x/iOS10.xにてFacebookログイン認証が通らなくなる問題の回避 @available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool { return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: nil) } |
これで正常にFacebookログイン・認証が通るようになります。
【原因】
確実ではないのですが、
Pods > FBSDKCoreKit > FBSDKApplicationDelegate.m
この「FBSDKApplicationDelegate.m」131行目あたりをみてもらえればと思いますが、
iOS9.0以降からreturnされる値が変わるからみたいです。