Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- HIG
- 리펙토링
- map
- swift documentation
- clean architecture
- UITextView
- 리팩토링
- Refactoring
- RxCocoa
- ios
- Clean Code
- uiscrollview
- UICollectionView
- 애니메이션
- ribs
- 스위프트
- swiftUI
- Protocol
- tableView
- Xcode
- 클린 코드
- SWIFT
- rxswift
- MVVM
- collectionview
- uitableview
- 리펙터링
- Human interface guide
- Observable
- combine
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] Firebase Analytics 사용 방법, 이벤트 로깅, logEvent() 본문
Firebase Analytics 특성
- 몇 가지 이벤트를 자동으로 로깅하여 별도의 코드 없이 이벤트 수신 가능
- 대소문자 구분 ("abc"와 "Abc"는 다른 이벤트로 인식)
- logEvent(): 앱의 사용량과 행동을 수집
- 이벤트: 사용자 Action, 시스템 이벤트, 오류 등
- 사용자 속성: 사용자층을 나눈 개발자가 정의하는 언어 설정 (지리적 위치 등)
Analytics SDK 연동
- Firebase Console -> Firebase 프로젝트 생성
- Firebase 앱 등록, GoogleService-Info.plist 다운로드하여 프로젝트에 포함
- sdk 설치
cocoapods 이용 시)
pod 'Firebase'
pod 'Firebase/Analytics'
- Firebase SDK 초기화 코드 AppDelegate.swift의 didFinishLaunchingWithOptions 메소드안에 추가
import UIKit
import Firebase
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure() // <- 이곳
return true
}
}
- Firebase Debug 모드 활성화 - Arguments 추가
- Firebase 콘솔 안에서 데이터를 확인하는 부분인 DebugView는 (사용자 기기의 배터리 절약과 네트워크 데이터 사용량을 줄이기 위하여) 약 1시간동안 앱에서 취합된 후 일괄 업로드하지만, Arguments를 추가할 경우 지연 시간을 최소화하여 분석에 집중 가능
- Edit Scheme -> Run -> -FIRDebugEnabled 인자 추가
로깅 logEvent() 사용
- 주의) simulator가 아닌 device에서 테스트해야 로깅 기록 확인 가능
- Analytics.logEvent(_:parameters:)를 사용하여 로깅
- setUserID(_:), setUserProperty(_:forName:)과 같이 사용자 속성을 설정하여 보고서에 필터로 적용하면 다양한 사용자 세그먼트의 행동 분석이 가능 (단, 데이터가 보고서에 포함되기까지 몇시간 소요)
@IBAction func didTapButton(_ sender: Any) {
let event = "didTapButton"
let parameters = [
"file": #file,
"function": #function
]
Analytics.setUserID("userID = \(1234)")
Analytics.setUserProperty("ko", forName: "country")
Analytics.logEvent(AnalyticsEventSelectItem, parameters: nil) // select_item으로 로깅
Analytics.logEvent(event, parameters: parameters)
}
- Firebase -> DebugView에서 확인 가능
- 로그 2개 확인
- select_item -> "Analytics.logEvent(AnalyticsEventSelectItem, parameters: nil)"
- didTapButton -> "Analytics.logEvent(event, parameters: parameters)"
- didTapButton을 클릭해보면 직접 정의했었던 파라미터인 file, function 확인 가능
// 직접 정의한 파라미터 @IBAction func didTapButton(_ sender: Any) { let event = "didTapButton" let parameters = [ "file": #file, "function": #function ] Analytics.logEvent(event, parameters: parameters) }
주의사항
- firebase 배포와 같은 adhoc배포를 시도하면 로그가 찍히지 않는 현상이 있으므로 AppDelegate에 다른 설정이 필요
- 참고: https://stackoverflow.com/questions/43754848/how-to-debug-firebase-on-ios-adhoc-build/47594030#47594030
// AppDelegate.swift
// application:didFinishLaunchingWithOptions
#if DEBUG
var newArguments = ProcessInfo.processInfo.arguments
newArguments.append("-FIRDebugEnabled")
ProcessInfo.processInfo.setValue(newArguments, forKey: "arguments")
#endif
* 전체 코드: https://github.com/JK0369/ExAnalytics
* 참고
https://firebase.google.com/docs/analytics/debugview?hl=ko
https://help.apple.com/xcode/mac/8.0/#/dev3ec8a1cb4
https://firebase.google.com/docs/ios/setup?hl=ko
https://firebase.google.com/docs/analytics/get-started?platform=ios&hl=ko
https://support.google.com/firebase/answer/9234069?hl=ko&visit_id=637770705494270289-2963828229&rd=1
'iOS framework' 카테고리의 다른 글
Comments