2017-03-05 48 views
0

我整合Facebook Swift SDK到我的應用程序,我跟着論文步驟:Facebook的斯威夫特SDK登錄不會打開本地對話框

用的CocoaPods安裝依賴 - pod 'FacebookLogin'

添加以下的Info.plist:

<key>FacebookAppID</key> 
<string>**my_app_id**</string> 
<key>FacebookDisplayName</key> 
<string>**my_app_name**</string> 
<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
    <key>CFBundleURLSchemes</key> 
    <array> 
     <string>fb**my_app_id**</string> 
    </array> 
    </dict> 
</array> 
<key>LSApplicationQueriesSchemes</key> 
<array> 
    <string>fbapi</string> 
    <string>fb-messenger-api</string> 
    <string>fbauth2</string> 
    <string>fbshareextension</string> 
</array> 

添加到AppDelegate

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

    return true 
} 

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
    return SDKApplicationDelegate.shared.application(app, open: url, options: options) 
} 

調用視圖控制器:

LoginManager() 
    .logIn([.publicProfile, .email], viewController: self) { result in 
    switch result { 
    case .failed(let error): 
    print(error) 
    case .cancelled: 
    print("User cancelled login.") 
    case .success(_, _, let accessToken): 
    print("User logged in") 
    } 
} 

就是這樣。當我點擊按鈕時,我希望加載本地登錄,切換到FB應用程序,然後返回到我的應用程序。然而,它從來沒有發生過,並且網頁被加載到SFSafariViewController上。

我也試過強迫loginBehavior.native,和所有其他選項,但改變它絕對沒有影響。

我還需要做什麼才能使本地登錄工作?

+0

你設置了'fbLoginButton.delegate = self'嗎? –

+0

我正在使用自定義按鈕 – Guilherme

回答

2

我從FB Developers博客發現this post,他們說Safari Safari與iOS 9及更高版本上的快速應用切換相比,點擊率更高,並決定將其設爲默認行爲。

自iOS 9發佈以來,我們一直在監控超過250個應用的數據和點擊率。 SVC登錄的點擊率(CTR)優於應用程序切換登錄的點擊率,並且以應用程序切換體驗的速度提高3倍。這表明SVC的體驗對於今天的人們和開發人員來說更好,並且從長遠來看可能是最好的解決方案。出於這個原因,iOS的最新Facebook SDK使用SVC作爲Login的默認體驗。