概要
何を書いてるか
FacebookSDKを使ってイベントをロギングするように開発する際、デバッグしようと思ってもAnalyticsツールに表示されるまでに非常に長い時間がかかることがある。
より簡単にデバッグできるようなツールと手順を書く。
デバッグ方法
アプリ上でDebugログを出しながら確認
[FBSDKSettings enableLoggingBehavior:FBSDKLoggingBehaviorAppEvents];
上記のコードを呼んでおくと、以下のようにSDKのeventロギングの挙動をconsole上に吐き出してくれるようになる。
2016-02-10 18:22:10.452 SampleApp[671:142860] FBSDKLog: FBSDKAppEvents Persist: Read 1 event states. First state has 1 events
2016-02-10 18:22:10.452 SampleApp[671:142860] FBSDKLog: FBSDKAppEvents Persist: Clearing
2016-02-10 18:22:10.454 SampleApp[671:142860] FBSDKLog: FBSDKTimeSpentData Restore: {"numInterruptions":0,"lastSuspendTime":1455096103,"secondsSpentInCurrentSession":243}
2016-02-10 18:22:10.993 SampleApp[671:142860] FBSDKLog: FBSDKAppEvents: Flushed @ 1455096130, 1 events due to 'PersistedEvents' - {
"advertiser_tracking_enabled" = 1;
"anon_id" = "AAAAAAAAA-BBBB-CCCC-DDDD-0000000000000000";
"application_tracking_enabled" = 1;
event = "CUSTOM_APP_EVENTS";
extinfo = "[\"i2\",\"jp.co.mixi.SampleApp\",\"0\",\"1.0.0\",\"9.2\",\"iPhone7,1\",\"ja_JP\",\"JST\",\"\U30bd\U30d5\U30c8\U30d0\U30f3\U30af\",414,736,\"3.00\",2,12,4]";
"url_schemes" = "[\"mixi-sample\",\"fb999999999999999\"]";
}
Events: [
{
"event" : {
"_logTime" : 1455096101,
"_ui" : "MainViewController",
"_eventName" : "fb_mobile_complete_registration"
},
"isImplicit" : false
}
]
Flush Result : Success
Developer向けサイト上でのデバッグ
Facebook Developer向けにApp Ads Helperというツールがある。
登録しているアプリを選択してツールを開く。これを利用するとリアルタイムにSDKのインストール状況やイベントの送信状況を把握できるのでデバッグが捗る。
SDKのセットアップ状況など

イベント送信をリアルタイムに確認
App Ads Helperの最下部に App Events Tester というツールがあるのでこれを開く。
開いたダイアログ上で例えばIDFA(Advertising ID)に紐付いたクライアントのイベント送信をリアルタイムに確認したい場合、「Device with Advertising ID」を選択し、IDFAを入力して「submit」する。
IDFAを取得する方法はObj-Cでは以下のようなコードをかけば確認可能。
NSLog(@"%@", [[ASIdentifierManager sharedManager] advertisingIdentifier]);
イベント送信をアプリ上で実行すると、flushされてサーバーにイベントが通知されるタイミングですぐに送られてきたイベントが表示される。
ちなみに
FBSDK 4.8以前では一部バグがあった(4.9.0以降で解決済み)
アプリをバックグラウンドに移行した際に、SDKがサーバーに未送信のイベント情報をにオブジェクトアーカイビングでディスクに一時的に書き込むのだが、それらイベント情報を次回起動し復元した時に一部条件でうまく送信されないバグがあった。
以下のコミットで修正されているようなので、うまくイベントが確認できない場合などは最新の4.9.1を利用すると良い。