Invitation à la mise à niveau Android

L'invitation à la mise à niveau est un flux d'utilisateurs qui présente les nouvelles fonctionnalités clés incluses dans la mise à niveau majeure du système d'exploitation Android actuellement disponible.

Le flux est destiné à convaincre les utilisateurs de mettre à niveau leur appareil vers la dernière version du système d'exploitation.

Une fois qu'un appareil dispose d'une mise à niveau du système d'exploitation en attente de l'approbation de l'utilisateur, les utilisateurs reçoivent une notification push affichant les nouvelles fonctionnalités et les invitant à effectuer la mise à niveau.

Pour activer l'invitation à la mise à niveau pour votre système d'exploitation Android, inscrivez-vous à l'aide du formulaire Demande d'activation de l'invitation à la mise à niveau Android .

Personnaliser l'expérience d'invitation à mettre à niveau

Vous pouvez personnaliser l'expérience d'invitation à la mise à niveau des manières suivantes :

  • Supprimez les fonctionnalités non pertinentes.
  • Mettez à jour la langue dans les blocs de texte.
  • Modifiez les animations, les couleurs et les polices en fonction de votre marque.

Pour personnaliser le flux, consultez les instructions du Guide de style d'invitation à la mise à niveau et incluez vos informations de personnalisation dans le formulaire Demande d'activation de l'invitation à la mise à niveau Android .

Guide de style d'invitation à la mise à niveau

Utilisez ce guide de style pour modifier l'apparence de l'invitation de mise à niveau en fonction de votre propre marque (écrans, couleurs, polices). Nous recommandons fortement de conserver les dimensions et la structure proches du design original.

Le flux d'invitation à la mise à niveau comprend les trois composants suivants :

  • Écran d'introduction
  • Écran de fonctionnalités
  • Écran de sortie
Figure 1. Les trois types d'écran dans le flux d'invitation à la mise à niveau

Une animation sur chaque écran permet d'expliquer chaque fonctionnalité.

Écran d'introduction

L'écran d'introduction contient une courte animation qui accueille l'utilisateur et l'encourage à démarrer le flux affiché sur l'écran d'introduction.

Mise en page
Figure 2. Disposition filaire pour l'écran d'introduction de l'invitation à la mise à niveau

L'animation de l'appareil comprend toujours :

  • Fond blanc et formes colorées
  • Cadre de l'appareil
  • Contenu de l'interface utilisateur
Coiffant

Si vous choisissez d'adapter le style Material You , vous pouvez utiliser les couleurs et les formes par défaut présentées dans l'exemple.

Figure 3. Jeu de couleurs par défaut pour le flux d'invitation à la mise à niveau.

Si vous utilisez la couleur de votre propre marque, assurez-vous qu'elle fonctionne bien avec l'arrière-plan de l'interface utilisateur.

Mouvement

Option 1 : Avec une horloge sur l'écran d'accueil

  1. Les chiffres entrent à l’écran.
  2. Les nombres se déplacent vers le centre tout en diminuant en taille. Le cadre du téléphone mobile apparaît.
  3. Le téléphone diminue en taille. Les formes commencent à entrer dans l'écran.
  4. L'animation est terminée. Les formes continuent de bouger doucement.
Figure 4. Disposition filaire pour l'animation de l'écran d'introduction de l'invitation à la mise à niveau avec une horloge.
Figure 5. Exemple d'animation pour l'écran d'introduction avec une horloge.

Option 2 : Pas d'horloge sur l'écran d'accueil

  1. Le téléphone mobile entre dans l'écran.
  2. Le téléphone se déplace vers le centre tout en augmentant sa taille. Les formes commencent à entrer dans l'écran.
  3. Le téléphone atteint la taille maximale et les formes continuent de bouger.
Figure 6. Disposition filaire pour l'animation de l'écran d'introduction de l'invitation à la mise à niveau sans horloge.
Figure 7. Exemple d'animation pour l'écran d'introduction sans horloge.

Écran de fonctionnalités

Chaque écran de fonctionnalité met en évidence une fonctionnalité du nouveau système d'exploitation.

Mise en page
Figure 8. Disposition filaire pour les écrans de la fonctionnalité d'invitation à la mise à niveau.

L'animation de l'appareil comprend toujours :

  • Fond coloré
  • Cadre de l'appareil
  • Contenu de l'interface utilisateur
Coiffant
  • Choisissez une couleur d'arrière-plan qui fonctionne bien avec le contenu de l'interface utilisateur et avec l'apparence générale.
  • À l’intérieur des écrans, définissez des tailles de police facilement lisibles. Si nécessaire, définissez des tailles de police plus grandes.
Mouvement

Enregistrez une animation du flux de chaque fonctionnalité, y compris les interactions tactiles. Exportez les enregistrements sous forme de fichiers Lottie .

Écran de sortie

L’écran outro complète le flux. Cela indique aux utilisateurs qu'ils ont parcouru tous les écrans.

Mise en page
Figure 9. Disposition filaire pour l'écran final d'invitation à la mise à niveau.

L'animation de l'appareil comprend toujours :

  • Demi-cercle en arrière-plan (plus formes animées)
  • Cadre de l'appareil
  • Contenu de l'interface utilisateur
Coiffant
  • Sélectionnez une couleur d'arrière-plan qui fonctionne bien avec le contenu de l'interface utilisateur et avec l'apparence générale.
  • Utilisez une forme en demi-cercle.
Mouvement

Suivez le flux d'animation standard de l'écran de sortie :

  1. Le téléphone mobile monte un peu.
  2. Un cercle apparaît en arrière-plan.
  3. Des formes surgissent derrière le téléphone portable.
  4. Les formes jaillissent du fond comme des confettis.
Figure 10. Disposition filaire pour l'animation de l'écran de sortie de l'invitation à la mise à niveau.
Figure 11. Exemple d'animation d'écran de sortie.

Testez le flux d'invitation à la mise à niveau

  1. Sur l'appareil Android, accédez à : Paramètres > Google > Débogage de Upgrade Party .
  2. Préparez le déclencheur d'invitation à la mise à niveau pour le système d'exploitation de l'appareil concerné (en fonction de la version actuelle de votre système d'exploitation et du flux d'invitation à la mise à niveau spécifique à tester. Soit :
    1. Cliquez sur Écrire une fausse mise à niveau (version actuelle) . (par exemple, si vous exécutez le système d'exploitation Android 13, cela déclenchera le flux de test Android 13)
    2. Cliquez sur Écrire en attente de mise à niveau (version actuelle + 1) . (par exemple, si vous exécutez le système d'exploitation Android 12, cela déclenchera le flux de test Android 13)
    3. Cliquez sur Signaler la mise à niveau du système d'exploitation
  3. Cliquez sur la notification reçue ou cliquez sur Ouvrir l'invitation à la mise à niveau.

Options de déclenchement pour l'invitation à la mise à niveau

Il existe 3 manières différentes de déclencher le flux d'invitation à la mise à niveau : 1. automatique 2. diffusion 3. déclenchement du SDK des services Play

Automatique : notification déclenchée par Google (pour les appareils exécutant GOTA uniquement)

Pour les appareils OEM qui exécutent gOTA, l’intégration est automatique et aucune étape d’intégration d’invitation à mise à niveau n’est requise. Une fois qu'une mise à niveau majeure du système d'exploitation en attente est détectée, une notification push sera envoyée à l'appareil à partir des services Google Play, menant au flux d'invitation à la mise à niveau.

Android Broadcast – Notification déclenchée par Google (recommandé)

Une diffusion d’application est le moyen le plus simple et recommandé d’intégrer le flux d’invitation à la mise à niveau.

Un récepteur de diffusion vous permet de déclencher le flux d'invitation de mise à niveau à partir de votre application à l'aide d'un message de diffusion. La diffusion envoie une notification push à l'appareil à partir des services Google Play, conduisant au flux d'invitation à la mise à niveau.

Conditions préalables à la diffusion

Pour préparer votre application, suivez les étapes des sections suivantes.

Assurez-vous que les fichiers de configuration de votre application utilisent les valeurs suivantes :

  • Une minSdkVersion de 14 ou supérieure
  • Une version compileSdk de 28 ou supérieure
  • Une autorisation d'utilisation de android.permission.RECOVERY

Envoyer la diffusion

Voir ci-dessous les instructions pour que l'application OEM (ou le code) envoie une diffusion Android afin de déclencher la notification push :

  1. Envoyer une diffusion avec l'action.

    com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE
    
  2. Ajoutez le package com.google.android.gms à la diffusion.

    com.google.android.gms
    

Exigences supplémentaires

Le flux d’invitation à la mise à niveau permet également aux utilisateurs d’effectuer la mise à niveau du système d’exploitation directement à partir du flux.

Pour que cela fonctionne, exposez une intention personnalisée que Google peut appeler à partir du flux d'invitation à la mise à niveau qui déclenche le téléchargement de la mise à jour.

Exemple d'utilisation de diffusion

Voir l'exemple suivant de diffusion d'application :

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);

La valeur de la clé EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER est un Entier indiquant la version du système d'exploitation en attente (dans cet exemple, la version d'Android à installer est la 14). Ceci est utilisé pour déterminer quel flux d’invitation de mise à niveau sera déclenché.

SDK Play Services – déclenchement de flux uniquement

Le SDK tiers vous permet de déclencher le flux d'invitation à la mise à niveau à partir de votre application ou de vos propres notifications OTA. Utilisez une API externe tierce pour activer le flux d'invitation à la mise à niveau lui-même. Cette méthode est moins recommandée.

Conditions préalables

Pour préparer votre application, suivez les étapes des sections suivantes.

Assurez-vous que le fichier de build de votre application utilise les valeurs suivantes :

  • Une minSdkVersion de 14 ou supérieure
  • Une version compileSdk de 28 ou supérieure

Configurez votre application

Pour configurer votre application :

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

dépôt. 2. Ajoutez les dépendances du SDK Google Growth au fichier Gradle au niveau de l'application de votre module, normalement app/build.gradle :

   dependencies {
    implementation files('<PATH_TO_BINARY>/play-services-growth-16.1.0-eap04.aar')
   }
  1. Pour fournir les dépendances du client, incluez les bibliothèques suivantes :

    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
    

Initialisation de l'API

  1. Pour initialiser un client, utilisez la classe UpgradeParty :

    import com.google.android.gms.growth.UpgradeParty;
    UpgradeParty.getClient(activity);
    
  2. Le paramètre d’activité doit être l’objet Activity initiateur.

Fonctions API

Le UpgradePartyClient résultant expose les fonctionnalités suivantes.

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;
}

Renvoie une tâche qui vérifie de manière asynchrone si l'utilisateur est éligible à une invitation de mise à niveau. La valeur booléenne résultante indique si l'utilisateur est éligible ou non.

invoquerUpgradeInvite

Task<Void> invokeUpgradeInvite();

Appelle l’activité d’invitation à la mise à niveau. Le _Task _object résultant indique si une erreur s'est produite lors du démarrage de l'activité.

Codes d'erreur

Les deux méthodes API peuvent échouer avec une exception du type com.google.android.gms.common.api.ApiException . Dans de tels cas, l'appelant est censé réessayer ultérieurement. Les codes d'état courants attendus ) incluent :

  • INTERNAL_ERROR - pour toute erreur dans le flux de la logique sous-jacente
  • TIMEOUT - si la demande n'a pas pu être traitée dans les délais
  • API_NOT_CONNECTED - lorsque l'API n'est pas disponible (c'est-à-dire que le module UpgradeParty n'est pas encore prêt)
  • NETWORK_ERROR - la demande n'a pas pu être traitée en raison d'erreurs réseau
  • DEVELOPER_ERROR - le package appelant n'est pas autorisé à accéder à l'API UpgradeParty

Exemple d'utilisation du 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);
             }
           });
   }