このガイドでは、Facebook SDKを統合してアプリイベントを記録することにより、新規または既存のアプリにアプリイベントを追加する方法について説明します。
Facebook iOS SDKに変更が加えられました。Facebook iOS SDKを新しいバージョンにアップグレードすることをおすすめします。この変更について詳しくは、デバイスの同意の取得に関するセクションをご覧ください。
アプリをまだ作成していない場合は、アプリダッシュボードにアクセスし、[マイアプリ]をクリックしてアプリを新規作成します。[設定] > [基本]をクリックして[アプリの詳細]パネルを開きます。ここには、アプリID、app secret、アプリに関するその他の情報が表示されます。
ページの下部までスクロールして[プラットフォームを追加]をクリックします。[iOS]を選択し、アプリの詳細を追加して、変更を保存します。
広告用にアプリを設定するため、以下の詳細を設定します。

アプリにアイコンやカテゴリなどの詳細を追加する方法について詳しくは、アプリ開発のドキュメントを参照してください。
広告を掲載して広告マネージャでインストール数を測定するには、1つ以上の広告アカウントと1つのビジネスポートフォリオをアプリに関連付けます。
以下の手順では、Swift Package Managerを使用してXcodeの開発環境を設定します。
Info.plistファイルに、アプリに関するデータが含まれているXMLスニペットを挿入します。
Facebookログインを統合すると、特定のアプリイベントは、アプリイベントの自動記録を無効にしない限り、イベントマネージャのために自動的に記録、収集されます。これは、アプリコードで変更できます。また、アプリダッシュボードかイベントマネージャの[アプリイベント]の下のトグルで切り替えることもできます。AutoLogAppEventsEnabledのフラグとトグルとの間で値が競合している場合、「Facebook SDKの自動イベント記録」のトグル値が優先されることに注意してください。収集される情報やアプリイベントの自動記録を無効にする方法については、アプリイベントの自動記録をご覧ください。
Info.plistを右クリックし、[プログラムで開く]▸[ソースコード]を選択します。
<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>
[CFBundleURLSchemes]の<array><string>にあるAPP-IDは、自身のアプリIDに置き換えてください。FacebookAppIDの<string>にあるAPP-IDは、自身のアプリIDに置き換えてください。FacebookClientTokenの<string>にあるCLIENT-TOKENは、アプリダッシュボードの[設定 > 高度 > クライアントトークン]にある値に置き換えてください。FacebookDisplayNameの<string>にあるAPP-NAMEは、実際のアプリ名に置き換えてください。Info.plistに以下を含める必要があります。
<key>LSApplicationQueriesSchemes</key><array><string>fbapi</string><string>fb-messenger-share-api</string></array>
Info.plistにキーとしてFacebookAutoLogAppEventsEnabledを追加することで、アプリイベントの自動収集をtrueまたはfalseに直接設定できるようになります。
Mac Catalystアプリでログインが機能するには、プロジェクトにキーチェーン共有機能を含める必要があります。



AppDelegate.swiftメソッドのコードを次のコードに置き換えます。このコードは、アプリの起動時にSDKを初期化し、ログインアクションやシェアアクションが実行されたときにネイティブFacebookアプリのログインとシェアリングをSDKが処理できるようにします。このコードを使用しない場合は、ユーザーは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では、URLを開く機能は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]
)
}
アプリでイベントをトラッキングする方法は3とおりあります。
アプリが収集してFacebookに送信するイベントによっては、App Store Connect質問表でそのようなデータタイプを公開するよう求められる場合があります。アプリのプライバシーポリシーでこの点が反映されていることを確認するのは、開発者の責任です。公開する必要があるデータタイプの詳細については、Apple App Storeでのプライバシーに関する詳細情報の記事をご覧ください。
Facebook SDKを使用すると、イベントの自動記録を無効にしない限り、アプリの特定のイベントは自動的に記録、収集され、Facebookイベントマネージャに使用されます。このようなイベントは、ターゲット設定、効果測定、最適化などあらゆるユースケースに関連します。
具体的には、アプリのインストール、アプリの起動、購入という3つの主要イベントが自動で記録されます。自動記録が有効である場合、広告主はこれらのイベントや、ログインインプレッションイベントなどほかのFacebook内部イベントを無効化できます。一方、自動記録を無効にした場合に、インストールや購入などの特定のイベントを記録するには、該当するイベントの記録をアプリ内で手動実装する必要があります。
| イベント | 詳細 |
|---|---|
アプリのインストール | 新しい利用者がアプリを初めてアクティベートしたとき、または特定のデバイスでアプリが初めて起動されたとき。 |
アプリの起動 | 利用者がアプリを起動し、Facebook SDKが初期化されてイベントがログに記録されたとき。ただし、最初のアプリの起動イベントから60秒以内に2回目のアプリの起動イベントが発生した場合、2回目のイベントはログ記録されません。 |
アプリ内購入 | Apple App StoreまたはGoogle Playにより処理された購入が完了したとき。ほかの支払いプラットフォームを使用している場合、購入イベントコードを手動で追加する必要があります。 |
Facebook SDKクラッシュレポート (Facebookの使用に限定。) | Facebook SDKが原因でアプリがクラッシュした場合、クラッシュレポートが生成されて、アプリの再起動時にFacebookに送られます。このレポートは、ユーザーデータを含んでおらず、FacebookがSDKの品質と安定性を確認する上で役立つものです。このイベントのログ記録をオプトアウトするには、自動でログ記録されるイベントを無効にしてください。 |
Appleは、消耗品、非消耗品、自動更新可能サブスクリプション、非更新サブスクリプションの4種類のアプリ内購入を提供しています。StoreKit 1でアプリ内購入を実装する場合、アプリ内購入は、これらの種類ごとに自動的に記録されます。StoreKit 2でアプリ内購入を実装する場合、非消耗品、自動更新可能サブスクリプション、非更新サブスクリプションが自動的に記録されます。消耗品も自動的に記録するには、Info.plistにSKIncludeConsumableInAppPurchaseHistoryのキーを追加する必要があります。
<key>SKIncludeConsumableInAppPurchaseHistory</key><true/>StoreKit 1では、ユーザーが商品の購入に成功した場合、商品を復元した場合、または商品の購入を試みて購入に失敗した場合に、イベントが自動的に記録されます。Store Kit 2では、ユーザーが商品の購入に成功した場合、または商品を復元した場合に、イベントが自動的に記録されます。Store Kit 2で購入に失敗した際にもログに記録する場合には、呼び出す必要のある手動APIが用意されています。このAPIは、StoreKit 2購入フローで以下のように呼び出すことができます。
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を設定します。
イベントの自動記録を無効にするには、アプリケーションのInfo.plistをXcodeでコードとして開き、次のXMLをプロパティの辞書に追加します。
<key>FacebookAutoLogAppEventsEnabled</key> <false/>
ユーザーの同意を得たり法的な義務を履行したりする場合など、状況によっては、自動的に記録される一連のイベントの収集を無効にするのではなく、単に遅らせたいことがあります。その場合、エンドユーザーが同意した後でSettings.shared.isAutoLogAppEventsEnabled = trueを設定することにより、自動ログ記録を再有効化します。
何らかの理由で収集を再度中断するには、Settings.shared.isAutoLogAppEventsEnabled = falseを設定します。
アプリ内購入イベントの自動イベント記録は、アプリダッシュボードを使用して無効にすることもできます。[基本]>[設定]の下の[iOSカード]に移動して[No]に切り替えます。
advertiser-idの収集を無効にするには、アプリケーションの.plistをXcodeでコードとして開き、次の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パラメーターを関連するダイナミック広告で使う製品IDの値に設定してください。
定義済みパラメーターは、一般的なログ記録パターンのガイダンスとして提供されています。レポートやその他のUIでもっと読みやすい形式にすることもできます。詳細を確認するパラメーターのセットを記録します。これらのパラメーターで推奨されている説明はあくまでもガイダンスです。アプリにとって意味があるものであれば、パラメーターをどのような用途にも使用できます。
パラメーターはディクショナリを介して渡されます。キーはパラメーター名をAppEvents.ParameterNameとして保持します。値はStringまたは数値(Int、Doubleなど)のいずれかでなければなりません。
アプリ広告ヘルパーを使用すると、アプリのアプリイベントをテストして、アプリがFacebookにイベントを送信していることを確認できます。
SKAdNetworkキャンペーンのイベントの最適化やトラッキングを予定している場合、Facebookがスレッドを正しく受け取れるように、イベントの優先度(コンバージョン値)を適切に設定することも必要になります。詳しくはこちらをご覧ください。
さまざまな種類のアプリの例を示して、アプリイベントの使い方を簡単に理解できるようにします。それぞれのアプリの例では、収集可能なさまざまなイベントとパラメーターを画面ごとに詳細に説明しています。各セクションの終わりには、アプリごとに推奨されるイベントとパラメーターを示す表があります。必要に応じて、独自のイベントとパラメーターを作成することもできます。