Invito all'upgrade di Android

Invito all'upgrade è un flusso utente che mostra le nuove funzionalità principali incluse nell'attuale upgrade principale del sistema operativo Android disponibile.

Il flusso ha lo scopo di convincere gli utenti ad aggiornare il dispositivo all'ultima versione del sistema operativo.

Quando un dispositivo ha un upgrade del sistema operativo in attesa dell'approvazione dell'utente, gli utenti ricevono una notifica push che mostra le nuove funzionalità e li invita a eseguire l'upgrade.

I produttori di dispositivi possono attivare Upgrade Party per i propri dispositivi con sistema operativo Android inviando il modulo Richiesta di attivazione dell'invito all'upgrade di Android.

Personalizzare l'esperienza dell'invito all'upgrade

Puoi personalizzare l'esperienza di invito all'upgrade nei seguenti modi:

  • Rimuovi le funzionalità non pertinenti.
  • Aggiorna la lingua nei blocchi di testo.
  • Modifica le animazioni, i colori e i caratteri in modo che corrispondano al tuo brand.

Per personalizzare il flusso, esamina le linee guida nella guida di stile per l'invito all'upgrade e includi le informazioni di personalizzazione nella risposta del modulo.

Guida di stile per l'invito all'upgrade

Utilizza questa guida di stile per modificare l'aspetto dell'invito all'upgrade in modo che si adatti al tuo brand (schermate, colori, caratteri). Ti consigliamo vivamente di mantenere le dimensioni e la struttura simili a quelle del design originale.

Il flusso di invito all'upgrade è composto dai seguenti tre componenti:

  • Schermata introduttiva
  • Schermata delle funzionalità
  • Schermata finale
Figura 1. I tre tipi di schermata nel flusso di invito all'upgrade

Un'animazione su ogni schermata aiuta a spiegare ogni funzionalità.

Schermata introduttiva

La schermata introduttiva contiene una breve animazione che dà il benvenuto all'utente e lo incoraggia a iniziare il flusso mostrato nella schermata introduttiva.

Layout
Figura 2. Layout wireframe per la schermata introduttiva dell'invito all'upgrade

L'animazione del dispositivo è sempre costituita da:

  • Sfondo bianco e forme colorate
  • Cornice del dispositivo
  • Contenuti dell'interfaccia utente
Stile

Se scegli di adattare lo stile Material You, puoi utilizzare i colori e le forme predefiniti mostrati nell'esempio.

Figura 3. Combinazione di colori predefinita per il flusso di invito all'upgrade.

Se utilizzi il colore del tuo brand, assicurati che funzioni bene con lo sfondo dell'interfaccia utente.

Movimento

Opzione 1: con un orologio sulla schermata Home

  1. I numeri vengono visualizzati sullo schermo.
  2. I numeri si spostano verso il centro diminuendo di dimensioni. Viene visualizzato il frame del cellulare.
  3. Lo smartphone si rimpicciolisce. Le forme iniziano a entrare nello schermo.
  4. L'animazione è stata completata. Le forme continuano a muoversi delicatamente.
Figura 4. Layout wireframe per l'animazione della schermata introduttiva dell'invito all'upgrade con un orologio.
Figura 5. Animazione di esempio per la schermata introduttiva con un orologio.

Opzione 2: nessun orologio nella schermata Home

  1. Il cellulare entra nello schermo.
  2. Lo smartphone si sposta al centro e aumenta di dimensioni. Le forme iniziano a entrare nello schermo.
  3. Lo smartphone raggiunge le dimensioni massime e le forme continuano a muoversi.
Figura 6. Layout wireframe per l'animazione della schermata introduttiva dell'invito all'upgrade senza orologio.
Figura 7. Animazione di esempio per la schermata introduttiva senza orologio.

Schermata delle funzionalità

Ogni schermata delle funzionalità mette in evidenza una funzionalità del nuovo sistema operativo.

Layout
Figura 8. Layout wireframe per le schermate della funzionalità Invito all'upgrade.

L'animazione del dispositivo è sempre costituita da:

  • Sfondo colorato
  • Struttura del dispositivo
  • Contenuti dell'interfaccia utente
Stile
  • Scegli un colore di sfondo che si abbini bene ai contenuti dell'interfaccia utente e all'aspetto generale.
  • All'interno delle schermate, imposta dimensioni dei caratteri facilmente leggibili. Se necessario, imposta dimensioni dei caratteri più grandi.
Movimento

Registra un'animazione del flusso di ogni funzionalità, incluse le interazioni touch. Esporta le registrazioni come file Lottie.

Schermata finale

La schermata finale completa il flusso. Indica agli utenti che hanno completato tutte le schermate.

Layout
Figura 9. Layout wireframe per la schermata finale dell'invito all'upgrade.

L'animazione del dispositivo è sempre costituita da:

  • Semicerchio sullo sfondo (più forme animate)
  • Struttura del dispositivo
  • Contenuti dell'interfaccia utente
Stile
  • Seleziona un colore di sfondo che si abbini bene ai contenuti dell'interfaccia utente e all'aspetto generale.
  • Utilizza una forma a semicerchio.
Movimento

Segui il flusso standard dell'animazione della schermata finale:

  1. Il cellulare si solleva leggermente.
  2. Sullo sfondo viene visualizzato un cerchio.
  3. Le forme emergono da dietro il cellulare.
  4. Le forme volano fuori dallo sfondo come coriandoli.
Figura 10. Layout wireframe per l'animazione della schermata finale dell'invito all'upgrade.
Figura 11. Animazione della schermata finale di esempio.

Testare il flusso di invito all'upgrade

  1. Sul dispositivo Android, vai a: Impostazioni > Google > Upgrade Party debug.
  2. Prepara il trigger per l'invito all'upgrade per il sistema operativo del dispositivo pertinente (a seconda della versione attuale del sistema operativo e del flusso specifico dell'invito all'upgrade da testare. Una di queste soglie:
    1. Fai clic su Scrivi upgrade falso (versione attuale). (ad esempio, se esegui il sistema operativo Android 13, verrà attivato il flusso di test di Android 13)
    2. Fai clic su Scrivi upgrade in attesa (versione attuale + 1). (ad esempio, se utilizzi il sistema operativo Android 12, verrà attivato il flusso di test di Android 13)
    3. Fai clic su Segnala upgrade del sistema operativo.
  3. Fai clic sulla notifica ricevuta o su Apri invito per l'upgrade.

Opzioni di attivazione per l'invito all'upgrade

Esistono tre modi diversi per attivare il flusso di invito all'upgrade: 1. Automatico 2. Trasmissione 3. SDK Play Services attivato

Automatico: notifica attivata da Google (solo per i dispositivi che eseguono gOTA)

Per i dispositivi OEM che eseguono gOTA, l'integrazione è automatica e non sono necessari passaggi di integrazione dell'invito all'upgrade. Una volta rilevato un aggiornamento principale del sistema operativo in attesa, verrà inviata una notifica push al dispositivo da Google Play Services, che porterà al flusso di invito all'upgrade.

Android Broadcast - Notifica attivata da Google (consigliata)

La trasmissione di app è il modo più semplice e consigliato per integrare il flusso di invito all'upgrade.

Un broadcast receiver ti consente di attivare il flusso di invito all'upgrade dalla tua app utilizzando un messaggio di trasmissione. La trasmissione invia una notifica push al dispositivo da Google Play Services, il che porta al flusso di invito all'upgrade.

Prerequisiti per la trasmissione

Per preparare l'app, completa i passaggi descritti nelle sezioni seguenti.

Assicurati che i file di configurazione dell'app utilizzino i seguenti valori:

  • Una minSdkVersion pari a 14 o superiore
  • compileSdkVersion 28 o versioni successive
  • Un usesPermission di android.permission.RECOVERY

Inviare l'annuncio

Di seguito sono riportate le istruzioni per l'app (o il codice) OEM per inviare una trasmissione Android per attivare la notifica push:

  1. Invia la trasmissione con l'azione.

    com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE
    
  2. Aggiungi il pacchetto com.google.android.gms alla trasmissione.

    com.google.android.gms
    

Requisiti aggiuntivi

Il flusso di invito all'upgrade consente inoltre agli utenti di eseguire l'upgrade del sistema operativo direttamente dal flusso.

Affinché questa operazione funzioni, esponi un intent personalizzato che Google possa chiamare dal flusso di invito all'upgrade che attiva il download dell'aggiornamento.

Esempio di utilizzo della trasmissione

Vedi il seguente esempio di trasmissione dell'applicazione:

Context context = getApplicationContext();
Intent upgradeInviteIntent = new Intent()
  .setAction( "com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE")
  .setPackage("com.google.android.gms");
  .putExtra("com.google.android.gms.growth.upgradeparty.upgradeinvite.EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER", 14);

context.sendBroadcast(updateIntent);

Il valore della chiave EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER è un numero intero che indica la versione del sistema operativo in attesa (in questo esempio, la versione di Android da installare è 14). Viene utilizzato per determinare quale flusso di invito all'upgrade verrà attivato.

SDK Play Services - solo attivazione del flusso

L'SDK di terze parti ti consente di attivare il flusso di invito all'upgrade dalla tua app o dalle tue notifiche OTA. Utilizza un'API esterna di terze parti per attivare il flusso di invito all'upgrade. Questo metodo è meno consigliato.

Prerequisiti

Per preparare l'app, completa i passaggi descritti nelle sezioni seguenti.

Assicurati che il file di build dell'app utilizzi i seguenti valori:

  • Una minSdkVersion pari a 14 o superiore
  • compileSdkVersion 28 o versioni successive

Configura la tua app

Per configurare l'app:

1. Extract the library from the provided .zip file, and place it in your

repository. 2. Aggiungi le dipendenze per l'SDK Google Growth al file Gradle a livello di app del modulo, in genere app/build.gradle:

   dependencies {
    implementation files('<PATH_TO_BINARY>/play-services-growth-16.1.0-eap04.aar')
   }
  1. Per fornire le dipendenze del client, includi le seguenti librerie:

    com.google.android.gms:play-services-base:18.0.1
    com.google.android.gms:play-services-basement:18.0.0
    com.google.android.gms:play-services-tasks:18.0.1
    

Inizializzazione dell'API

  1. Per inizializzare un client, utilizza la classe UpgradeParty:

    import com.google.android.gms.growth.UpgradeParty;
    UpgradeParty.getClient(activity);
    
  2. Il parametro attività deve essere l'oggetto Attività iniziale.

Funzioni API

UpgradePartyClient risultante espone le seguenti funzionalità.

isEligibleForUpgradeInvite

import com.google.android.gms.growth.UpgradeInviteEligibilityParams;

Task<Boolean> isEligibleForUpgradeInvite(UpgradeInviteEligibilityParams params);

/** Contains parameters for the eligibility query. */
class UpgradeInviteEligibilityParams {


/** Integer indicating the pending OS version (in this example, the Android version to be installed is 14). This is used to determine which Upgrade Invite flow will be triggered. */
  int pendingAndroidOsVersionNumber;
}

Restituisce un Task che verifica in modo asincrono se l'utente è idoneo per un invito all'upgrade. Il valore booleano risultante indica se l'utente è idoneo o meno.

invokeUpgradeInvite

Task<Void> invokeUpgradeInvite();

Richiama l'attività Invito all'upgrade. L'oggetto _Task _risultante indica se si è verificato un errore durante l'avvio dell'attività.

Codici di errore

Entrambi i metodi API potrebbero non riuscire con un'eccezione di tipo com.google.android.gms.common.api.ApiException. In questi casi, il chiamante deve riprovare in un secondo momento. I codici di stato comuni previsti includono:

  • INTERNAL_ERROR: per qualsiasi errore nel flusso della logica sottostante
  • TIMEOUT: se la richiesta non è stata gestita in modo tempestivo
  • API_NOT_CONNECTED: quando l'API non è disponibile (ovvero il modulo UpgradeParty non è ancora pronto)
  • NETWORK_ERROR: la richiesta non è stata gestita a causa di errori di rete
  • DEVELOPER_ERROR: il pacchetto chiamante non ha l'autorizzazione per accedere all'API UpgradeParty

Esempio di utilizzo dell'SDK

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.google.android.gms.growth.UpgradeParty;
import com.google.android.gms.growth.UpgradePartyClient;

public class SampleActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   final UpgradePartyClient client = UpgradeParty.getClient(this);

   // Hide the invocation button initially
   View startUpgradeInviteButton = findViewById(R.id.__some_button__);
   startUpgradeInviteButton.setVisibility(View.GONE);

   // Register an onClick handler to invoke the Upgrade Party Activity
   startUpgradeInviteButton
       .setOnClickListener(
           view -> {
             client
                 .invokeUpgradeInvite()
                 .addOnCompleteListener(
                     task -> {
                       if (!task.isSuccessful()) {
                         // Do something with error, see task.getException()
                       }
                     });
           });
   }

   // Check if eligible for an Upgrade Party
   client
       .isEligibleForUpgradeInvite()
       .addOnCompleteListener(
           task -> {
             if (!task.isSuccessful()) {
               // Do something with error, see task.getException()
             } else {
                  // Show/Hide invocation button, based on the result
                  int visibility = 
                        task.getResult() ? View.VISIBLE : View.GONE;
                  startUpgradeInviteButton.setVisibility(visibility);
             }
           });
   }