독립형 Wear 앱

Wear OS 앱은 휴대전화와 별도로 작동할 수 있습니다. 사용자는 Android 또는 iOS 휴대전화에 액세스하지 않고 시계에서 작업을 완료할 수 있습니다.

다음 관련 리소스를 참조하세요.

앱 계획

Google Play의 여러 APK(다중 APK) 기능을 사용하면 동일한 애플리케이션 목록에 APK를 두 개 이상 게시할 수 있습니다. APK는 이 기능을 사용해서 배포해야 합니다. 시계 APK를 휴대전화 APK에 삽입하지 마세요. Google Play 스토어를 통해 배포할 수 있도록 앱을 설정하는 방법에 관한 자세한 내용은 Wear 앱 패키징 및 배포여러 APK의 작동 방식을 참조하세요.

참고: Wear의 Google Play 스토어(시계용 Play 스토어)에서 프로모션 자격을 갖추려면 앱이 휴대전화와는 별도로 작동해야 합니다. iOS 및 Android 지원이 필요합니다.

일반적으로, 독립형 앱과 Wear 2.0의 최소 및 타겟 API 레벨은 레벨 25입니다. Wear 1.0 및 2.0에 관해 동일한 APK를 사용하고 Wear 1.0 APK가 포함된 경우에만 최소 SDK 레벨을 23으로 설정할 수 있습니다.

참고: Wear 1.x 시계의 앱 가용성에 영향을 주는 지연 시간 문제로 인해, 독립형 Wear 2.0 APK를 빌드하고 Wear 1.0 APK를 계속 사용하려는 경우 다음 작업을 둘 다 수행합니다.

  • Wear APK의 독립형 버전 제공
  • Wear APK 버전을 휴대전화 APK에 계속 삽입

주의: 포함된 Wear APK를 제거한 기존의 프로덕션 휴대전화 APK에 관한 업데이트를 게시하는 경우, 독립형 Wear APK를 설치하기 전에 휴대전화 APK를 업데이트하는 프로덕션 사용자는 기존 Wear 앱과 데이터를 잃게 됩니다. 기존의 프로덕션 휴대전화 APK에 관한 업데이트를 게시하는 경우 시계 APK를 휴대전화 APK에 계속 삽입합니다.

독립형 앱에는 런타임 권한이 필요합니다.

네트워크 요청 및 고대역폭 네트워크 액세스에 관한 자세한 내용은 네트워크 액세스 및 동기화를 참조하세요.

앱을 독립형으로 확인

Wear 앱은 Android Manifest 파일에 meta-data 요소가 <application> 요소의 하위 요소로 포함되어 있어야 합니다. meta-data 요소의 이름은 com.google.android.wearable.standalone이고, 값은 true 또는 false여야 합니다. 이 요소는 시계 앱이 독립형 앱인지 여부를 나타내므로, 휴대전화 쪽 Android 앱이 작동하지 않아도 됩니다. 요소 설정이 true인 경우, 모든 채널(예: 베타 채널)의 활성 APK에서 이 요소가 true로 설정되어 있기만 하면 iPhone과 페어링된 시계의 Play 스토어에서 앱을 사용할 수 있습니다. 현재 사용자에게 제공되는 일부 APK(알파, 베타 및 프로덕션)에 위의 설정이 없을 경우, 사용자가 iPhone과 페어링된 시계에서 검색할 때 앱이 제공되지 않습니다.

시계 앱은 다음 중 하나로 간주될 수 있습니다.

  • 전화 앱과 완전히 독립적
  • 반독립적(전화 앱이 필요하지 않고 선택적 기능만 제공)
  • 전화 앱에 종속

시계 앱이 완전히 독립적이거나 반독립적인 경우, 독립형 카테고리로 간주됩니다. 이 meta-data 요소의 값을 true로 설정하여 이 분류를 Google Play 스토어에 표시해야 합니다.

    <application>
    ...
      <meta-data
        android:name="com.google.android.wearable.standalone"
        android:value="true" />
    ...
    </application>
    

Play 스토어가 없는 iPhone 사용자 또는 Android 휴대전화 사용자가 독립형 앱(즉, 독립적 앱 또는 반독립적 앱)을 설치할 수 있으므로, 전화 앱 없이 시계 앱을 사용할 수 있어야 합니다.

시계 앱이 전화 앱에 종속된 경우 위의 meta-data 요소 값을 false로 설정합니다. 이 요소를 false로 설정하면 Play 스토어가 있는 휴대전화와 페어링된 시계에만 시계 앱을 설치해야 합니다.

참고: 값이 false인 경우에도 전화 앱을 설치하기 전에 시계 앱을 설치할 수 있습니다. 따라서 시계 앱이 호환 휴대전화에 필요한 전화 앱이 없음을 감지하면, 사용자에게 전화 앱을 설치하라는 메시지를 표시해야 합니다.

앱을 Wear 앱으로 정의

<uses-feature> 태그가 앱의 Android Manifest 파일에 정의되어 있는지 확인해야 합니다. 이 태그가 다음과 같이 watch 앱(예: android:name="android.hardware.type.watch")임을 표시해야 합니다.

    <manifest>
    ...
      <uses-feature android:name="android.hardware.type.watch" />
    ...
    </manifest>
    

공유 코드 및 데이터 저장용량

Wear 앱과 전화 앱 간에 코드를 공유할 수 있습니다. 선택사항으로, 폼 팩터와 관련된 코드를 별도의 모듈에 포함할 수 있습니다.

예를 들어 네트워킹을 위한 공통 코드를 공유 라이브러리에 포함할 수 있습니다.

표준 Android 저장용량 API를 사용하여 휴대전화와 같이 데이터를 로컬에 저장할 수 있습니다. 예를 들어 SharedPreferences API 또는 채팅방 지속성 라이브러리를 사용할 수 있습니다.

다른 기기에서 앱 감지

시계 앱은 전화 앱이 사용 가능한지 감지할 수 있고, 그 반대의 경우도 마찬가지입니다.

전화 앱이나 시계 앱은 CapabilityClient를 사용하여 앱이 있음을 페어링된 기기에 알릴 수 있습니다. 정적 및 동적으로 이 작업을 수행할 수 있습니다. 앱이 사용자의 Wear 네트워크 노드(휴대전화, 페어링된 시계 또는 클라우드)에 있을 경우 CapabilityClient를 통해 다른 앱에서 앱이 설치되어 있는지 감지할 수 있습니다. 자세한 내용은 알림 기능을 참조하세요.

앱 중 하나가 다른 앱을 감지할 수 없는 경우 사용자가 원격 기기에서 Play 스토어 등록정보를 열도록 허용할 수 있습니다. 이 기능은 호환 전화 앱이 있어야 제대로 작동하는 시계 앱을 위한 솔루션입니다. 필수 요건으로, 원격 기기에 Play 스토어가 있는지 확인해야 합니다.

일부 휴대전화는 Play 스토어를 지원하지 않습니다(예: iPhone 등).

이 섹션에서는 다음 시나리오에 관한 권장사항을 설명합니다.

  • 독립형 시계 앱에 전화 앱이 필요한 경우
  • 전화 앱에 독립형 시계 앱이 필요한 경우

이 기능을 보여주는 샘플을 검토합니다. 아래에서 설명하는 클래스에 관한 자세한 내용은 Wear API 참조를 참조하세요. 이 참조에는 PhoneDeviceType 클래스에 관한 정보도 포함되어 있습니다. 이 클래스의 getPhoneDeviceType() 메서드를 사용하면 Wear 앱에서 호환 휴대전화가 Android 또는 iOS 기기인지 확인할 수 있습니다.

앱 감지를 위해 기능 이름 지정

각 기기 유형(시계 또는 휴대전화)에 해당하는 앱의 고유한 기능 이름 문자열을 res/values/wear.xml 파일에서 지정합니다.

예를 들어 모바일 모듈의 wear.xml 파일에는 다음이 포함될 수 있습니다.

    <resources>
        <string-array name="android_wear_capabilities">
            <item>verify_remote_example_phone_app</item>
        </string-array>
    </resources>
    

Wear 모듈의 wear.xml 파일에는 다음과 같이 기능 이름에 관해 다른 값이 포함됩니다.

    <resources>
        <string-array name="android_wear_capabilities">
            <item>verify_remote_example_wear_app</item>
        </string-array>
    </resources>
    

자세한 내용은 알림 기능을 참조하세요.

앱 감지 및 시계에서 URL 열기

시계 앱에서 사용자의 호환 휴대전화에 전화 앱이 있는지 감지할 수 있습니다.

  1. CapabilityClient를 사용하여 페어링된 휴대전화에 전화 앱이 설치되어 있는지 확인합니다. 자세한 내용은 샘플을 참조하세요.
  2. 휴대전화에 전화 앱이 설치되어 있지 않으면, PhoneDeviceType.getPhoneDeviceType() 메서드를 사용하여 휴대전화 유형을 확인합니다.
  3. PhoneDeviceType.DEVICE_TYPE_ANDROID가 반환되면 휴대전화가 Android 휴대전화입니다. Wear 기기에서 RemoteIntent.startRemoteActivity()를 호출하여 휴대전화의 앱 스토어를 엽니다. 전화 앱의 마켓 URI를 사용합니다(휴대전화 URI와 다를 수 있음). 예를 들어 다음과 같은 마켓 URI를 사용합니다. market://details?id=com.example.android.wearable.wear.finddevices
  4. PhoneDeviceType.DEVICE_TYPE_IOS가 반환되면 휴대전화가 iOS 휴대전화(Play 스토어를 사용할 수 없음)입니다. Wear 기기에서 RemoteIntent.startRemoteActivity()를 호출하여 iPhone의 App Store를 엽니다. 앱의 iTunes URL(예: https://itunes.apple.com/us/app/yourappname)을 지정할 수 있습니다. iPhone의 Wear OS에서는 전화 앱이 설치되어 있는지 여부를 프로그래밍 방식으로 확인할 수 없습니다. 권장사항은 App Store 열기를 수동으로 트리거하는 메커니즘(예: 버튼)을 사용자에게 제공하는 것입니다.

위에서 설명한 RemoteIntent API를 사용하면 시계를 통해 휴대전화에서 임의 URL이 열리도록 지정할 수 있으며, 전화 앱이 필요하지 않습니다.

페어링된 휴대전화 유형 감지에 관한 세부정보

다음은 getPhoneDeviceType() 메서드를 사용하여 시계가 페어링된 휴대전화 유형을 확인하는 스니펫입니다.

Kotlin

    var phoneDeviceType: Int = PhoneDeviceType.getPhoneDeviceType(context)
    

자바

    int phoneDeviceType = PhoneDeviceType.getPhoneDeviceType(context);
    

getPhoneDeviceType() 메서드가 반환하는 값은 다음 중 하나입니다.

반환 값 설명
DEVICE_TYPE_ANDROID 호환 휴대전화가 Android 기기입니다.
DEVICE_TYPE_IOS 호환 휴대전화가 iOS 기기입니다.
DEVICE_TYPE_ERROR_UNKNOWN 페어링된 휴대전화 유형을 확인하는 중 오류가 발생했습니다. 나중에 다시 확인해야 합니다.

Android 휴대전화에서 시작하는 앱 감지

Android 휴대전화에서 사용자의 Wear 기기에 시계 앱이 있는지 감지할 수 있습니다.

  1. NodeClient를 사용하여 사용자의 휴대전화에 연결된 모든 시계를 찾습니다. 자세한 내용은 샘플을 참조하세요.
  2. CapabilityClient를 사용하여 앱이 설치되어 있는 사용자 시계를 확인합니다.
  3. 앱이 설치된 사용자 시계가 없는 경우(1단계의 결과와 2단계의 결과 비교), 사용자가 RemoteIntent.startRemoteActivity() 메서드를 통해 휴대전화에서 나머지 Wear 기기의 Play 스토어를 열도록 허용합니다. 구체적으로, Wear 앱의 마켓 URI(전화 앱의 URI와 다를 수 있음)를 사용합니다. 예를 들어 다음과 같은 마켓 URI를 사용합니다. market://details?id=com.example.android.wearable.wear.finddevices

iPhone과 페어링된 시계의 위치 데이터

iPhone과 페어링된 시계의 경우, 개발자가 FLP(통합 위치 정보 제공자)를 사용하여 시계에서 위치 데이터를 가져와야 합니다. Wear에서 위치 감지를 참조하세요.

호환 휴대전화를 사용할 수 있는 경우, FLP는 위치 데이터를 위해 호환 휴대전화를 사용합니다.

필요한 데이터만 가져오기

일반적으로 인터넷에서 데이터를 얻는 경우 필요한 데이터만 가져와야 합니다. 그러지 않으면 불필요한 지연 시간, 메모리 사용 및 배터리 사용이 발생할 수 있습니다.

시계가 블루투스 LE 연결을 통해 연결된 경우, 시계에 따라 앱에서 액세스할 수 있는 대역폭이 초당 4킬로바이트에 불과할 수 있습니다. 따라서 다음 단계를 수행하는 것이 좋습니다.

  • 네트워크 요청 및 응답에서 전화 앱에만 사용되는 기타 데이터 감사
  • 네트워크를 통해 시계로 보내기 전에 큰 이미지 축소

고대역폭 네트워크가 필요한 경우 고대역폭 네트워크 액세스를 참조하세요.

추가 코드 샘플

Android WearVerifyRemoteAppAndroid SpeedTracker 샘플은 이 페이지에서 설명한 API의 사용을 자세히 보여줍니다.