Firebase Crashlytics
Firebase Crashlytics
Firebase Crashlytics는 비정상적으로 종료되는 즉, Crash, 앱이 죽는 현상을 파악하고 여러 솔루션을 제공하는 도구다. 앱의 규모가 커질 수록 또 다양한 사용자가 다양한 방법으로 앱을 사용할 수록 어디서 어떻게 문제가 터질지 모른다. 그런 면에서 예상치 못한 Crash를 갈무리하고 또 원인을 찾게 해줌으로 문제해결 시간을 절약하고 개발자의 답답함을 해결해줄 수 있는 좋은 도구이다.
Firebase Crashlytics 설치
Firebase Crashlytics 설치 방법은 공식 문서가 너무 친절하게 잘 알려주고 있다. 다만 필자처럼 SPM을 쓰는 경우 Run Script에서 기존 문서대로(cocoapods) 하면 해당 SDK를 찾을 수 없다는 Phase Error가 발생한다. 이 경우는 아래의 위치에서 찾을 수 있도록 설정하자.
"${BUILD_DIR%Build/*}SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
또 주의할 점은 첫 크래쉬를 테스트할 때, Edit Scheme에서 디버그 모드로 실행시 Firebase 디버그 모드도 같이 실행시켜주는 것이다. Firebase의 디버그 모드로 실행하면 실시간으로 앱에서 일어난 작업이 업로드된다. 그렇지 않으면 일정 시간을 기다려야 할 수도 있다.
Firebase Crashlytics 사용하기
Firebase Crashlytics에서 기본적으로 제공하는 기능도 충분히 강력하다. 여기에 더해 추가적으로 사용할 수 있는 기능들을 살펴보자. 나중에 사용하게 될 기능은 추후에 포스팅...
1. setUserID
어떤 고객이 오류가 발생해서 앱이 안된다고 할 때, 앱이 죽었다고 하는데 왜 죽었는지 모를 때 또는 특정한 세그먼트의 유저들에게 발생하는 오류에 대해 안내를 한다고 할 때 어떻게 해야 할까? 이런 경우 사용자를 특정할 수 있도록 해당 메소드를 사용하면 된다.
Crashlytics.crashlytics().setUserID(localUser.id.stringValue)
이렇게 사용자의 ID를 설정하면, 오류가 발생하는 건마다 해당 사용자의 ID를 확인할 수 있고 반대로 사용자의 ID가 발생한 오류 목록을 조회할 수도 있다.
2. setCustomValue
setUserID의 확장판으로 추가적으로 필요한 데이터들은 커스텀키로 설정할 수 있다.
- ID 외의 정보를 알고 싶을 때, 예를 들어 권한 허용 여부, 기기 네트워크 상태, uuid 등
- 사용자의 마지막 액션을 알고 싶을 때, 어느 단계까지 진행은 했는데 마지막 버튼을 누르는데서 Crash
이런 데이터를 커스텀키로 설정해서 어느 부분에서 문제가 발생했는지 확인할 수 있다.
이렇게 하나씩 추가하거나
Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")
키를 호출한 뒤에 다른 값으로 기존 키의 값을 수정할 수도 있다.
Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")
// Set int_key to 50 from 100.
Crashlytics.crashlytics().setCustomValue(50, forKey: "int_key")
키가 많다면 NSDictionary를 매개변수로 전달해서 한번에 관리할 수 있다.
let keysAndValues = [
"string key" : "string value",
"string key 2" : "string value 2",
"boolean key" : true,
"boolean key 2" : false,
"float key" : 1.01,
"float key 2" : 2.02
] as [String : Any]
Crashlytics.crashlytics().setCustomKeysAndValues(keysAndValues)
Crashlytics는 최대 64개의 키-값 쌍을 지원한다. 각 키-값 쌍의 최대 크기는 1KB까지이다.
3. 기타
이외에도 log, logException, 앱 분리, 잦은 충돌시 에러 메시지 보내기 등 다양한 기능이 있다. 필자는 적용 및 사용을 해본 뒤에 포스팅을 이어가도록 하고, 궁금한 점은 아래의 문서를 확인해보면 좋을 것 같다.
Firebase Crashlytics 추가 기능 관련 문서 :
https://firebase.google.com/docs/crashlytics/customize-crash-reports?authuser=0&platform=ios
Author And Source
이 문제에 관하여(Firebase Crashlytics), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@phs880623/Firebase-Crashlytics저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)