번호: 003, 작성일자: 2024-01-22

2024.01.15 ~ 2024.01.21

🔥 Firebase Multiple Configuration 구현


Firebase 서비스를 사용할 때 Dev, Release 환경을 구분하게 되면 실제 Release 환경에서 발생한 이슈 또는 데이터등을 확인하기 편리하여 명확하게 구분이 된다는 장점이 있습니다.

구분하는 방법은 2가지가 있습니다.

  1. Firebase 프로젝트 자체를 분리하는 방법
    1. Firebase 프로젝트를 분리하여 BundleID가 동일하게 유지할 수 있습니다.
  2. Firebase 프로젝트 내에서 iOS앱을 분리하는 방법
    1. Xcode Configuration 별로 BundleID를 변경작업을 진행합니다.

위의 방법을 정의했다면 각각의 GoogleService-Info.plist를 다운받은 후 Target Membership에 추가하지 않고 Build Phase에서 각각 연결하여 추가합니다.

GoogleService-Info.plist 추가 스크립트

case "${CONFIGURATION}" in
  "Debug" )
cp -r "$SRCROOT/${PROJECT_NAME}/FirebaseConfigurations/Debug/GoogleService-Info.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist" ;;
  "Release" )
cp -r "$SRCROOT/${PROJECT_NAME}/FirebaseConfigurations/Release/GoogleService-Info.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist" ;;
*)
;;

🙋🏻‍♂️ 기타 사항


  1. Encoded Polyline 이라는 기술을 알게 되었는데 경로 그릴 때 직선 부분 필요없는 부분들은 모두 계산해서 간소화 시켜 한줄의 문자열로 표시할 수 있는 기술이라고 합니다.
  2. 모듈화 실패경험을했다.
    • 프로젝트에서 사용하는 전역데이터들을 별도의 프레임워크로 분리하여 해당 프레임워크를 추가한 부분은 전역데이터를 사용한다는 전제하에 파악하기 용이하여 리팩토링시 도움이 되겠다라고 생각했는데 하지만, 적용해보니 오히려 가독성이 저하되는 경험을 해서 해당 프레임워크를 제거하게 되었다.