Firebase Crashlytics

6721 단어 개발iOSiOS

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

좋은 웹페이지 즐겨찾기