< 사용 설명 >
앱을 최초로 설치하면, 다음과 같은 안내문이 표시됩니다.
우리 앱은, 안드로이드에 기본적으로 탑재되어 있는 구글 캘린더의 일정 데이터을 사용(가져오기, 추가, 수정, 삭제)함으로써, 구글 캘린더와의 동기화를 구현하고 있습니다*.
* 통신을 통한 구글 캘린더 서버와의 동기화는 안드로이드가 알아서 수행
앱 최초 실행 시 위의 그림과 같이 데이터에 있는 모든 캘린더를 우리 앱에 표시합니다.
사용자는 설정 화면에서 각 캘린더* 옆 체크박스를 체크 또는 해제하여, 우리 앱에 표시하고자 하는 캘린더를 선택할 수 있습니다.
* 계정명이나, 캘린더 명칭에 "local" 또는 "기기의 제조사 이름"이 포함되어 있는 캘린더의 경우, 기기에만 저장되는 캘린더이므로, 구글 캘린더와 동기화 되지 않을 수 있습니다.
사용자는 일정 저장 캘린더 버튼을 눌러, 우리 앱에서 추가되는 일정이 저장되는 캘린더를 선택할 수 있습니다*.
* 기본적으로 가장 먼저 나오는 계정의 첫번째 캘린더가 일정 저장 캘린더로 선택되어 있습니다.
사용자가 웹의 구글 캘린더에서 새로운 캘린더를 추가할 경우,
앱을 완전 종료 후 다시 실행하면, 추가된 캘린더가 설정 화면의 캘린더 목록에 추가됩니다.
< 동기화 구현 방법에 대한 설명 >
구글 캘린더와의 동기화를 구현하고자 한다면,
(1) Google Calendar API, (2) Calendar Provider API 둘 중 하나를 선택해서 사용할 수 있다.
우리 앱은 (2)를 사용해서 구글 캘린더와의 동기화를 구현하고 있다.
시행착오 과정에서 내가 이해한 (1)과 (2)의 대략적인 동기화 방식은 이렇다.
(1) Google Calendar API
구글 캘린더 서버와 앱이 직접 통신하는 방식이다. 동기화를 위해서,
구글 캘린더 서버의 일정 데이터를 직접 가져와야 한다.
앱에서 일정 데이터가 변경되었을 때는, 구글 캘린더 서버로 변경 사항 보내서 구글 캘린더에 반영되게 해줘야 하고,
구글 캘린더에서 데이터가 변경되었을 때는, 알림을 받아 앱에도 변경 사항이 반영되게 해줘야 한다.
이를 위해, 구글 캘린더 서버로의 사용자 접근을 위한 권한 획득 과정 구축,
일정 데이터 변경 시 서버에서 보내주는 알림(웹훅)을 받아 사용자의 기기로 보내주는 콜백 리시버 구축,
사용자 기기에 일정 데이터를 저장하기 위한 별도의 DB 생성 등 복잡한 프로세스의 완성이 필요하다.
(2) Calendar Provider API
사용자의 기기에 있는 캘린더 데이터를 앱에서 직접 사용하는 방식이다.
보통의 안드로이드 사용자는 폰을 처음 사용할 때, 구글 계정으로 로그인 한다.
이 때, 안드로이드의 기본 앱인 모바일 구글 캘린더의 사용을 위해
로그인된 구글 계정 사용자의 일정 데이터를 서버에서 기기로 가져와 기기 내 테이블에 저장한다.
그러니까, 일정 데이터 저장을 위한 테이블이 안드로이드에 기본적으로 존재하고 있으며,
써드파티 달력 앱은 이 테이블의 데이터를 사용하기만 하면 자동으로 구글 캘린더와 동기화가 된다.
(1)번에서 앱이 직접 해야했던 구글 캘린더 서버와의 통신을 안드로이드가 알아서 해준다.
(1)과 같이 복잡한 프로세스의 구축이 필요없어, 구현이 상대적으로 쉽다.
'앱 사용 설명서' 카테고리의 다른 글
기기의 연락처(주소록)에 등록된 생일 등 정보가 달력에 표시되지 않게 하는 방법 (0) | 2024.12.01 |
---|---|
임시 공휴일 반영 (0) | 2024.09.04 |