독립형 기기에서 네트워크를 통해 직접 통신

Wear OS by Google을 사용하면 시계가 네트워크나 Android 또는 iOS 휴대폰에 액세스할 수 있어야 합니다. 데이터 영역 API를 사용하여 Wear OS 앱을 네트워크에 연결합니다. 대신 이 도움말의 가이드라인과 단계를 참조하세요.

네트워크 액세스

Wear OS 앱은 네트워크 요청을 할 수 있습니다. 시계에 블루투스가 있는 경우 시계의 네트워크 트래픽은 일반적으로 있습니다.

휴대전화를 사용할 수 없는 경우, 사용 가능한 기기에 따라 Wi-Fi 및 셀룰러 네트워크가 사용됩니다. 제어할 수 있습니다. Wear OS 플랫폼은 네트워크 간의 전환을 처리합니다.

HTTP, TCP, UDP와 같은 프로토콜을 사용할 수 있습니다. 그러나 CookieManager 클래스를 비롯한 android.webkit API는 있습니다. 요청에서 헤더를 읽고 써서 쿠키를 사용할 수 있으며 확인할 수 있습니다

정기적인 폴링을 비롯한 비동기식 요청에 WorkManager 사용 간격입니다.

특정 네트워크 유형에 연결해야 하는 경우 네트워크 읽기 상태가 될 수 있습니다.

고대역폭 네트워크 액세스

Wear OS 플랫폼은 최상의 사용자 경험을 제공합니다. 플랫폼에서는 기본 활성 네트워크를 긴 배터리 수명 및 네트워크 대역폭이라는 두 가지 요구사항 간 균형을 유지합니다.

배터리 보존이 더 중요한 경우, 활성 네트워크에는 배터리 보존이 네트워크 작업에 충분한 대역폭을 확보해야 하며 있습니다.

이 섹션에서는 ConnectivityManager 클래스를 사용하여 앱에 필요한 네트워크 대역폭이 있는지 확인할 수 있습니다. 일반 자세한 내용은 네트워크 사용량을 참조하세요.

Wi-Fi 연결 요청

전송 계층 전송과 같이 고대역폭 네트워크 액세스가 필요한 사용 사례 대용량 파일 또는 스트리밍 미디어, 고대역폭으로 연결 요청 데이터를 전송할 수 있습니다. 예를 들면 다음과 같습니다.

Kotlin

val callback = object : ConnectivityManager.NetworkCallback() {
    override fun onAvailable(network: Network) {
        super.onAvailable(network)
        // The Wi-Fi network has been acquired. Bind it to use this network by default.
        connectivityManager.bindProcessToNetwork(network)
    }

    override fun onLost(network: Network) {
        super.onLost(network)
        // Called when a network disconnects or otherwise no longer satisfies this request or callback.
    }
}
connectivityManager.requestNetwork(
    NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(),
    callback
)

자바

ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() {
    public void onAvailable(Network network) {
        super.onAvailable(network);
        // The Wi-Fi network has been acquired. Bind it to use this network by default.
        connectivityManager.bindProcessToNetwork(network);
    }

    public void onLost(Network network) {
        super.onLost(network);
        // Called when a network disconnects or otherwise no longer satisfies this request or callback.
    }
};
connectivityManager.requestNetwork(
        new NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(),
        callback
);

시계의 Wi-Fi 또는 배터리를 보존하기 위해 무선 라디오가 꺼져 있을 수 있습니다. 시계를 네트워크에서 NetworkCallback 인스턴스의 onAvailable() 메서드가 합니다.

onAvailable()가 호출되면 기기는 NetworkCallback가 해제될 때까지 Wi-Fi 네트워크 연결이 해제됩니다. 배터리 수명을 보존하려면 더 이상 콜백이 필요하지 않으면 다음 예와 같이 콜백을 해제합니다. Wi-Fi 네트워크

Kotlin

connectivityManager.bindProcessToNetwork(null)
connectivityManager.unregisterNetworkCallback(callback)

Java

connectivityManager.bindProcessToNetwork(null);
connectivityManager.unregisterNetworkCallback(callback);

Wi-Fi 설정 활동 시작

Wi-Fi 네트워크 요청 시 시스템은 저장된 네트워크에 연결하려고 시도합니다. 범위 내에 있는 경우 검증할 수 있습니다 저장된 Wi-Fi 네트워크를 사용할 수 없는 경우, NetworkCallback 인스턴스의 onAvailable 콜백 메서드가 호출되지 않습니다.

Handler를 사용하여 네트워크 요청 시간을 제한하는 경우 자동으로 Wi-Fi 네트워크를 추가할 수 있습니다. 사용자를 직접 다음으로 안내 Wi-Fi 네트워크를 추가하기 위한 활동을 정의합니다.

Kotlin

context.startActivity(Intent("com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS"))

자바

context.startActivity(new Intent("com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS"));

설정 활동을 실행하려면 앱에 CHANGE_WIFI_STATE가 있어야 합니다. 권한을 부여했는지 확인합니다.

사용자 인터페이스 고려 사항

앱에서 고대역폭을 위해 새 Wi-Fi 네트워크에 연결해야 하는 경우 작동하기 전에 연결 사유를 사용자에게 명확하게 Wi-Fi 설정을 실행합니다. 사용자에게 새 Wi-Fi만 추가하도록 요청 필요한 경우 이더넷 프레임 또는 대역폭을 점유하도록 할 수 있습니다. 사용자를 차단하지 않음 고대역폭 네트워크가 필요 없는 앱 기능 액세스.

그림 1은 음악 앱을 보여줍니다. 이 앱을 통해 사용자는 대역폭이 낮은 네트워크이며, 다음의 경우에만 사용자가 새 Wi-Fi 네트워크를 음악 다운로드 또는 스트리밍이 무엇이든 좋겠죠

음악 다운로드

그림 1. 음악을 다운로드하기 위한 음악 앱 흐름

전원 및 데이터 사용 고려사항

배터리 수명을 보존하고 모바일 데이터 사용량을 최소화하려면 분석 보고 또는 로그 수집과 같은 비필수 네트워킹 작업을 Wear OS 기기가 블루투스나 Wi-Fi에 다시 연결될 때까지 LTE나 종량제 연결 대신 사용합니다.

클라우드 메시징

알림을 보내려면 Firebase 클라우드 메시징 (FCM)을 직접 사용하세요.

Wear OS 전용의 네트워크 액세스 또는 FCM용 API는 없습니다. 기존 네트워크 연결클라우드 메시징에 대한 문서를 참조하세요.

FCM은 잠자기 기능과 잘 작동하며, 알림을 보내는 데 권장되는 방법입니다. 있습니다.

기기의 등록 토큰을 수집하여 FCM의 메시지를 제공하세요. Wear OS 앱이 실행될 때 알림을 보냅니다. 그런 다음 토큰을 대상의 일부로 포함합니다. FCM REST 엔드포인트로 메시지를 보낼 때 FCM이 메시지를 보낼 대상 토큰으로 식별할 수 있습니다.

FCM 메시지는 JSON (JavaScript Object Notation) 형식이며 다음 페이로드 중 하나 또는 둘 다를 포함합니다.

  • 알림 페이로드: 알림을 받으면 데이터가 알림 스트림에서 직접 사용자에게 표시됩니다. 날짜 사용자가 알림을 탭하면 앱이 실행됩니다.
  • 데이터 페이로드: 페이로드에 커스텀 키 또는 값 쌍의 집합이 있는 경우 페이로드는 Wear OS 앱에 데이터로 전달됩니다.

페이로드에 관한 자세한 내용과 예는 FCM 메시지 정보를 참고하세요.

기본적으로 알림은 휴대전화 앱에서 시계로 브리징됩니다. 계정이 없는 경우 독립형 Wear OS 앱 및 해당하는 전화 앱, 중복 알림 발생할 수 있습니다 예를 들어 FCM에서 보낸 단일 알림이 두 기기에 별도로 표시될 수 있었습니다. 다음과 같은 작업을 할 수 있습니다. 브리징 API를 사용하여 이를 방지할 수 있습니다.

백그라운드 서비스 사용

백그라운드 작업이 올바르게 실행되도록 하려면 (잠자기 및 앱 대기 모드).

화면이 꺼지거나 오랜 시간 대기 모드에 머물게 되면 발생할 수 있으며 백그라운드 작업이 특정 기간 동안 지연될 수 있습니다. 나중에 기기가 장시간 정지되어 있으면 일반 잠자기가 발생합니다. 앱에서 등록할 수 있도록 하는 WorkManager API를 사용하여 요청 예약 을 사용합니다.

제약 조건을 사용하여 예약

제약조건을 사용하여 배터리를 보존하는 방식으로 요청을 구성할 수 있습니다. 중요합니다 다음 제약조건 중 하나 이상을 선택하여 요청:

  • 네트워킹이 필요한 요청을 예약합니다.

    NetworkTypeCONNECTED인지 UNMETERED인지 지정합니다. UNMETERED는 대규모 데이터 전송용이고 CONNECTED는 소규모 데이터용입니다. 전송합니다.

  • 충전하는 동안 요청을 예약합니다.

  • 기기가 유휴 상태일 때 요청을 예약합니다. 이는 동기화를 사용하는 경우, 특히 백그라운드 작업이나 동기화가 기기가 충전 중입니다.

자세한 내용은 WorkManager의 제약조건이 주기적 작업 가이드를 참조하세요.