FBSDKCoreKit (Facebook SDK)로 AppEvent 전송을 디버깅하는 방법
개요
무엇을 쓰는가?
FacebookSDK를 사용해 이벤트를 로깅하도록(듯이) 개발할 때, 디버그 하려고 생각해도 웹로그 분석 도구 에 표시되기까지 매우 오랜 시간이 걸리는 일이 있다.
더 쉽게 디버깅할 수 있는 도구와 절차를 작성합니다.
디버깅 방법
앱에서 Debug 로그를 보내면서 확인
[FBSDKSettings enableLoggingBehavior:FBSDKLoggingBehaviorAppEvents];
위의 코드를 호출하면 다음과 같이 SDK의 이벤트 로깅 거동을 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을 이용하면 좋다.
Reference
이 문제에 관하여(FBSDKCoreKit (Facebook SDK)로 AppEvent 전송을 디버깅하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/_atsushisakai/items/403f3d9e534067fd5f6e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
앱에서 Debug 로그를 보내면서 확인
[FBSDKSettings enableLoggingBehavior:FBSDKLoggingBehaviorAppEvents];
위의 코드를 호출하면 다음과 같이 SDK의 이벤트 로깅 거동을 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을 이용하면 좋다.
Reference
이 문제에 관하여(FBSDKCoreKit (Facebook SDK)로 AppEvent 전송을 디버깅하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/_atsushisakai/items/403f3d9e534067fd5f6e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(FBSDKCoreKit (Facebook SDK)로 AppEvent 전송을 디버깅하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/_atsushisakai/items/403f3d9e534067fd5f6e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)