2016-10-24 10 views
2

私はObjective C SDKの代わりに新しいFacebook Swift SDKを使用しています。Swift SDKを使用したFacebookログイン用オープンURLの処理

これまでは、の中のopenURLを実装しなければなりませんでした。しかし、FacebookのSwiftチュートリアルはこの部分をカバーしていません。

以下が記録されます。私は追加することにより、スウィフトSDKをインストールし

Use of unresolved identifier 'FBSDKApplicationDelegate' 

Implementation of application:openURL:sourceApplication:annotation: not found. Please add the handler into your App Delegate. Class: Shoppie.AppDelegate

しかし、私の実装では動作しません:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
     return GIDSignIn.sharedInstance().handle(url as URL!, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, annotation: nil) 
    if (url.scheme?.hasPrefix("fb"))! { 
     return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!, annotation: nil) 
    } else { 
     return GIDSignIn.sharedInstance().handle(url as URL!, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, annotation: nil) 
    } 
    return false 
} 

ために次のように私のPodfile

pod 'FacebookCore' 
pod 'FacebookLogin' 
pod 'FacebookShare' 

そして実行中pod installです。

更新されたコードの内容がわかりません。

答えて

5

ドキュメントは少し欠けていますが、githubリポジトリには優れたサンプルアプリケーションがあります。 Facebookの迅速なライブラリは、基本的には、それらの標準的なObjective-Cのライブラリへの単なるラッパーである -

import FacebookCore 

@UIApplicationMain 

class AppDelegate: UIResponder, UIApplicationDelegate { 

    func application(_ application: UIApplication, 
        didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions) 

    return true 
    } 

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

    if let _ = Bundle.main.object(forInfoDictionaryKey: "FacebookAppID") as? String { 
     return SDKApplicationDelegate.shared.application(application, 
                 open: url, 
                 sourceApplication: sourceApplication, 
                 annotation: annotation) 
    } 

     return false 
    } 

    @available(iOS 9.0, *) 
    func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool { 

    if let _ = Bundle.main.object(forInfoDictionaryKey: "FacebookAppID") as? String { 
     return SDKApplicationDelegate.shared.application(application, open: url, options: options) 
    } 

     return false 
    } 
} 

FYI:私は私のアプリケーションにSDKをゲート間に使用しています。ここのコードだhttps://github.com/facebook/facebook-sdk-swift/blob/master/Samples/Catalog/Sources/AppDelegate.swift

(スウィフト3)を参照してください。

+0

ああ、 'FBSDKApplicationDelegate'の名前が' SDKApplicationDelegate'に変更されました。ご協力いただきありがとうございます! –

0

私は私の​​ファイルに以下を追加してUse of unresolved identifier 'FBSDKApplicationDelegate'問題を修正:

#import <FBSDKCoreKit/FBSDKCoreKit.h> 
#import <FBSDKLoginKit/FBSDKLoginKit.h> 

ログインがこれらの変更を行った後に動作します。

Facebook Swift SDKはまだベータ版であり、チュートリアルはまだ更新されていないようです。 (Github Issue

関連する問題