Начало работы с Facebook SDK для iOS

В этом руководстве рассказывается, как интегрировать приложение iOS с Facebook, используя Facebook SDK для iOS.

Начиная с версии SDK 13.0 для всех вызовов API Graph будет необходим маркер клиента.

Facebook SDK предлагает целый ряд возможностей:

Перед началом работы

Вам понадобятся:

Шаг 1. Настройка среды разработки

  1. Откройте Xcode и нажмите File > Swift Packages > Add Package Dependency (Файл > Пакеты Swift > Добавить зависимость пакета).
  2. В открывшемся диалоге введите URL репозитория: https://github.com/facebook/facebook-ios-sdk.
  3. В разделе Version (Версия) выберите Up to Next Major (До следующей главной) и выберите вариант по умолчанию.
  4. Следуя инструкциям на экране, выберите библиотеки, которые нужно использовать в проекте.
  5. Если вы хотитеДобавьте в проект этот пакет

    Разрешить приложению использовать службы Facebook

    FacebookCore

    Разрешить пользователям входить в приложение, а приложению — запрашивать доступ к их данным

    FacebookLogin

    Разрешить приложению публиковать контент на Facebook

    FacebookShare

    Разрешить пользователям входить в приложение, чтобы повышать вовлеченность и рекламировать социальные функции

    FacebookGamingServices

Шаг 2. Настройка проекта

Настройте файл (Info.plist) с помощью сниппета XML, содержащего информацию о вашем приложении.

После интеграции входа через Facebook определенные события в приложении будут автоматически регистрироваться и собираться для Events Manager, если только вы не отключите эту функцию. Подробнее о том, какая информация собирается и как отключить автоматическую регистрацию событий в приложении, см. в разделе Автоматическая регистрация событий в приложении.

  1. Нажмите правой кнопкой мыши Info.plist и выберите Open As ▸ Source Code (Открыть как исходный код).
  2. Скопируйте и вставьте приведенный ниже фрагмент XML-кода в тело файла (<dict>...</dict>).
    <key>CFBundleURLTypes</key>
    <array>
      <dict>
      <key>CFBundleURLSchemes</key>
      <array>
        <string>fbAPP-ID</string>
      </array>
      </dict>
    </array>
    <key>FacebookAppID</key>
    <string>APP-ID</string>
    <key>FacebookClientToken</key>
    <string>CLIENT-TOKEN</string>
    <key>FacebookDisplayName</key>
    <string>APP-NAME</string>
  3. В <array><string>, содержащемся в ключе [CFBundleURLSchemes], замените APP-ID на ID своего приложения.
  4. В <string>, содержащемся в ключе FacebookAppID, замените APP-ID на ID своего приложения.
  5. В <string>, содержащемся в ключе FacebookClientToken, замените CLIENT-TOKEN на значение из раздела Настройки > Расширенные > Маркер клиента на Панели приложений.
  6. В <string>, содержащемся в ключе FacebookDisplayName, замените APP-NAME на название своего приложения.
  7. Чтобы использовать диалоги Facebook (например "Вход", "Поделиться", "Приглашения в приложения" и т. д.), которые могут переключать пользователя на приложения Facebook, файл Info.plist вашего приложения также должен содержать следующий код:
    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>fbapi</string>
      <string>fb-messenger-share-api</string>
    </array>

Вы можете напрямую установить для автоматической регистрации событий в приложении значения "true" или "false", если добавите FacebookAutoLogAppEventsEnabled в качестве ключа в Info.plist.

Чтобы вход правильно работал в приложениях Mac Catalyst, в проект необходимо добавить функцию Keychain Sharing.
  1. При настройке цели приложения нажмите кнопку + Capability (Добавить функцию) на вкладке Signing & Capabilities (Подписи и функции).
  2. Найдите и выберите функцию Keychain Sharing.
  3. Убедитесь, что Keychain Sharing для цели задана.

Шаг 3. Подключение делегата приложения

Замените код в AppDelegate.swift методе следующим кодом. Он инициализирует SDK при запуске приложения и позволяет SDK обрабатывать данные, полученные из нативного приложения Facebook при входе или публикации. В противном случае пользователю нужно быть авторизованным в Facebook, чтобы войти с помощью браузера в приложении.
    
// AppDelegate.swift
import UIKit
import FacebookCore

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {    
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {          
        ApplicationDelegate.shared.application(
            application,
            didFinishLaunchingWithOptions: launchOptions
        )

        return true
    }
          
    func application(
        _ app: UIApplication,
        open url: URL,
        options: [UIApplication.OpenURLOptionsKey : Any] = [:]
    ) -> Bool {
        ApplicationDelegate.shared.application(
            app,
            open: url,
            sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
            annotation: options[UIApplication.OpenURLOptionsKey.annotation]
        )
    }  
}

В iOS 13 функция открытия URL перенесена в SceneDelegate. Если вы используете iOS 13, добавьте следующий метод в SceneDelegate для правильной работы таких функций, как вход и публикация:
// SceneDelegate.swift
import FacebookCore
  ...
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url else {
        return
    }

    ApplicationDelegate.shared.application(
        UIApplication.shared,
        open: url,
        sourceApplication: nil,
        annotation: [UIApplication.OpenURLOptionsKey.annotation]
    )
}

Шаг 4. Сборка и запуск проекта в эмуляторе

В Xcode выберите симулятор iOS и нажмите Выполнить. Xcode соберет проект, а затем запустит новейшую версию вашего приложения в симуляторе.

Шаг 5. Просмотр результатов в Events Manager


В Events Manager отображаются события, которые вы передали Facebook. При первом запуске приложения с этим кодом может пройти по крайней мере 20 минут, прежде чем события появятся в Events Manager.
Примечание. Может пройти до 20 минут, прежде чем события появятся в панели.

Дальнейшие действия

Инструкции по интеграции Событий в приложении и других продуктов Facebook в приложение см. в следующих руководствах.

Публикация контента в iOSДобавление входа через FacebookДобавление Событий в приложенииИспользование API Graph
Дополнительная настройка