iOS 版应用事件入门指南

本指南介绍如何集成 Facebook SDK,然后记录应用事件,从而为新建应用和现有应用添加这些事件。

我们对 Facebook iOS SDK 进行了一些更改。推荐升级至新版 Facebook iOS SDK。请参阅“设备同意”部分,了解此次更改的更多信息。

前期准备

您需要提供:

第 1 步:配置 Facebook 应用

如果尚未拥有应用,请前往应用面板,点击我的应用以创建新应用。前往设置 > 基本,查看应用详情面板,这里包含应用编号应用密钥以及应用的其他详细信息。

滚动到页面底部,然后点击添加平台。选择 iOS,添加您的应用详情,然后保存更改。

如要针对广告投放设置应用,请添加下列详细信息:

  • 应用网域:提供应用的 Apple App Store 网址。
  • 隐私权政策网址:提供隐私权政策的网址。必须提供此内容才能公开发布应用。
  • 服务条款网址:提供服务条款的网址。
  • 开放平台:滚动至“设置”面板底部,添加 iOS 开放平台。

如需详细了解如何为应用添加详情(例如图标或类别),请访问应用开发文档

第 2 步:关联您的广告账户和业务资产组合

如需在广告管理工具中投放广告和衡量安装量,请将至少一个广告账户和一个业务资产组合与您的应用相关联。

  1. 应用面板中点击设置 > 高级
  2. 授权的广告账户编号中,添加广告账户编号。您可以在广告管理工具中获取广告账户编号。
  3. 广告账户窗口中,点击开始并按照说明将应用与业务账户相关联。

第 3 步:设置开发环境

以下过程为在 Xcode 中使用 Swift 软件包管理工具设置开发环境。

  1. 在 Xcode 中,点击 File(文件)> Add Package...(添加软件包...)
  2. 在出现的搜索栏中,输入存储库网址:https://github.com/facebook/facebook-ios-sdk
  3. Dependency Rule(依赖项规则)中,选择 Up to Next Major Version(直到下一个重大版本),然后输入最近的版本。以下网站列有最新发布的版本:https://github.com/facebook/facebook-ios-sdk/releases/
  4. 请选择要使用的库以及要将这些库添加到哪些目标中。
  5. 点击 Add Package(添加软件包)以完成设置。

第 4 步:在 Facebook 注册和配置您的应用

  1. 在应用面板的应用设置 > 基本选项卡中,向下滚动并点击 + 添加平台
  2. 向下滚动到 iOS 卡片,并添加您的捆绑包编号。在 Xcode 项目的 iOS 应用程序目标 (iOS Application Target) 中找到捆绑包标识符。您可以随时更新捆绑包编号。

第 5 步:配置项目

使用包含应用数据的 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 功能列为应用目标。

第 6 步:关联应用委托和场景委托

AppDelegate.swift 方法中的代码替换为以下代码。此代码会在启动应用时初始化 SDK,并在您执行登录或分享操作时,允许 SDK 处理原生 Facebook 应用的登录及分享。否则,用户便须登录 Facebook 才能使用应用内浏览器进行登录。

  
// AppDelegate.swift
import UIKit
import FBSDKCoreKit

@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 FBSDKCoreKit
  ...
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]
    )
}

第 7 步:添加应用事件

系统会在应用内使用以下 3 种方式追踪事件:

iOS 14 版 App Store Connect

您的应用收集并发送到 Facebook 的事件可能需要您在 App Store Connect 问卷中披露这些数据类型。您应负责确保在应用程序的隐私权政策中反映出这一点。访问 Apple App Store 隐私详情一文,了解您需要披露的数据类型的更多相关信息。

自动记录的事件

使用 Facebook SDK 时,除非禁用事件自动记录功能,否则系统会为 Facebook 事件管理工具自动记录并收集应用中的某些事件。这些事件与所有用途相关,例如定位、成效衡量和优化。

应用事件自动记录功能收集的事件包括三个主要事件:应用安装、应用启动和购买。启用自动记录功能时,广告主可禁用这些事件,以及登录展示事件等其他 Facebook 内部事件。但是,如果已禁用自动记录功能,但仍想记录特定事件(例如安装或购买事件),则可在应用中手动记录这些事件。

事件详情

安装应用

新用户首次激活应用或首次在特定设备上启动应用时。

启动应用

用户启动应用后,Facebook SDK 便会初始化,系统也会记录该事件。但是,如果在首次启动后 60 秒内发生第二次应用启动事件,则系统不会记录第二次应用启动事件。

应用内购买

由 Apple App Store 或 Google Play 商店处理的购买完成时。如果您使用其他支付平台,则需要手动添加购买事件代码。

Facebook SDK 崩溃报告

(仅供 Facebook 使用)

如果应用因 Facebook SDK 而崩溃,系统会在应用重启时生成崩溃报告并将其发送给 Facebook。此报告不包含用户数据,并且有助于 Facebook 确保 Facebook SDK 的质量和稳定性。要禁止记录此事件,请禁用自动记录事件功能

应用内购买自动记录的事件

Apple 提供了四种不同的应用内购买类型:消耗品、非消耗品、自动续订和非续订。如果您使用 StoreKit 1 实施应用内购买,我们会自动记录每个应用内购买类型。如果您使用 StoreKit 2 实现应用内购买,我们会自动记录非消耗品、自动续订订阅和非续订订阅。如果您也想自动记录消耗品,您需要向 Info.plist 添加 SKIncludeConsumableInAppPurchaseHistory 键:

<key>SKIncludeConsumableInAppPurchaseHistory</key>

<true/>

在 StoreKit 1 中,当用户成功购买产品、还原产品或尝试购买产品但购买失败时,我们会自动记录事件。在 StoreKit 2 中,当用户成功购买产品或恢复产品时,我们会自动记录事件。如果您也想在 StoreKit 2 中购买失败时记录事件,则必须手动调用我们提供的一个 API。您可以通过以下方式在 Store Kit 2 购买流程中调用此 API:

do {
   let result = try await product.purchase()
   switch result {
   case .success(let verificationResult):
       // Handle success case
   case .pending:
       // Handle pending case
   default:
       AppEvents.shared.logFailedStoreKit2Purchase(product.id)
   }
} catch {
   AppEvents.shared.logFailedStoreKit2Purchase(product.id)
}


获取设备同意

从 iOS 14.5 开始,您需要设置 isAdvertiserTrackingEnabled,并在每次为设备授予与 Facebook 分享数据的权限时,做好记录。

设备同意后,设为 Settings.shared.isAdvertiserTrackingEnabled = true

设备禁止追踪时,设为 Settings.shared.isAdvertiserTrackingEnabled = false

禁用自动记录事件功能

要禁用自动记录事件功能,请在 Xcode 中将应用程序的 Info.plist 作为代码打开,然后在属性目录中添加以下 XML:

<key>FacebookAutoLogAppEventsEnabled</key>
<false/>

在某些情况下(例如要获得用户同意或履行法定义务),您可能想要延迟收集自动记录的事件,而不是将其禁用。这种情况下,在最终用户同意后,可设置 Settings.shared.isAutoLogAppEventsEnabled = true 以重新启用自动记录功能。

如果出于某些原因需再次暂停收集,请设置 Settings.shared.isAutoLogAppEventsEnabled = false

您也可以通过应用面板禁用应用内购买事件自动记录功能。请前往基本>设置中的 iOS 图卡,将开关切换为

禁用广告主编号收集功能

要禁用 advertiser-id 收集功能,请在 Xcode 中以代码的形式打开应用程序的 .plist,然后在属性目录中添加以下 XML:

<key>FacebookAdvertiserIDCollectionEnabled</key>
<false/>

在某些情况下(例如要获取用户同意或履行法定义务),您可能想要延迟收集 advertiser_id,而不是将其禁用。这种情况下,在最终用户同意后,可设置 Settings.shared.isAdvertiserIDCollectionEnabled = true

如果出于某些原因需暂停收集,请设置 Settings.shared.isAdvertiserIDCollectionEnabled = false

手动记录事件

要记录自定义事件,只需将事件名称作为 AppEvents.Name 传递即可:

AppEvents.shared.logEvent(AppEvents.Name("battledAnOrc"))

事件参数

Meta 已创建一组实用事件参数,以便让这些参数随标准事件或您自己的自定义事件一起传递。您也可以提供自己的参数。

如果您想使用应用事件来衡量动态广告的转化量,请将 fb_content_id 参数设为所关联动态广告中使用的商品编号的值。

这些预定义参数旨在指引您了解常见的记录模式,并可能在报告和其他用户界面中具有更易读的形式。记录您在查看细分数据时想了解的一系列参数。这些参数的推荐说明仅用作指南,您可以将这些参数用于对应用有意义的任何事件。

参数将通过字典传递,其中的键会将参数名称记录为 AppEvents.ParameterName,且对应的值必须为 String 或 number(IntDouble 等)。

第 8 步:测试事件

通过应用广告帮手,您可以测试应用内的应用事件,确保应用向 Facebook 发送事件。

  1. 打开应用广告帮手
  2. 选择应用部分选择您的应用,然后选择提交
  3. 滚动至页面底部,然后选择测试事件
  4. 启动应用,并发送事件。此事件应在页面中显示。

如果您想优化或追踪 SKAdNetwork 广告系列中的事件,您还需要妥善配置事件优先级(也称为“转化价值”),以便 Facebook 能够正确接收转化。详情请点击此处

了解更多

应用示例

为了让您能更轻松地了解如何使用应用事件,我们针对不同类型的应用创建了一些示例。每个应用示例提供了可收集的各类事件和参数的逐屏细分数据。每部分结尾都有一个表格,我们在其中列出了针对各个应用的推荐事件和参数。此外,如有必要,您也可以创建自己的事件和参数。