App Wear OS autonome e non autonome

Ti consigliamo di fare in modo che le app Wear OS funzionino in modo indipendente 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 dell'orologio richiede l'interazione con lo smartphone, devi contrassegnare l'app per 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 nella stessa scheda dell'applicazione. In questo modo, gli utenti scaricano solo il codice e le risorse di cui hanno bisogno per eseguire l'app.

Per informazioni sulla configurazione dell'app per la distribuzione tramite Google Play Store, consulta 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 34 o superiore. Per ulteriori informazioni, consulta Soddisfare i requisiti relativi al livello API target di Google Play. Se scegli come target il livello API disponibile più recente, ti assicuri che l'app funzioni correttamente sulle versioni attuali 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 per Wear OS

Devi definire il tag <uses-feature> nel file manifest Android dell'app. Per indicare che si tratta di un'app dell'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 dell'orologio è 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 agli utenti mezzi alternativi per completare una funzione dell'app, ad esempio un link breve o un codice QR, senza dipendere da uno smartphone collegato.
  • 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 per Wear OS prima dell'app mobile. Pertanto, se l'app per Wear OS rileva che un dispositivo palmare 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 serving. Questo valore influisce sulla visibilità delle app all'interno del Play Store sui dispositivi non collegati, come i dispositivi Wear OS che non sono associati a dispositivi portatili. Le app non autonome, nonché le app che gli sviluppatori contrassegnano erroneamente come "autonome", non sono disponibili per gli utenti su questi dispositivi non collegati.

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

Se l'app dell'orologio è un'app autonoma completamente indipendente, indicalo nel 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 dell'orologio non è autonoma e dipende da un'altra app per le funzionalità principali, imposta il valore di com.google.android.wearable.standalone su false. Ciò indica che l'app dell'orologio richiede un altro dispositivo, ma non influisce sulla promozione di app nel Google Play Store.

Nota: anche se il valore di com.google.android.wearable.standalone è false, l'app per smartwatch può essere installata prima dell'app per smartphone. Pertanto, se l'app dell'orologio rileva che uno smartphone accoppiato non dispone dell'app Telefono necessaria, come descritto in questa pagina, invita l'utente a installarla.

Archiviazione di codice e dati condivisi

Il codice può essere condiviso tra un'app per 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ò essere in un modulo separato.

Puoi utilizzare le API di archiviazione Android standard per archiviare i dati localmente, come faresti su uno smartphone. Puoi utilizzare il DataStore per archiviare coppie chiave-valore e oggetti digitati oppure la Room libreria di persistenza.

Rilevare l'app su un altro dispositivo

L'app dell'orologio e l'app per smartphone corrispondente possono rilevare se l'altra app è disponibile.

Le app per smartphone e smartwatch possono utilizzare CapabilityClient per pubblicizzare la loro presenza su 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 associato o nel cloud, il CapabilityClient consente ad altre app di rilevarla. Per ulteriori informazioni, consulta Pubblicizzare le funzionalità.

Se una delle tue app non riesce a rilevare l'altra, puoi invitare l'utente ad aprire la scheda dello Store sul dispositivo interessato. Questa è una soluzione per le app dell'orologio che richiedono la presenza dell'app per smartphone accoppiato complementare per funzionare correttamente.

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

Le sezioni seguenti descrivono le best practice per due scenari:

  • L'app dell'orologio autonoma ha bisogno dell'app Telefono.
  • L'app per smartphone ha bisogno dell'app dell'orologio autonoma.

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

Specificare i nomi delle funzionalità per rilevare le app

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

Ad esempio, nel modulo mobile, il wear.xml file 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 il seguente:

<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 ulteriori informazioni, consulta Pubblicizzare le funzionalità.

Rilevamento dell'app e apertura di un URL da uno smartwatch

L'app dell'orologio può rilevare se lo smartphone accoppiato di un utente ha la tua app Telefono. Segui questi passaggi:

  1. Utilizza lo CapabilityClient per verificare se l'app per smartphone è installata sullo smartphone associato. Per ulteriori informazioni, consulta l'esempio Datalayer helpers su GitHub.
  2. Se l'app per smartphone non è installata sullo smartphone, utilizza il PhoneDeviceType.getPhoneDeviceType() metodo per verificare il tipo di smartphone. Per maggiori dettagli, consulta la sezione seguente.
  3. Se PhoneDeviceType.DEVICE_TYPE_ANDROID viene restituito, lo smartphone è un dispositivo 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 dispositivo iOS senza Play Store disponibile. Apri l'App Store sull'iPhone chiamando RemoteActivityHelper.startRemoteActivity() sul dispositivo Wear OS. Puoi specificare l'URL di iTunes dell'app, ad esempio https://itunes.apple.com/us/app/yourappname.

    Da Wear OS, non puoi determinare a livello di programmazione se la tua app per smartphone è installata su un dispositivo iOS. Come best practice, fornisci all'utente un meccanismo per attivare manualmente l' apertura dell'App Store.

Nota: utilizza l'API RemoteActivityHelper come descritto nella sezione precedente per specificare che qualsiasi URL venga aperto sullo smartphone dallo smartwatch e che non sia necessaria un'app per smartphone.

Dettagli per il rilevamento del tipo di smartphone associato

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

var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)

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

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

Rilevamento dell'app a partire da uno smartphone Android

Lo smartphone Android può rilevare se i dispositivi Wear OS di un utente hanno la tua app dell'orologio. Segui questi passaggi:

  1. Utilizzando NodeClient, trova tutti gli smartwatch connessi allo smartphone dell'utente. Per ulteriori informazioni, consulta l'esempio Datalayer helpers su GitHub.
  2. Utilizzando CapabilityClient, verifica su quali smartwatch dell'utente è installata la tua app.
  3. Se l'app non è installata su tutti gli smartwatch dell'utente, consenti all'utente 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 per 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 associati agli iPhone

Per gli smartwatch associati agli iPhone, utilizza il Fused Location Provider (FLP) per ottenere i dati sulla posizione sullo smartwatch. Per ulteriori informazioni, consulta Rilevare la posizione su Wear OS.

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

Ottenere solo i dati necessari

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

Quando uno smartwatch è connesso tramite una connessione Bluetooth LE, l'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 verificare la presenza di dati aggiuntivi necessari solo per un'app per smartphone.
  • Riduci le dimensioni delle immagini di grandi dimensioni prima di inviarle tramite una rete a uno smartwatch.

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

Esempi di codice aggiuntivi

L'esempio Datalayer helpers illustra ulteriormente l'utilizzo delle API trattate in questa pagina.