Awareness API는 1편(구글 IO 2016, Awareness API 1편 - 구글의 Context 관련 API들) 에서 얘기했던 것처럼, Context를 알기 위한 9가지 API(Fused Location, Places API, Geofencing, Activity Recognition, Google Fit Platform, Sensors Platform, Nearby Notifications, Nearby Messages, Nearby Connections)들을 통합하여 만들어진 API입니다.
독립적인 9가지 API들을 각각 조합하여 사용함으로 인해 발생할 수 있는 배터리 소모 이슈나 조합 알고리즘을 구현하는데 드는 비용들을 줄여서, 오로지 애플리케이션 유저가 사용해야 할 기능 개발에만 집중할 수 있도록 도와주는 API가 바로 Awareness API입니다.
그럼 Awareness API에 대해 조금 더 상세하게 알아보도록 하겠습니다.
Awareness API는 아래의 그림처럼, 1편(구글 IO 2016, Awareness API 2편 - Awareness API) 에서 얘기했던 아홉 가지의 API들을 통합하여 7가지의 Context들을 사용할 수 있도록 제공합니다.
Awareness API는 위의 그림처럼 크게 펜스 API와 스냅샷 API로 분류하여 사용합니다.
실제 코드를 한 번 볼까요? 먼저 Fence API입니다.
펜스 생성하기 솔직히 코드가 매우 직관적이기 때문에, 따로 설명드릴 것이 많이 없습니다. AwarenessFence 타입의 각각의 변수들의 값은 모두 True나 False 중 하나입니다. 아래 코드에서 startDriving, areaAroundStore 등의 변수들은 모두 True 아니면 False 값을 담고 있다는 것이죠. 눈여겨봐야할 것은 어떤 형태의 Fence이며 어떤 상태를 검출할지 결정하는 부분입니다. 각각의 펜스에 대하여 starting, in, during, inDailyInterval 등으로 원하는 조건들을 설정할 수가 있습니다.
위에서 설정한 각각의 펜스들을 하나로 조합한 펜스를 설정할 수도 있습니다. 아래 코드들에서는 상점 근처인지, 그리고 상점 오픈 시간인지, 운전중인 상태인지를 조합한 펜스입니다. 모든 조건을 충족하면 True, 아니라면 False를 반환합니다.
펜스 등록하기 펜스를 생성하면, 펜스가 검출되었을 때를 알기 위해서 FenceUpdateRequest를 생성하여 등록해주어야 합니다. 아래 코드들은 위에서 생성했던 펜스들을 fenceUpdateRequest 요청에 넣어서 등록하는 코드입니다.
펜스 사용하기 펜스를 생성해서 등록까지 마쳤다면, Context가 검출되었을 때 실제로 유저들한테 어떤 서비스를 할 것인지 구현해야 됩니다. onReceive함수에서 이뤄지고, 저희가 등록한 펜스들의 True or False 값들로 특정 상황들을 검출하고, 서비스를 구현하면 됩니다.
기존에 이런 Context 앱들을 구현해보신 분들이라면, 이런 Fence API 사용이 기존보다 얼마나 직관적이고 사용하기 쉬운지 바로 느끼셨을 꺼라고 생각합니다.
스냅샷 API는 7가지 Context type의 실제 값을 알려주며, 사용 방법 또한 매우 간단합니다.
지금까지 구글 I/O 2016에서 공개된 Awareness API에 대해서 말씀드렸는데요,
관련된 실제 세션 유튜브 링크를 공유해드리며, 제가 해석한 내용이 필요한 분들에게 도움이 되었다면 좋겠습니다.