LoginSignup
4
4

More than 5 years have passed since last update.

FBSDKCoreKit(Facebook SDK)によるAppEvent送信をデバッグする方法

Last updated at Posted at 2016-02-10

概要

何を書いてるか

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のセットアップ状況など

スクリーンショット 2016-02-10 22.11.39.png

イベント送信をリアルタイムに確認

App Ads Helperの最下部に App Events Tester というツールがあるのでこれを開く。

スクリーンショット 2016-02-10 12.08.28.png

開いたダイアログ上で例えばIDFA(Advertising ID)に紐付いたクライアントのイベント送信をリアルタイムに確認したい場合、「Device with Advertising ID」を選択し、IDFAを入力して「submit」する。

IDFAを取得する方法はObj-Cでは以下のようなコードをかけば確認可能。

NSLog(@"%@", [[ASIdentifierManager sharedManager] advertisingIdentifier]);

スクリーンショット 2016-02-10 12.13.17.png

イベント送信をアプリ上で実行すると、flushされてサーバーにイベントが通知されるタイミングですぐに送られてきたイベントが表示される。

ちなみに

FBSDK 4.8以前では一部バグがあった(4.9.0以降で解決済み)

アプリをバックグラウンドに移行した際に、SDKがサーバーに未送信のイベント情報をにオブジェクトアーカイビングでディスクに一時的に書き込むのだが、それらイベント情報を次回起動し復元した時に一部条件でうまく送信されないバグがあった。

以下のコミットで修正されているようなので、うまくイベントが確認できない場合などは最新の4.9.1を利用すると良い。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4