Zaproszenie do przejścia na Androida

Zaproszenie do aktualizacji to proces, który prezentuje najważniejsze nowe funkcje dostępne w bieżącej aktualizacji głównej systemu operacyjnego Android.

Ma on przekonać użytkowników do zaktualizowania urządzenia do najnowszej wersji systemu operacyjnego.

Gdy na urządzeniu oczekuje na zatwierdzenie przez użytkownika aktualizacja systemu operacyjnego, użytkownicy otrzymują powiadomienie push z informacjami o nowych funkcjach i zaproszeniem do przeprowadzenia aktualizacji.

Producenci urządzeń mogą włączyć funkcję Upgrade Party na swoich urządzeniach z systemem operacyjnym Android, przesyłając prośbę o aktywowanie zaproszenia do aktualizacji Androida.

Dostosowywanie zaproszenia do aktualizacji

Zaproszenie do aktualizacji możesz dostosować na te sposoby:

  • Usuń nieistotne funkcje.
  • Zaktualizuj język w blokach tekstu.
  • Zmodyfikuj animacje, kolory i czcionki, aby pasowały do Twojej marki.

Aby dostosować proces, zapoznaj się z wytycznymi w Przewodniku po stylu zaproszenia do aktualizacji i podaj informacje o dostosowaniu w odpowiedzi z formularza.

Przewodnik po stylu zaproszenia do aktualizacji

Korzystając z tego przewodnika po stylu, możesz zmodyfikować wygląd zaproszenia do aktualizacji, aby pasowało do Twojej marki (ekrany, kolory, czcionki). Zdecydowanie zalecamy zachowanie rozmiarów i struktury zbliżonych do oryginalnego projektu.

Proces zaproszenia do aktualizacji składa się z tych 3 komponentów:

  • Ekran z wprowadzeniem
  • Ekran funkcji
  • Ekran zakończenia
Rysunek 1. 3 typy ekranów w procesie zaproszenia do aktualizacji

Animacja na każdym ekranie pomaga wyjaśnić każdą funkcję.

Ekran z wprowadzeniem

Ekran z wprowadzeniem zawiera krótką animację, która wita użytkownika i zachęca go do rozpoczęcia procesu wyświetlanego na tym ekranie.

Układ
Rysunek 2. Układ szkieletowy ekranu z wprowadzeniem zaproszenia do uaktualnienia

Animacja urządzenia zawsze składa się z tych elementów:

  • Białe tło i kolorowe kształty
  • Ramka urządzenia
  • Treść interfejsu
Styl

Jeśli zdecydujesz się dostosować styl Material You, możesz użyć domyślnych kolorów i kształtów pokazanych w przykładzie.

Rysunek 3. Domyślny schemat kolorów procesu zaproszenia do aktualizacji.

Jeśli używasz koloru marki, upewnij się, że dobrze współgra on z tłem interfejsu.

Ruch

Opcja 1. Z zegarem na ekranie głównym

  1. Na ekranie pojawiają się cyfry.
  2. Cyfry przesuwają się na środek, zmniejszając się. Pojawia się ramka telefonu komórkowego.
  3. Telefon zmniejsza się. Na ekranie zaczynają pojawiać się kształty.
  4. Animacja jest zakończona. Kształty nadal delikatnie się poruszają.
Rysunek 4. Układ szkieletowy zaproszenia do uaktualnienia na ekranie wprowadzającym z animacją zegara.
Rysunek 5. Przykładowa animacja ekranu z wprowadzeniem z zegarem.

Opcja 2. Bez zegara na ekranie głównym

  1. Na ekranie pojawia się telefon komórkowy.
  2. Telefon przesuwa się na środek, zwiększając się. Na ekranie zaczynają pojawiać się kształty.
  3. Telefon osiąga maksymalny rozmiar, a kształty nadal się poruszają.
Rysunek 6. Układ szkieletowy animacji ekranu z wprowadzeniem zaproszenia do aktualizacji bez zegara.
Rysunek 7. Przykładowa animacja ekranu z wprowadzeniem bez zegara.

Ekran funkcji

Każdy ekran funkcji wyróżnia jedną funkcję w nowym systemie operacyjnym.

Układ
Rysunek 8. Układ szkieletowy ekranów funkcji zaproszenia do aktualizacji.

Animacja urządzenia zawsze składa się z tych elementów:

  • Kolorowe tło
  • Ramka urządzenia
  • Treść interfejsu
Styl
  • Wybierz kolor tła, który dobrze współgra z treścią interfejsu i ogólnym wyglądem.
  • Na ekranach ustaw rozmiary czcionek, które są łatwo czytelne. W razie potrzeby ustaw większe rozmiary czcionek.
Ruch

Nagraj animację procesu każdej funkcji, w tym interakcji dotykowych. Wyeksportuj nagrania jako pliki Lottie.

Ekran zakończenia

Ekran zakończenia zamyka proces. Informuje użytkowników, że przeszli przez wszystkie ekrany.

Układ
Rysunek 9. Układ szkieletowy ekranu zakończenia zaproszenia do aktualizacji.

Animacja urządzenia zawsze składa się z tych elementów:

  • Półkole na tle (plus animowane kształty)
  • Ramka urządzenia
  • Treść interfejsu
Styl
  • Wybierz kolor tła, który dobrze współgra z treścią interfejsu i ogólnym wyglądem.
  • Użyj kształtu półkola.
Ruch

Postępuj zgodnie ze standardowym procesem animacji ekranu zakończenia:

  1. Telefon komórkowy przesuwa się nieco do góry.
  2. Na tle pojawia się okrąg.
  3. Zza telefonu komórkowego wyłaniają się kształty.
  4. Kształty wylatują z tła jak konfetti.
Rysunek 10. Układ schematu strony animacji ekranu zakończenia zaproszenia do uaktualnienia.
Rysunek 11. Przykładowa animacja ekranu zakończenia.

Testowanie procesu zaproszenia do aktualizacji

  1. Na urządzeniu z Androidem otwórz Ustawienia > Google > Debugowanie Upgrade Party.
  2. Przygotuj wyzwalacz zaproszenia do aktualizacji dla odpowiedniego systemu operacyjnego urządzenia (w zależności od bieżącej wersji systemu operacyjnego i konkretnego procesu zaproszenia do aktualizacji, który chcesz przetestować). Możesz:
    1. Kliknąć Zapisz fałszywą aktualizację (bieżąca wersja). (na przykład jeśli używasz Androida 13, spowoduje to uruchomienie procesu testowego Androida 13)
    2. Kliknąć Zapisz oczekującą aktualizację (bieżąca wersja + 1). (na przykład jeśli używasz Androida 12, spowoduje to uruchomienie procesu testowego Androida 13)
    3. Kliknąć Zgłoś aktualizację systemu operacyjnego.
  3. Kliknij otrzymane powiadomienie lub Otwórz zaproszenie do aktualizacji.

Opcje wyzwalania zaproszenia do aktualizacji

Istnieją 3 sposoby wyzwalania procesu zaproszenia do aktualizacji: 1. automatyczny 2. transmisja 3. Wyzwalanie za pomocą pakietu SDK Usług Google Play

Automatyczny – powiadomienie wyzwalane przez Google (tylko w przypadku urządzeń z gOTA)

W przypadku urządzeń OEM z gOTA integracja jest automatyczna i nie wymaga żadnych czynności związanych z integracją zaproszenia do aktualizacji. Gdy zostanie wykryta oczekująca aktualizacja głównego systemu operacyjnego, usługi Google Play wyślą na urządzenie powiadomienie push, które spowoduje uruchomienie procesu zaproszenia do aktualizacji.

Transmisja Androida – powiadomienie wyzwalane przez Google (zalecane)

Transmisja aplikacji to najprostszy i zalecany sposób integracji procesu zaproszenia do aktualizacji.

Odbiornik transmisji umożliwia wyzwalanie procesu zaproszenia do aktualizacji z aplikacji za pomocą komunikatu. Transmisja wysyła na urządzenie powiadomienie push z usług Google Play, które powoduje uruchomienie procesu zaproszenia do aktualizacji.

Wymagania wstępne dotyczące transmisji

Aby przygotować aplikację, wykonaj czynności opisane w poniższych sekcjach.

Sprawdź, czy w plikach konfiguracyjnych aplikacji znajdują się te wartości:

  • minSdkVersion na poziomie 14 lub wyższym
  • compileSdkVersion na poziomie 28 lub wyższym
  • usesPermission na poziomie android.permission.RECOVERY

Wysyłanie transmisji

Poniżej znajdziesz instrukcje dotyczące wysyłania transmisji Androida przez aplikację OEM (lub kod), aby wyzwolić powiadomienie push:

  1. Wyślij transmisję z działaniem.

    com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE
    
  2. Dodaj do transmisji pakiet com.google.android.gms.

    com.google.android.gms
    

Dodatkowe wymagania

Proces zaproszenia do aktualizacji umożliwia też użytkownikom przeprowadzenie aktualizacji systemu operacyjnego bezpośrednio z tego procesu.

Aby to było możliwe, udostępnij niestandardowy intencję, którą Google może wywołać z procesu zaproszenia do aktualizacji, aby rozpocząć pobieranie aktualizacji.

Przykład użycia transmisji

Oto przykład transmisji aplikacji:

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

Wartość klucza EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER to liczba całkowita wskazująca oczekującą wersję systemu operacyjnego (w tym przykładzie wersja Androida do zainstalowania to 14). Służy ona do określania, który proces zaproszenia do aktualizacji zostanie wyzwolony.

Pakiet SDK Usług Google Play – tylko wyzwalanie procesu

Pakiet SDK innej firmy umożliwia wyzwalanie procesu zaproszenia do aktualizacji z aplikacji lub własnych powiadomień OTA. Aby aktywować sam proces zaproszenia do aktualizacji, użyj zewnętrznego interfejsu API innej firmy. Ta metoda jest mniej zalecana.

Wymagania wstępne

Aby przygotować aplikację, wykonaj czynności opisane w poniższych sekcjach.

Sprawdź, czy w pliku kompilacji Twojej aplikacji znajdują się te wartości:

  • minSdkVersion na poziomie 14 lub wyższym
  • compileSdkVersion na poziomie 28 lub wyższym

Konfiguracja aplikacji

Aby skonfigurować aplikację:

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

repozytorium. 2. Dodaj zależności pakietu SDK Google Growth do pliku Gradle na poziomie aplikacji modułu (zwykle app/build.gradle):

   dependencies {
    implementation files(&<#39;PATH_TO_BI>NARY/play-services-growth-16.1.0-eap04.aar';)
   }
  1. Aby udostępnić zależności klienta, dodaj te biblioteki:

    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
    

Inicjowanie interfejsu API

  1. Aby zainicjować klienta, użyj klasy UpgradeParty:

    import com.google.android.gms.growth.UpgradeParty;
    UpgradeParty.getClient(activity);
    
  2. Parametr activity powinien być obiektem Activity inicjującym.

Funkcje interfejsu API

Wynikowy element UpgradePartyClient udostępnia te funkcje.

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

Zwraca zadanie, które asynchronicznie sprawdza, czy użytkownik kwalifikuje się do zaproszenia do aktualizacji. Wynikowa wartość logiczna wskazuje, czy użytkownik kwalifikuje się, czy nie.

invokeUpgradeInvite

Task<Void> invokeUpgradeInvite();

Wywołuje aktywność zaproszenia do aktualizacji. Wynikowy obiekt _Task_ wskazuje, czy podczas uruchamiania aktywności wystąpił błąd.

Kody błędów

Obie metody interfejsu API mogą zakończyć się niepowodzeniem z wyjątkiem typu com.google.android.gms.common.api.ApiException. W takich przypadkach wywołujący powinien ponowić próbę później. Oczekiwane typowe kody stanu) to:

  • INTERNAL_ERROR – w przypadku dowolnego błędu w przepływie logiki bazowej
  • TIMEOUT – jeśli nie udało się obsłużyć żądania w odpowiednim czasie
  • API_NOT_CONNECTED – gdy interfejs API jest niedostępny (czyli moduł UpgradeParty nie jest jeszcze gotowy)
  • NETWORK_ERROR – nie udało się obsłużyć żądania z powodu błędów sieci
  • DEVELOPER_ERROR – wywołujący pakiet nie ma dostępu do interfejsu UpgradeParty API

Przykład użycia pakietu 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);
             }
           });
   }