Data Layer API 개요

클라우드 기반 노드는 Google 소유 서버에 의해 제어됩니다.
그림 1. 휴대기기 및 Wear OS 기기가 있는 노드 네트워크의 샘플

Google Play 서비스에 포함되어 있는 Wearable Data Layer API는 웨어러블 기기 (예: 스마트시계)와 연결된 휴대기기 (일반적으로 스마트폰) 간의 통신 채널을 제공합니다. 기기 간에 데이터를 동기화하고 전송하는 방법입니다.

참고: 이 API는 Wear OS 시계 및 페어링된 Android 기기에서만 사용할 수 있습니다. iOS 휴대전화와 페어링된 Wear OS 시계의 경우 인터넷에 연결할 수 있다면 앱이 다른 클라우드 기반 API를 쿼리할 수 있습니다. 이러한 다른 API에 관한 자세한 내용은 Wear OS의 네트워크 액세스 및 동기화를 참고하세요.

주의: 데이터 레이어 API는 휴대기기와 웨어러블 기기 간의 통신을 위해 설계되었기 때문에 휴대기기와 웨어러블 기기 간에 통신을 설정하려면 이러한 API만 사용할 수 있습니다. 예를 들어 하위 레벨 소켓을 열어 통신 채널을 만들려고 하지 마세요.

일반적인 사용 사례

상호작용이 시계와 휴대전화 간에만 이루어지는 경우 Data Layer API를 사용합니다. 예를 들면 다음과 같습니다.

  • 리모컨: 워치가 휴대전화의 리모컨 역할을 합니다 (예: 휴대전화에서 실행 중인 음악 플레이어 제어, 프레젠테이션 슬라이드, 카메라 셔터 역할).
  • 휴대기 앱 실행: '휴대전화에서 열기' 버튼 기능입니다.
  • 인증 브리징: 초기 설정 중에 휴대전화에서 시계로 세션 토큰을 전송합니다.

대부분의 일반적인 시나리오에서는 기존 클라우드 인프라를 사용해야 합니다. 예를 들면 다음과 같습니다.

  • 데이터 저장: 운동, 메모
  • 콘텐츠 가져오기: 이전 운동 목록 로드, 음악 다운로드, 날씨 가져오기
  • 상태 동기화: 사용자가 웹에서 프로필 사진을 변경하면 시계는 휴대전화를 쿼리하지 않고 클라우드를 사용하여 업데이트됩니다.

이러한 시나리오에서는 Data Layer API 대신 기존 엔드포인트와 인프라를 사용하세요.

커뮤니케이션 옵션

데이터는 다음 중 한 가지 방법으로 전송됩니다.

  1. Wear OS 기기와 다른 기기 간에 블루투스 연결이 설정된 경우 직접
  2. 사용 가능한 네트워크(예: LTE 또는 Wi-Fi)를 통해 Google 서버의 네트워크 노드를 중개자로 사용합니다.

모든 데이터 영역 클라이언트는 기기에서 사용 가능한 연결에 따라 블루투스 또는 클라우드를 사용하여 데이터를 교환할 수 있습니다. 데이터 영역을 사용하여 전송된 데이터가 특정 시점에 Google 소유 서버를 사용할 수 있다고 가정합니다.

블루투스

블루투스를 통해 기기가 연결되면 데이터 영역에서 이 연결을 사용합니다. Google Play 서비스에서 관리하는 표준 블루투스 암호화를 사용하여 기기 간에 암호화된 단일 채널이 있습니다.

클라우드

블루투스를 사용할 수 없는 경우 데이터는 Google Cloud를 통해 자동으로 라우팅됩니다. Google Cloud를 통해 전송되는 모든 데이터에는 엔드 투 엔드 암호화가 적용됩니다.

통신 보안

Google Play 서비스는 Wear OS 기기에 설치된 앱과 근처 휴대기기에 설치된 동일한 앱 간에 더 안전한 통신을 제공하기 위해 다음과 같은 제한사항을 적용합니다.

  • 패키지 이름은 모든 기기에서 일치해야 합니다.
  • 패키지 서명은 모든 기기에서 일치해야 합니다.

연결 유형과 관계없이 다른 앱은 데이터에 액세스할 수 없습니다.

설정

Wearable Data Layer API에는 다음과 같은 종속 항목이 있습니다.

Wear 모듈의 build.gradle 파일에 다음 종속 항목을 포함합니다.

dependencies {
    ...
    implementation("com.google.android.gms:play-services-wearable:19.0.0")
}

초기 페어링 프로세스 지원

Horologist는 플랫폼 API 위에 여러 도우미 라이브러리를 제공합니다. 여기에는 휴대기기와 Wear OS 기기 간의 연결을 설정하는 데 도움이 되는 데이터 레이어 라이브러리가 포함되어 있습니다. 또한 다음 작업을 실행하는 편리한 API를 제공합니다.

  • 다른 기기에 앱을 설치합니다.
  • 다른 기기에서 앱을 실행합니다.
  • 다른 기기에서 특정 활동을 실행합니다.
  • 호환 앱을 실행합니다.

데이터 영역 액세스

Data Layer API를 호출하려면 Wearable 클래스를 사용하여 DataClientMessageClient와 같은 다양한 클라이언트 클래스의 인스턴스를 가져옵니다.

자세한 내용은 DataLayer 샘플을 참고하세요.

최소 클라이언트 사용

클라이언트를 만들려면 다음 예시 코드를 참고하세요.

val dataClient = Wearable.getDataClient(this)

val available = try {
    GoogleApiAvailability.getInstance()
        .checkApiAvailability(client)
        .await()
    true
} catch (e: AvailabilityException) {
    // API is not available in this device.
    false
}

유효한 Android 컨텍스트라면 무엇이든 괜찮습니다. Activity의 범위 내에서 API를 사용하고 있다면 Wearable 클래스의 getDataClient() 메서드를 사용하세요. 이렇게 하면 사용자에게 Google Play 서비스 버전을 업데이트하라는 메시지가 표시될 때와 같은 특정 상호작용이 알림이 아닌 대화상자로 표시됩니다.

기본적으로 리스너 콜백은 앱의 기본 UI 스레드에서 이루어집니다. 다른 스레드에서 콜백을 실행하려면 WearableOptions 객체를 사용하여 맞춤 Looper를 지정합니다.

자세한 내용은 WearableOptions.Builder 참조를 확인하세요.

필요에 따라 클라이언트 인스턴스 다시 만들기

DataClient, MessageClient와 같은 Wearable API 클라이언트는 저렴한 비용으로 만들 수 있습니다. 따라서 클라이언트를 유지하는 대신 앱에 적합한 스타일을 사용하여 필요할 때 클라이언트를 다시 만드세요.

등록된 리스너 집합과 같은 클라이언트 상태는 모든 클라이언트에서 공유되며 앱 실행 중에 Google Play 서비스가 업데이트되는 경우 유지됩니다.