티스토리 뷰
Firabase Analytics 를 적용하면서 정리한 내용의 포스팅입니다.
Analytics는 사용자가 앱에서 수행 중인 작업을 추적하고 분석할 수 있도록 도와주는 서비스입니다.
이벤트 설정을 자세하게 할수록 정확하게 사용자의 행동을 이해할 수 있습니다.
이러한 정보의 정확성이 중요하기 때문에 개발 및 테스트 할 때의 데이터가 실제 사용자의 데이터에 포함되어 있으면 정확한 정보가 오염되게 됩니다.
이를 위해서 개발과 프로덕션 환경을 나눠서 Firebase를 적용하려고 합니다.
제 경우에는 Firebase Crashlytics를 추가로 적용하는데 아래와 같은 에러가 발생했습니다!!
Error: Could not get GOOGLE_APP_ID in Google Services file from build environment
Crashlytics는 GoogleService-Info.plist 파일명을 참조하여 초기화하기 때문에 다른 파일명을 사용할 경우 에러가 발생되는 것 같았습니다.
이런 에러가 발생하는 분들에게도 도움이 될 수 있을 것 같아요!
우선 Firebase 콘솔에 들어가서 Dev/Product 프로젝트를 따로 2개 생성합니다.
각 프로젝트에서 받은 GoogleService-Info.plist 파일을 구분할 수 있도록 파일명을 변경해 줍니다.
ex) '-Dev', '-Prod' 등의 접미사
이제 파일을 프로젝트에 추가해 줘야하는데, 추가할 때 타겟 추가 버튼을 선택 해제 해줍니다.
실수로 추가했다면 파일을 선택하고 우측 File Inspector에서 해제할 수 있습니다.
타겟에서 해제하는 이유는 각 GoogleService-Info.plist(dev/prod) 파일이 사용되지 않기 때문입니다.
사용되지 않는 이유는 아래에 나와요!
저의 경우에는 아래와 같은 구조로 추가했습니다.
다음으로 프로젝트 타겟 선택 후, Build Phases 탭에서 스크립트 단계를 추가합니다.
추가한 스크립트 단계는 Copy Bundle Resources 단계 위에 배치해야합니다. (중요)
환경(dev/prod)에 따라 각 GoogleService-Info.plist 파일을 복사하는 스크립트를 구현하여, 추가한 단계에 넣습니다.
최종적으로 복사한 파일을 사용하기 때문에 파일을 읽는 Copy Bundle Resources 단계 전에 실행해줘야 하며, 파일 추가시 프로젝트 타겟을 제외한 것도 이런 이유 때문입니다.
case "${CONFIGURATION}" in
"Debug" )
cp -r "$SRCROOT/${PROJECT_NAME}/Firebase/Dev/GoogleService-Info-Debug.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist" ;;
"Release" )
cp -r "$SRCROOT/${PROJECT_NAME}/Firebase/Prod/GoogleService-Info-Release.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist" ;;
*)
;;
esac
테스트 환경에도 적용하고 싶다면 Configuration에 추가하여 따로 적용할 수 있습니다.
기본적으로는 Debug/Release가 설정되어 있습니다.
이제 Firebase Doc에 따라 AppDelegate에 Firebase 초기화 코드만 추가하면 됩니다.
FirebaseApp.configure()
빌드를 성공하면 복사된 GoogleService-Info.plist 파일을 확인해 봅시다.
Products 그룹의 .app 파일 우클릭 후 Show in Finder를 선택합니다.
Finder에서 .app 파일 우클릭 후 Show Package Contents를 선택합니다.
패키지 안에 GoogleService-Info.plist 파일을 열어서 GoogleService-Info-Dev.plist 파일과 일치하는지 확인합니다.
production 파일도 확인하려면 Run scheme을 Release로 변경 후 위와 같이 확인하면 됩니다.
이제 개발 환경에 맞게 Analytics가 적용되어 프로덕션 서비스의 데이터를 적확하게 분석할 수 있게 되었습니다!
Firebase 콘솔에 들어가서 잘 연결되었는지 확인해보세요 :)
- Total
- Today
- Yesterday
- AssociatedObject
- Realm
- TDD
- BaseViewController
- UIBarButtonItem
- database
- AVFoundation
- ssh
- IOS
- testing
- UIControl
- m3u8
- HLS
- pagingView
- Swift
- CollectionView
- RECORDING
- Cleancode
- xib
- Coordinator
- AVKit
- Design Pattern
- customAlertView
- UIButton
- Video
- permission error
- carousel
- Closure
- http live streaming
- NIB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |