App Wear OS autonome e non autonome

Consigliamo che le app Wear OS funzionino indipendentemente da uno smartphone, in modo che gli utenti possano completare le attività su uno smartwatch senza accedere a uno smartphone Android o iOS. Se l'app per lo smartwatch richiede l'interazione con lo smartphone, devi contrassegnare l'app Wear OS come non autonoma e adottare misure per assicurarti che l'utente abbia a disposizione l'app per smartphone.

Pianificare l'app

Puoi utilizzare Android App Bundle per generare automaticamente Android Package Kit (APK) ottimizzati per la configurazione del dispositivo di ogni utente nello stesso elenco delle applicazioni. In questo modo gli utenti possono scaricare solo il codice e le risorse necessari per eseguire la tua app.

Per informazioni sulla configurazione della tua app per la distribuzione tramite il Google Play Store, vedi Pacchettizzare e distribuire app Wear OS e la guida per iniziare a utilizzare Android App Bundle.

Per le nuove app, il livello API target deve essere 30 o superiore. Per saperne di più, consulta Soddisfare i requisiti relativi al livello API target di Google Play. Imposta targetSdkVersion sul livello API 30 (Wear OS 3) per assicurarti che la tua app funzioni correttamente sull'ultima versione della piattaforma.

Per informazioni sulle richieste di rete e sull'accesso alla rete a larghezza di banda elevata, consulta Accesso alla rete e sincronizzazione su Wear OS.

Definire un'app come app Wear OS

Devi definire il tag <uses-feature> nel file manifest Android della tua app. Per indicare che si tratta di un'app per orologio, aggiungi una voce come la seguente:

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

Identificare un'app come autonoma o non autonoma

Un'app per smartwatch è considerata autonoma o non autonoma:

  • Autonoma: un'app completamente indipendente che non richiede un'app per smartphone per le funzionalità di base. Sebbene i prompt "Apri sullo smartphone" siano accettabili, l'app deve fornire mezzi alternativi per consentire agli utenti di completare una funzione dell'app, ad esempio un link breve o un codice QR, senza dipendere da uno smartphone connesso.
  • Non autonoma: un'app dipendente che richiede un'app su uno smartphone o un altro dispositivo per le funzionalità di base. Questa opzione è ideale per le app che non possono fornire facilmente un mezzo alternativo, ad esempio un codice QR o un link breve, per completare una funzione di base dell'app, come l'autenticazione.

Nota:anche per le app non autonome, gli utenti possono installare l'app Wear OS prima dell'app mobile. Pertanto, se l'app Wear OS rileva che un dispositivo portatile nelle vicinanze non dispone dell'app complementare necessaria, invita l'utente a installarla.

Google convalida l'accuratezza dello stato autonomo di un'app durante la pubblicazione dell'app. Questo valore influisce sulla visibilità delle app all'interno del Play Store sui dispositivi scollegati, ad esempio i dispositivi Wear OS che non sono accoppiati a dispositivi portatili. Le app non autonome, nonché le app che gli sviluppatori designano erroneamente come "autonome", non sono disponibili per gli utenti di questi dispositivi non collegati.

Nella tua app Wear OS, imposta il valore dell'elemento meta-data com.google.android.wearable.standalone nel file manifest Android per dichiarare se la tua app è autonoma o non autonoma.

Se l'app per smartwatch è un'app completamente indipendente e autonoma, indicalo al Google Play Store impostando il valore di com.google.android.wearable.standalone su true:

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

Se l'app per smartwatch non è autonoma e dipende da un'altra app per le funzionalità di base, imposta il valore di com.google.android.wearable.standalone su false. Ciò indica che l'app per lo smartwatch richiede un altro dispositivo, ma non influisce sulla promozione dell'app sul Google Play Store.

Nota: anche se il valore di com.google.android.wearable.standalone è false, l'app dell'orologio può essere installata prima dell'installazione dell'app per smartphone. Pertanto, se la tua app per smartwatch rileva che uno smartphone complementare non dispone dell'app per smartphone necessaria, come descritto in questa pagina, chiedi all'utente di installare l'app per smartphone.

Archiviazione di codice e dati condivisi

Il codice può essere condiviso tra un'app Wear OS e un'app per smartphone. Ad esempio, il codice comune per il networking può essere in una libreria condivisa.

Facoltativamente, il codice specifico per un fattore di forma può trovarsi in un modulo separato.

Puoi utilizzare le API di archiviazione Android standard per archiviare i dati localmente, come faresti su uno smartphone. Ad esempio, puoi utilizzare le API SharedPreferences o la libreria di persistenza Room.

Rilevare la tua app su un altro dispositivo

L'app per lo smartwatch e l'app per lo smartphone corrispondente possono rilevare se l'altra app è disponibile.

Le app per smartphone e smartwatch possono utilizzare CapabilityClient per pubblicizzare la propria presenza a un dispositivo accoppiato. Possono farlo in modo statico o dinamico.

Quando un'app si trova su un nodo nella rete Wear OS di un utente, ad esempio su uno smartphone, uno smartwatch accoppiato o nel cloud, l'CapabilityClient consente ad altre app di rilevarla. Per saperne di più, consulta Funzionalità di pubblicazione di annunci.

Se una delle tue app non riesce a rilevare l'altra, puoi chiedere all'utente di aprire la scheda del Play Store sul dispositivo interessato. Si tratta di una soluzione per le app per smartwatch che richiedono la presenza dell'app per smartphone complementare per funzionare correttamente.

Devi verificare se il Play Store è disponibile sul dispositivo, perché non tutti gli smartphone, come gli iPhone, supportano il Play Store.

Le sezioni seguenti descrivono le best practice per due scenari:

  • L'app autonoma dello smartwatch ha bisogno dell'app per smartphone.
  • L'app per smartphone ha bisogno dell'app autonoma per lo smartwatch.

Puoi anche esaminare l' esempio di helper del livello dati, che mostra come utilizzare le librerie di helper del livello dati, parte di Horologist. Questi helper ti consentono di monitorare la connessione tra un dispositivo mobile e un dispositivo Wear OS. Per ulteriori informazioni sulle classi descritte nella sezione seguente, consulta il riferimento API Wear OS. Questo riferimento include anche informazioni sulla classe PhoneTypeHelper, che contiene un metodo getPhoneDeviceType() che consente all'app Wear OS di verificare se lo smartphone associato è un dispositivo Android o iOS.

Specificare i nomi delle funzionalità per il rilevamento delle app

Per l'app corrispondente a ogni tipo di dispositivo, orologio o smartphone, specifica una stringa univoca per il nome della funzionalità nel file res/values/wear.xml.

Ad esempio, nel modulo mobile, il file wear.xml potrebbe includere quanto segue:

<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@array/android_wear_capabilities">
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_phone_app</item>
    </string-array>
</resources>

Nel modulo Wear OS, il file wear.xml include un valore diverso per il nome della funzionalità, ad esempio:

<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@array/android_wear_capabilities">
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_wear_app</item>
    </string-array>
</resources>

Per saperne di più, consulta Funzionalità di pubblicazione di annunci.

Rilevamento di app e apertura di un URL da uno smartwatch

L'app per smartwatch può rilevare se lo smartphone associato di un utente ha la tua app per smartphone. Segui questi passaggi:

  1. Utilizza CapabilityClient per verificare se l'app Telefono è installata sullo smartphone accoppiato. Per maggiori informazioni, consulta l' esempio di helper del livello dati su GitHub.
  2. Se l'app Telefono non è installata sullo smartphone, utilizza il metodo PhoneDeviceType.getPhoneDeviceType() per controllare il tipo di smartphone. Per maggiori dettagli, consulta la sezione seguente.
  3. Se PhoneDeviceType.DEVICE_TYPE_ANDROID viene restituito, lo smartphone è un Android. Chiama RemoteActivityHelper.startRemoteActivity() sul dispositivo Wear OS per aprire il Play Store sullo smartphone. Utilizza l'URI del market per l'app per smartphone, che potrebbe essere diverso dall'URI dell'app Wear. Ad esempio, utilizza un URI del market come: market://details?id=com.example.android.wearable.wear.finddevices.
  4. Se PhoneDeviceType.DEVICE_TYPE_IOS viene restituito, lo smartphone è un iPhone senza Play Store disponibile. Apri l'App Store sull'iPhone chiamando RemoteActivityHelper.startRemoteActivity() sul dispositivo Wear OS. Puoi specificare l'URL iTunes della tua app, ad esempio https://itunes.apple.com/us/app/yourappname.

    Da Wear OS, non puoi determinare in modo programmatico se l'app per smartphone è installata su un dispositivo iOS. Come best practice, fornisci un meccanismo all'utente per attivare manualmente l'apertura dell'App Store.

Nota: utilizza l'API RemoteActivityHelper descritta in precedenza per specificare che qualsiasi URL venga aperto sullo smartphone dall'orologio e che non sia necessaria alcuna app per smartphone.

Dettagli per il rilevamento del tipo di smartphone accoppiato

Ecco uno snippet che utilizza il metodo getPhoneDeviceType() per controllare il tipo di smartphone a cui è accoppiato lo smartwatch:

var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)

Il valore restituito dal metodo getPhoneDeviceType() è uno dei seguenti:

Valore restituito Descrizione
DEVICE_TYPE_ANDROID Lo smartphone associato è un dispositivo Android.
DEVICE_TYPE_IOS Lo smartphone associato è un dispositivo iOS.
DEVICE_TYPE_UNKNOWN Lo smartphone associato è un dispositivo sconosciuto.
DEVICE_TYPE_ERROR Si è verificato un errore durante la determinazione del tipo di smartphone accoppiato. Un altro controllo deve essere eseguito in un secondo momento.

Rilevamento delle app a partire da uno smartphone Android

Il tuo smartphone Android può rilevare se i dispositivi Wear OS di un utente hanno la tua app per smartwatch. Segui questi passaggi:

  1. Utilizzando NodeClient, trova tutti gli smartwatch connessi allo smartphone dell'utente. Per maggiori informazioni, consulta l' esempio di helper del livello dati su GitHub.
  2. Utilizzando CapabilityClient, controlla su quale smartwatch dell'utente è installata la tua app.
  3. Se la tua app non è installata su tutti gli smartwatch dell'utente, chiedigli di aprire il Play Store sui dispositivi Wear OS rimanenti dallo smartphone utilizzando il metodo RemoteActivityHelper.startRemoteActivity(). Utilizza l'URI del market per l'app Wear OS, che potrebbe essere diverso dall'URI dell'app per smartphone. Ad esempio, utilizza un URI del market come: market://details?id=com.example.android.wearable.wear.finddevices.

Dati sulla posizione per gli smartwatch accoppiati agli iPhone

Per gli smartwatch accoppiati agli iPhone, utilizza il Fused Location Provider (FLP) per ottenere i dati sulla posizione sullo smartwatch. Per saperne di più, consulta Rilevare la posizione su Wear OS.

Se lo smartphone associato è disponibile, FLP lo utilizza per i dati sulla posizione.

Ottenere solo i dati necessari

In genere, quando ottieni dati da internet, recupera solo quelli necessari. In caso contrario, potresti introdurre latenza, utilizzo di memoria e consumo della batteria non necessari.

Quando uno smartwatch è connesso tramite Bluetooth LE, la tua app potrebbe avere accesso a una larghezza di banda di soli 4 kilobyte al secondo, a seconda dello smartwatch. Pertanto, ti consigliamo di seguire questi passaggi:

  • Controlla le richieste e le risposte di rete per i dati aggiuntivi necessari solo per un'app per smartphone.
  • Riduci le dimensioni delle immagini di grandi dimensioni prima di inviarle a uno smartwatch tramite una rete.

Per i casi in cui è necessaria una rete a larghezza di banda elevata, consulta Accesso alla rete a larghezza di banda elevata.

Altri esempi di codice

L' esempio di helper del data layer illustra ulteriormente l'utilizzo delle API trattate in questa pagina.