Einladung zum Android-Upgrade

„Upgrade-Einladung“ ist ein User-Flow, in dem die wichtigsten neuen Funktionen des aktuellen großen Android-Betriebssystem-Upgrades vorgestellt werden.

Der Ablauf soll Nutzer davon überzeugen, ihr Gerät auf die neueste Betriebssystemversion zu aktualisieren.

Sobald ein Betriebssystem-Upgrade für ein Gerät aussteht, für das die Nutzer ihre Zustimmung geben müssen, erhalten sie eine Push-Benachrichtigung mit den neuen Funktionen und einer Einladung, das Upgrade durchzuführen.

Gerätehersteller können „Upgrade-Party“ für ihre Android-Betriebssystemgeräte aktivieren, indem sie das Formular „Anfrage zur Aktivierung der Android-Upgrade-Einladung“ einreichen.

„Upgrade-Einladung“ anpassen

Sie haben folgende Möglichkeiten, „Upgrade-Einladung“ anzupassen:

  • Entfernen Sie irrelevante Funktionen.
  • Aktualisieren Sie die Sprache in den Textblöcken.
  • Passen Sie die Animationen, Farben und Schriftarten an Ihre Marke an.

Wenn Sie den Ablauf anpassen möchten, lesen Sie die Richtlinien im Styleguide für „Upgrade-Einladung“ und geben Sie Ihre Anpassungsinformationen in der Formularantwort an.

Styleguide für „Upgrade-Einladung“

In diesem Styleguide erfahren Sie, wie Sie das Design von „Upgrade-Einladung“ an Ihre Marke anpassen können (Bildschirme, Farben, Schriftarten). Wir empfehlen dringend, die Größen und die Struktur des ursprünglichen Designs beizubehalten.

Der Ablauf „Upgrade-Einladung“ besteht aus den folgenden drei Komponenten:

  • Eingangsbildschirm
  • Bildschirm mit Funktionen
  • Outro-Bildschirm
Abbildung 1. Die drei Bildschirmtypen im Ablauf „Upgrade-Einladung“

Eine Animation auf jedem Bildschirm hilft, die jeweilige Funktion zu erklären.

Eingangsbildschirm

Der Eingangsbildschirm enthält eine kurze Animation, mit der der Nutzer begrüßt wird und die ihn dazu auffordert, den auf dem Bildschirm gezeigten Ablauf zu starten.

Layout
Abbildung 2. Wireframe-Layout für den Eingangsbildschirm von „Upgrade-Einladung“

Die Geräteanimation besteht immer aus:

  • Weißer Hintergrund und bunte Formen
  • Geräterahmen
  • UI-Inhalte
Stil

Wenn Sie den Stil von Material You anpassen möchten, können Sie die im Beispiel gezeigten Standardfarben und -formen verwenden.

Abbildung 3. Standardfarbschema für den Ablauf „Upgrade-Einladung“.

Wenn Sie Ihre eigene Markenfarbe verwenden, achten Sie darauf, dass sie gut zum UI-Hintergrund passt.

Bewegungsmodus

Option 1:Mit einer Uhr auf dem Startbildschirm

  1. Zahlen werden auf dem Bildschirm angezeigt.
  2. Die Zahlen bewegen sich zur Mitte und werden dabei kleiner. Der Rahmen des Mobiltelefons wird angezeigt.
  3. Das Telefon wird kleiner. Die Formen werden auf dem Bildschirm angezeigt.
  4. Die Animation ist abgeschlossen. Die Formen bewegen sich weiterhin leicht.
Abbildung 4. Wireframe-Layout für die Animation des Eingangsbildschirms von „Upgrade-Einladung“ mit einer Uhr.
Abbildung 5. Beispielanimation für den Eingangsbildschirm mit einer Uhr.

Option 2:Keine Uhr auf dem Startbildschirm

  1. Das Mobiltelefon wird auf dem Bildschirm angezeigt.
  2. Das Telefon bewegt sich zur Mitte und wird dabei größer. Die Formen werden auf dem Bildschirm angezeigt.
  3. Das Telefon erreicht die maximale Größe und die Formen bewegen sich weiter.
Abbildung 6. Wireframe-Layout für die Animation des Eingangsbildschirms von „Upgrade-Einladung“ ohne Uhr.
Abbildung 7. Beispielanimation für den Eingangsbildschirm ohne Uhr.

Bildschirm mit Funktionen

Auf jedem Bildschirm mit Funktionen wird eine Funktion des neuen Betriebssystems hervorgehoben.

Layout
Abbildung 8. Wireframe-Layout für die Bildschirme mit Funktionen von „Upgrade-Einladung“.

Die Geräteanimation besteht immer aus:

  • Bunter Hintergrund
  • Geräterahmen
  • UI-Inhalte
Stil
  • Wählen Sie eine Hintergrundfarbe, die gut zu den UI Inhalten und zum allgemeinen Erscheinungsbild passt.
  • Legen Sie auf den Bildschirmen Schriftgrößen fest, die gut lesbar sind. Bei Bedarf können Sie größere Schriftgrößen festlegen.
Bewegungsmodus

Nehmen Sie eine Animation des Ablaufs jeder Funktion auf, einschließlich der Touch-Interaktionen. Exportieren Sie die Aufnahmen als Lottie-Dateien.

Outro-Bildschirm

Der Outro-Bildschirm schließt den Ablauf ab. Er zeigt den Nutzern, dass sie alle Bildschirme durchlaufen haben.

Layout
Abbildung 9. Wireframe-Layout für den Outro-Bildschirm von „Upgrade-Einladung“.

Die Geräteanimation besteht immer aus:

  • Halbkreis im Hintergrund (plus animierte Formen)
  • Geräterahmen
  • UI-Inhalte
Stil
  • Wählen Sie eine Hintergrundfarbe, die gut zu den UI Inhalten und zum allgemeinen Erscheinungsbild passt.
  • Verwenden Sie eine Halbkreisform.
Bewegungsmodus

Folgen Sie dem Standardablauf für die Animation des Outro-Bildschirms:

  1. Das Mobiltelefon bewegt sich etwas nach oben.
  2. Im Hintergrund wird ein Kreis angezeigt.
  3. Hinter dem Mobiltelefon werden Formen angezeigt.
  4. Die Formen fliegen wie Konfetti aus dem Hintergrund.
Abbildung 10. Wireframe-Layout für die Animation des Outro-Bildschirms von „Upgrade-Einladung“.
Abbildung 11. Beispielanimation für den Outro-Bildschirm.

Ablauf „Upgrade-Einladung“ testen

  1. Gehen Sie auf dem Android-Gerät zu Einstellungen > Google > Upgrade-Party (Debug).
  2. Bereiten Sie den Trigger für „Upgrade-Einladung“ für das entsprechende Gerätebetriebssystem vor. Das hängt von Ihrer aktuellen Betriebssystemversion und dem zu testenden Ablauf „Upgrade-Einladung“ ab. Entweder:
    1. Klicken Sie auf Fake-Upgrade schreiben (aktuelle Version). Wenn Sie beispielsweise Android 13 OS verwenden, wird der Testablauf für Android 13 ausgelöst.
    2. Klicken Sie auf Ausstehendes Upgrade schreiben (aktuelle Version + 1). Wenn Sie beispielsweise Android 12 verwenden, wird der Testablauf für Android 13 ausgelöst.
    3. Klicken Sie auf Betriebssystem-Upgrade melden.
  3. Klicken Sie entweder auf die empfangene Benachrichtigung oder auf Upgrade-Einladung öffnen.

Triggeroptionen für „Upgrade-Einladung“

Es gibt drei verschiedene Möglichkeiten, den Ablauf „Upgrade-Einladung“ auszulösen: 1. automatisch 2. Broadcast 3. Play-Dienste-SDK-Trigger

Automatisch – von Google ausgelöste Benachrichtigung (nur für Geräte mit gOTA)

Bei OEM-Geräten mit gOTA erfolgt die Integration automatisch und es sind keine Schritte zur Integration von „Upgrade-Einladung“ erforderlich. Sobald ein ausstehendes großes Betriebssystem-Upgrade erkannt wird, wird über Google Play-Dienste eine Push-Benachrichtigung an das Gerät gesendet, die zum Ablauf „Upgrade-Einladung“ führt.

Android-Broadcast – von Google ausgelöste Benachrichtigung (empfohlen)

Ein App-Broadcast ist die einfachste und empfohlene Methode, den Ablauf „Upgrade-Einladung“ zu integrieren.

Mit einem Broadcast-Empfänger können Sie den Ablauf „Upgrade-Einladung“ über eine Broadcast-Nachricht aus Ihrer App auslösen. Über den Broadcast wird über Google Play-Dienste eine Push-Benachrichtigung an das Gerät gesendet, die zum Ablauf „Upgrade-Einladung“ führt.

Voraussetzungen für Broadcast

Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre App vorzubereiten.

Achten Sie darauf, dass in den Konfigurationsdateien Ihrer App die folgenden Werte verwendet werden:

  • Ein minSdkVersion von 14 oder höher
  • Ein compileSdkVersion von 28 oder höher
  • Ein usesPermission von android.permission.RECOVERY

Broadcast senden

Unten finden Sie die Anleitung für die OEM-App (oder den Code), um einen Android-Broadcast zu senden, der die Push-Benachrichtigung auslöst:

  1. Senden Sie einen Broadcast mit der Aktion.

    com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE
    
  2. Fügen Sie dem Broadcast das Paket com.google.android.gms hinzu.

    com.google.android.gms
    

Zusätzliche Anforderungen

Über den Ablauf „Upgrade-Einladung“ können Nutzer das Betriebssystem-Upgrade auch direkt aus dem Ablauf heraus durchführen.

Dazu müssen Sie eine benutzerdefinierte Intent verfügbar machen, die Google über den Ablauf „Upgrade-Einladung“ aufrufen kann, um den Download des Updates auszulösen.

Beispiel für die Verwendung von Broadcast

Hier ein Beispiel für einen App-Broadcast:

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

Der Wert des Schlüssels EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER ist eine Ganzzahl, die die ausstehende Betriebssystemversion angibt. In diesem Beispiel ist die zu installierende Android-Version 14. Dieser Wert wird verwendet, um zu bestimmen, welcher Ablauf „Upgrade-Einladung“ ausgelöst wird.

Play-Dienste SDK – nur Ablauf-Trigger

Mit dem SDK eines Drittanbieters können Sie den Ablauf „Upgrade-Einladung“ über Ihre App oder Ihre eigenen OTA-Benachrichtigungen auslösen. Verwenden Sie eine externe API eines Drittanbieters, um den Ablauf „Upgrade-Einladung“ selbst zu aktivieren. Diese Methode wird weniger empfohlen.

Voraussetzungen

Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre App vorzubereiten.

Achten Sie darauf, dass in der Build-Datei Ihrer App die folgenden Werte verwendet werden:

  • Ein minSdkVersion von 14 oder höher
  • Ein compileSdkVersion von 28 oder höher

Eigene App konfigurieren

So konfigurieren Sie Ihre App:

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

Repository. 2. Fügen Sie der Gradle-Datei Ihres Moduls auf App-Ebene – üblicherweise app/build.gradle – die Abhängigkeiten für das Google Growth SDK hinzu:

   dependencies {
    implementation files(&<#39;PATH_TO_BI>NARY/play-services-growth-16.1.0-eap04.aar';)
   }
  1. Fügen Sie die folgenden Bibliotheken hinzu, um die Abhängigkeiten des Clients bereitzustellen:

    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
    

API-Initialisierung

  1. Verwenden Sie die Klasse „UpgradeParty“, um einen Client zu initialisieren:

    import com.google.android.gms.growth.UpgradeParty;
    UpgradeParty.getClient(activity);
    
  2. Der Parameter „activity“ sollte das initiierende Activity-Objekt sein.

API-Funktionen

Der resultierende UpgradePartyClient macht die folgenden Funktionen verfügbar.

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

Gibt eine Aufgabe zurück, die asynchron prüft, ob der Nutzer für eine „Upgrade-Einladung“ infrage kommt. Der resultierende boolesche Wert gibt an, ob der Nutzer infrage kommt oder nicht.

invokeUpgradeInvite

Task<Void> invokeUpgradeInvite();

Ruft die Aktivität „Upgrade-Einladung“ auf. Das resultierende _Aufgabenobjekt_ gibt an, ob beim Starten der Aktivität ein Fehler aufgetreten ist.

Fehlercodes

Bei beiden API-Methoden kann ein Fehler mit einer Ausnahme vom Typ com.google.android.gms.common.api.ApiException auftreten. In solchen Fällen sollte der Aufrufer es später noch einmal versuchen. Zu den erwarteten häufigen Statuscodes) gehören:

  • INTERNAL_ERROR : für jeden Fehler im Ablauf der zugrunde liegenden Logik
  • TIMEOUT : wenn die Anfrage nicht rechtzeitig bearbeitet werden konnte
  • API_NOT_CONNECTED : wenn die API nicht verfügbar ist (d. h., das UpgradeParty-Modul ist noch nicht bereit)
  • NETWORK_ERROR : die Anfrage konnte aufgrund von Netzwerkfehlern nicht bearbeitet werden
  • DEVELOPER_ERROR : das aufrufende Paket hat keinen Zugriff auf die UpgradeParty API

Beispiel für die SDK-Nutzung

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