Preparing Your Apps for iOS9

iOS 9 introduces changes that are likely to impact your app and its Facebook integration. This guide will review actions you should take to ensure the best app experience when using the Facebook SDK for iOS. In order to run your app on iOS 9, you need to upgrade to the latest Facebook SDK for iOS and take the following actions.

1. Download the latest Facebook SDK for iOS

Download the appropriate version of the Facebook SDK for your app.

  • v4.x - Recommended.
  • v3.x - Only if you have not migrated to v4.x of the SDK yet.

2. Whitelist Facebook Apps

If you use any of the Facebook dialogs (e.g., Login, Share, App Invites, etc.) that can perform an app switch to Facebook apps, you will need to update your application's plist to handle the changes to canOpenURL described in https://developer.apple.com/videos/wwdc/2015/?id=703.

If you're recompiling with iOS SDK 9.0, add the following to your application's plist if you're using a version of the SDK v4.5 or older:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fbapi20130214</string>
    <string>fbapi20130410</string>
    <string>fbapi20130702</string>
    <string>fbapi20131010</string>
    <string>fbapi20131219</string>    
    <string>fbapi20140410</string>
    <string>fbapi20140116</string>
    <string>fbapi20150313</string>
    <string>fbapi20150629</string>
    <string>fbapi20160328</string> 
    <string>fbauth</string>
    <string>fbauth2</string>
    <string>fb-messenger-api20140430</string>
</array>

If you're using FBSDKMessengerShareKit from versions older than the v4.6 release, also add

<string>fb-messenger-platform-20150128</string>
<string>fb-messenger-platform-20150218</string>
<string>fb-messenger-platform-20150305</string>

If you're using v4.6.0 or higher of the SDK, you only need to add:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
</array>

This will allow the FacebookSDK integration to properly identify installed Facebook apps to perform an app switch. If you are not recompiling with iOS SDK 9.0, your app is limited to 50 distinct schemes (calls to canOpenURL afterwards return NO).

Facebook SDK for Unity

If you are using the Facebook SDK for Unity, we recommend you upgrade to the latest available version for usage with iOS 9. If you are upgrading from a version older than the v7.0.3-beta, reference the Unity SDK Changelog for a list of changes.

If you are not yet running Unity 5 and cannot upgrade from v6.2.2 of the Unity SDK, ensure you make the following changes before publishing a build with Xcode 7.

  1. After building in Unity, open the iOS build output with Xcode and modify your applications plist with the Whitelist Facebook Servers changes.
  2. Add the Facebook Apps to your applications plist as described in Whitelist Facebook Apps.

FAQ

In iOS 9, the app switches can prompt the user with a confirmation dialog. The SDK will try to minimize the frequency of this by choosing the best dialog available (such as SafariViewController), but this is by design in iOS 9.

This is an Xcode warning indicating the the canOpenURL: call returned false. As long as you have configured the LSApplicationQueriesSchemes entry in your plist as described above, you can ignore this warning

v4.6+ and v3.24 of the SDK support bitcode. If you are using earlier versions, you must disable bitcode.