단 한번의 설정으로
당신의 등하교/출퇴근 길에 편안함을.

AlarmMap을 사용하세요.

사용자의 현재 위치를 기반으로 대중교통의 실시간 정보를 확인할 수 있습니다.
앱을 켜지 않아도 알림을 통해 대중교통 정보를 확인할 수 있습니다.

더이상 버스/지하철을 놓칠까봐 노심초사하며 대중교통 앱을 확인하지 마세요.
AlarmMap을 사용하세요.

AlarmMap에 등하교/출퇴근 경로와 시간을 등록하세요.
그리고 AlarmMap을 잊어버리세요.

AlarmMap 시연 영상

AlarmMap은 사용자의 현재 위치에 따른 대중교통 정보를 자동으로 알려줍니다.
AlarmMap은 대중교통 정보를 Notification을 통해 전달하기 때문에,
앱을 켜지 않아도 완벽한 타이밍에 필요한 정보를 얻을 수 있습니다.

단순한 지도 앱이 아닙니다


Automatic

모든 것이 자동으로 이루어집니다. 사용자가 설정해 둔 시간이 되면 동작을 시작합니다. 목적지에 도착하면 앱은 동작을 멈춥니다. 단 한번의 설정으로 이 모든 것이 이루어집니다.


Notification

사용자는 Notification을 통해 대중교통 정보를 제공받습니다. Youtube 영상을 보거나, 메시지를 주고 받으면서 대중교통 정보를 확인할 수 있습니다.


Integration

버스, 지하철, 지도 앱의 핵심 기능을 하나의 앱에 담았습니다. AlarmMap 하나로 버스와 지하철의 실시간 정보를 확인할 수 있습니다.


Simple & Convenient

필요한 정보를 한 눈에 볼 수 있습니다. 앱 사용과 화면 구성을 복잡하게 만드는 부가적인 기능들 보다는, 사용자가 자주 이용하는 핵심적인 기능에 집중했습니다. 쉽고 편안한 앱 사용 경험을 제공합니다.

다양한 기능들


사용자가 알람을 받고 싶은
경로를 등록


사용자가 이용중인 경로의
다음 탑승 대중교통의 정보를
바로 확인 할 수 있습니다


사용자가 원하는 지하철 역의
실시간 지하철 도착정보를
바로 확인 할 수 있습니다


사용자가 원하는 버스 정류장의
실시간 버스 도착정보를
바로 확인 할 수 있습니다

AlarmMap을 구현하기 위해
사용된 기술들


AlarmMap의 설계와 ADS를 충족하고
주요 기능들을 구현하기 위해서는
다양한 기술들이 필요합니다.

그 중에서도 기능 구현에 있어서 없어서는 안 될
핵심 기술들을 하나씩 살펴보겠습니다.


Background


AlarmMap의 핵심 기능은 바로 자동 동작입니다.

사용자는 전혀 조작을 하지 않아도 앱은 스스로 서비스를 제공해야 하기 때문에 AlarmMap은 모든 동작을 백그라운드에서도 수행합니다.

사용자는 버스에서 웹툰을 보다가도, AlarmMap의 알림을 보고 다음 행선지로 갈 준비를 할 수 있습니다.

AlarmMap은 사용자의 현재 위치를 추적해야 하기 때문에 백그라운드 실행을 위해 Background Modes에서 Location updates를 활성화시켰습니다.

아래에 후술할 모든 기술은 모두 백그라운드에서 동작합니다.


Alarm


AlarmMap은 정해진 시간이 되면 자동으로 경로 안내를 시작합니다.

사용자는 일단 한번 시간 설정을 하게 되면, 집에서 유튜브를 보다가도 정해진 시간에 알림을 받고 나갈 채비를 할 수 있습니다.

사용되는 라이브러리

AlarmMap은 시간 정보를 사용하기 위해 Timer 클래스를 사용니다.
또한 백그라운드에서 디바이스의 자원과 전력을 사용하기 때문에 프로세스의 효율적인 관리를 위해 RunLoop를 사용합니다.

알고리즘

AlarmMap에 등록되는 Timer들은 요일에 상관 없이 모두 하루의 주기마다 event을 발생시킵니다.
Event을 발생시킨 Timer는 현재 시간이 자신의 요일인지 검사하고, 자신의 요일이 맞을 경우에 현재 위치 추적을 시작함과 동시에 사용자에게 경로 정보를 실시간으로 전달합니다.


Location Service


AlarmMap은 위치 기반 서비스이기 때문에 사용자의 현재 위치를 추적합니다.

사용자의 위치가 변할 때마다 지정된 경로에 따라 사용자의 현재 위치를 분석하여 다음 행선지 정보를 사용자에게 제공합니다.

사용자는 지하철을 타면서 환승역 근처에 오게 되면 AlarmMap의 알림을 보고 내릴 준비를 하게 됩니다.

사용되는 라이브러리

AlarmMap은 현재 정보를 사용하기 위해 CLLocationManager 클래스를 사용합니다.

알고리즘

위의 Timer 클래스가 event를 발생시켜 위치 추적을 시작하기 위해 CLLocationManager를 작동시킵니다.
CLLocationManager가 작동되면 사용자의 위치가 정해진 offset 만큼 움직일 때마다 event를 발생시킵니다.
이 event가 발생할 때마다 현재 목적지와의 거리를 계산하고, 사용자가 목적지에 도착되었다고 판단하면 다음 목적지로의 경로 안내를 시작합니다.
사용자가 최종 목적지에 도착했다고 판단하면 CLLocationManager는 동작을 멈추고 경로 정보 제공도 멈춥니다.


Notification


AlarmMap은 모든 동작이 백그라운드에서 이루어지기 때문에, 사용자에게 제공되는 모든 알림은 전부 notification을 통해 전달됩니다.

AlarmMap은 실시간으로 필요한 정보를 notification으로 전달하기 때문에, 사용자는 다음 경로를 생각할 필요 없이 AlarmMap의 notification이 알려주는 대로 이동하면 됩니다.

사용되는 라이브러리

AlarmMap은 notification을 띄우기 위해 UNUserNotificationCenter 클래스를 사용합니다. 실시간 경로 정보를 제공하려면 API를 호출해야 합니다.

공공데이터포털 사용 예시

Google Places 사용 예시

ODsay 사용 예시


API


AlarmMap은 대중교통 경로 정보를 실시간으로 사용자에게 제공합니다. 이를 위해 AlarmMap은 백그라운드에서 API를 호출하여 대중교통 정보를 가져옵니다.

또한 AlarmMap은 사용자의 현재 위치 뿐만 아니라 정해진 경로의 위치 정보도 알아야 하기 때문에 이를 API를 호출하여 장소의 위치 정보를 가져옵니다.


사용되는 API

공공데이터포털

정류소 정보 조회, 실시간 대중교통 도착 정보 조회

ODsay

대중교통 최단경로 조회

Google Places

장소 검색

Sign up for beta access

Blandit varius ut praesent nascetur eu penatibus nisi risus faucibus nunc.