Back to News for Developers

Facebook Login on iOS9

October 29, 2015ByChris Pan

This page contains historical material that is out of date.

Fast-app-switch is deprecated as a way of implementing Facebook Login. All apps should use the default SDK behavior, which is optimized for all versions of iOS. In accordance with Apple's guidelines, and to maximize successful conversions, the SDK defaults to the use of SFAuthenticationSession beginning with iOS 11 and uses SVC for older iOS versions.

With the release of iOS 9, Apple introduced some significant changes to app switching. This has affected iOS 9 apps integrated with Facebook. Most people will notice this in their experience using Facebook Login. In apps that use the newest SDK (v4.6 and v3.24), we will surface a flow using Safari View Controller (SVC) instead of fast-app-switching (FAS) because of additional dialog interstitials that add extra steps to the login process in FAS on iOS 9. Additionally, data that we've seen from more than 250 apps indicate that this is the best experience for people in the long run. Please read on for details.

iOS 9 apps

On iOS 9, there are two primary ways to to implement Facebook Login. Each is different than the app switch experience that was the default on iOS 8.

  1. The SDK could continue to switch from your app to the Facebook app.
  2. The SDK could use the new Safari View Controller (SVC) to show the Login UX in the browser.

On iOS 9, when one app attempts to open another app, people see a dialog: “CurrentApp would like to open OtherApp.” When someone uses Facebook Login, this results in two additional dialogs: the first one appears when the CurrentApp tries to open the Facebook app, and the second appears when the Facebook app switches back to the CurrentApp. This is shown in Fig.1. In both dialogs, the person needs to tap “Open” to continue through the flow — this adds two extra steps for people when logging into apps with Facebook.

Fig. 1 - Fast-app-switch experience in iOS 9:

Safari View Controller (SVC) is a web view which can be displayed in the context of an app, yet shares the same cookies and session state as Safari.app. Unlike WKWebView and UIWebView, this means if someone is signed into a website in Safari.app, they're also signed into that website in SVC. This presents us with the opportunity to power Facebook Login with a web view shown atop your app. The SVC experience is faster than the app switch, and it avoids additional friction of the "app would like to open" interstitials, as shown in Fig. 2.

Fig. 2 - Safari View Controller experience in iOS 9:

iOS 8 apps and before

For apps on iOS 8 and below, Facebook Login checks to see if the Facebook app is installed on the device. If the app is installed, the SDK switches to the Facebook app via a fast-app-switch to display the Login experience - see Fig. 3. People who have installed the Facebook app are typically logged in, so the Login experience is just two steps.

Fig. 3 - Fast app-switch experience in iOS 8 and below:

Optimizing for the long run

Based on our numbers, we know there's a high likelihood that people using Facebook Login in apps are also signed into Facebook in Safari. For the people who are not signed into Facebook on Safari, they will only need to log into Facebook one time. After that, every future Facebook Login experience is fast and convenient with no extra steps. This means that as adoption of this flow increases over time, so does the quality of the experience people get. In contrast, the traditional fast-app-switch flow does not improve over time: The additional dialogs continue to appear in both directions for every new app that people log into.

We've been monitoring data and CTRs for over 250 apps over the last 6 weeks since iOS 9 launched. The click-through rate (CTR) of SVC Login outperforms the CTR of app-switch Login and is improving at 3x the rate of the app-switch experience. This indicates that the SVC experience is better for people and developers today, and will likely be the best solution in the long run. For this reason, the latest Facebook SDK for iOS uses SVC as the default experience for Login.

We're continuing to work with our community to monitor trends to ensure that Facebook Login delivers great experiences for people and leads to the best results for developers.