UserLocation 업데이트 문제 - boostcampwm-2021/iOS04-OwnMyWay GitHub Wiki

문제 상황

  • Ongoing 화면에서 위치 기록 서비스를 키면 백그라운드, 다른 화면으로 이동 해서도 동작하는 위치 기록서비스가 필요
  • 초반에는 Ongoing VC에서 LocationManager를 위치시킨 후 위치를 기록해주었으나 Ongoing VC가 메모리에서 해제되는 경우 작동하지 않는 문제가 발생

해결

  • Singleton 형태의 Custom LocationManager를 만든 뒤 어떤 화면에 위치하더라도 LocationManager가 사라지지 않도록 유지시켜줌
    • 왜 Singleton을 사용했는가?
      • 전체 화면에 하나의 LocationManager를 위치시키기 위해서
      • LocationManager가 UI단에서 동작할 것이여서 Singleton이 생성되어도 ViewModel, Usecase등의 Test를 독립적으로 시행할 수 있을것으로 예상
  • LocationManager의 Delegate를 현재 위치한 화면에 따라 변경시켜주어 각기 다른 동작을 하도록 구현
    • ex. 홈화면에서는 CoreData에 위치를 저장시켜줌, Ongoing화면에서는 CoreData에 위치 저장 뿐만 아니라 화면에도 이동경로가 업데이트 되도록 구현