入门指南:iOS 版 Facebook SDK

本指南将说明如何使用 iOS 版 Facebook SDK 将您的 iOS 应用与 Facebook 集成。

从 SDK 版本 13.0 开始,所有对图谱 API 的调用都需要提供客户端口令

Facebook SDK 可提供以下功能:

准备工作

您将需要:

第 1 步:设置开发环境

  1. 在 Xcode 中,点击文件 > Swift 软件包 > 添加软件包依赖项
  2. 在出现的对话框中,输入存储库网址:https://github.com/facebook/facebook-ios-sdk
  3. 版本中,选择直到下一个重大版本,然后选择默认选项。
  4. 完成提示操作,选择要在项目中使用的库。
  5. 如果您想执行以下操作将此项目包添加至您的项目

    允许您的应用使用 Facebook 服务

    FacebookCore

    允许用户登录应用,同时允许应用请求访问数据的权限

    FacebookLogin

    允许您的应用在 Facebook 上分享内容

    FacebookShare

    允许用户登录您的应用,以参与并推广社交功能

    FacebookGamingServices

第 2 步:配置项目

使用包含应用数据的 XML 代码片段配置 Info.plist 文件。

在您集成 Facebook 登录之后,如果未禁用自动应用事件记录功能,系统将为事件管理工具自动记录和收集特定的应用事件。如要详细了解系统会收集哪些信息以及如何禁用自动应用事件记录功能,请参阅自动应用事件记录

  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. [CFBundleURLSchemes] 键内的 <array><string> 中,将 APP-ID 替换为您的应用编号。
  4. FacebookAppID 键内的 <string> 中,将 APP-ID 替换为您的应用编号。
  5. FacebookClientToken 键内的 <string> 中,将 CLIENT-TOKEN 替换为您在应用面板设置 > 高级 > 客户端口令中找到的值。
  6. FacebookDisplayName 键内的 <string> 中,将 APP-NAME 替换为您的应用名称。
  7. 如要使用任何 Facebook 对话框(如登录、分享、应用邀请等),实现将应用切换至 Facebook 应用的功能,则应用程序的 Info.plist 还需包含以下代码:
    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>fbapi</string>
      <string>fb-messenger-share-api</string>
    </array>

您可以在 Info.plist 中添加 FacebookAutoLogAppEventsEnabled 作为一个键,以直接将应用事件自动收集功能设为“true”或“false”。

您需为项目添加 Keychain Sharing 功能,才能使登录功能在 Mac Catalyst 应用程序中正常运作。
  1. 配置应用目标时,选择 Signing & Capabilities(签名和功能)选项卡中的 + Capability(添加功能)按钮。
  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 将打开网址的功能移到了 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 模拟器,然后点击 Run(运行)。Xcode 会构建您的项目,并发布模拟器中运行的最新版应用。

第 5 步:在事件管理工具中查看结果


事件管理工具会显示您向 Facebook 发送的事件。如果这是您首次使用此代码启动应用,则您可能需要等待至少 20 分钟,系统才会显示您的事件。
请注意:最多可能需要 20 分钟才会在面板中显示相关事件。

后续步骤

要了解如何对应用实现应用事件和其他 Facebook 产品,请点击下方其中一个按钮。

在 iOS 中分享内容添加 Facebook 登录功能添加应用事件使用图谱 API
高级配置