Zaproszenie do przejścia na Androida

Zaproszenie do uaktualnienia to proces, który pokazuje najważniejsze nowe funkcje dostępne w obecnej głównej aktualizacji systemu operacyjnego Android.

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

Gdy aktualizacja systemu operacyjnego urządzenia oczekuje na zatwierdzenie przez użytkownika, wysyłamy powiadomienie z informacjami o nowych funkcjach i zaproszeniem do przeprowadzenia aktualizacji.

Aby włączyć funkcję Upgrade Invite w systemie operacyjnym Android, zarejestruj się, korzystając z tego formularza.

Dostosowywanie zaproszenia do przejścia na płatną wersję

Możesz dostosować proces zaproszenia do korzystania z ulepszonej wersji w następujące sposoby:

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

Aby dostosować proces, zapoznaj się z wytycznymi w przewodniku po stylach zaproszenia do uaktualnienia i podaj informacje o dostosowaniu w formularzu prośby o aktywowanie zaproszenia do uaktualnienia na Androida.

Poradnik dotyczący stylu zaproszenia do uaktualnienia

Skorzystaj z tego przewodnika stylistycznego, by dostosować wygląd zaproszenia do przejścia na nową wersję, aby pasował do Twojej marki (ekrany, kolory, czcionki). Zdecydowanie zalecamy, aby rozmiar i struktura były zbliżone do oryginalnego projektu.

Proces zapraszania do uaktualnienia obejmuje te 3 komponenty:

  • Ekran wprowadzający
  • Ekran funkcji
  • Ekran zakończenia
Rysunek 1. 3 typy ekranów w procesie zapraszania do przejścia na wyższą wersję

Animacja na każdym ekranie pomaga wyjaśnić działanie poszczególnych funkcji.

Ekran wprowadzający

Ekran powitalny zawiera krótką animację, która wita użytkownika i zachęca do rozpoczęcia procesu widocznego na tym ekranie.

Układ
Rysunek 2. Schemat schematu ekranu z wprowadzeniem do zaproszenia do przejścia na nową wersję

Animacja urządzenia zawsze zawiera:

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

Jeśli zdecydujesz się na dostosowanie stylu 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 w procesie zaproszenia do przejścia na wyższy poziom.

Jeśli używasz koloru własnego marki, dopilnuj, aby współgrał z tłem interfejsu użytkownika.

Ruch

Opcja 1. Z zegarem na ekranie głównym

  1. Na ekranie pojawią się liczby.
  2. Liczby przesuwają się do środka, zmniejszając przy tym swoją wielkość. Pojawi się ramka telefonu komórkowego.
  3. Telefon staje się pomniejszony. Kształty zaczynają pojawiać się na ekranie.
  4. Animacja została zakończona. Kształty poruszają się wciąż delikatnie.
Rysunek 4. Wireframe layout for the Upgrade Invite intro screen animation with a clock.
Rysunek 5. Przykładowa animacja ekranu z wprowadzeniem z zegarem.

Opcja 2. Brak zegara na ekranie głównym

  1. Telefon komórkowy wchodzi w ramy ekranu.
  2. Telefon przesuwa się na środek, a tym samym powiększa. Kształty zaczynają pojawiać się na ekranie.
  3. Telefon osiąga maksymalny rozmiar, a kształty nadal się poruszają.
Rysunek 6. Wireframe layout for the Upgrade Invite intro screen animation without a clock.
Rysunek 7. Przykładowa animacja na ekranie z wprowadzeniem bez zegara.

Ekran funkcji

Każdy ekran funkcji przedstawia funkcje wprowadzone w nowym systemie operacyjnym.

Układ
Rysunek 8. Szkic układu ekranów funkcji zaproszenia do ulepszania.

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

  • Kolorowe tło
  • Ramka urządzenia
  • Treść interfejsu
Stylizacja
  • Wybierz kolor tła, który dobrze pasuje do treści interfejsu i ogólnego wyglądu.
  • Ustaw na ekranach czytelne rozmiary czcionek. W razie potrzeby ustaw większe rozmiary czcionek.
Ruch

Nagraj animację przepływu danych w przypadku każdej funkcji, w tym interakcji dotykiem. Wyeksportuj nagrania jako pliki Lottie.

Ekran zakończenia

Ekran outro kończy proces. Informuje ona użytkowników o przejściu przez wszystkie ekrany.

Układ
Rysunek 9. Wireframe układu ekranu zakończenia zaproszenia do uaktualnienia.

Animacja urządzenia zawsze składa się z:

  • Półokrąg na tle (plus animowane kształty)
  • Ramka urządzenia
  • Treść interfejsu
Styl
  • Wybierz kolor tła, który dobrze pasuje do treści interfejsu i ogólnego wyglądu.
  • Użyj kształtu półkola.
Ruch

Wykonaj standardową animację ekranu końcowego:

  1. Telefon komórkowy przesuwa się nieco w górę.
  2. W tle pojawi się okrąg.
  3. Kształty pojawiają się za telefonem.
  4. Kształty wylatują z tła jak konfetti.
Rysunek 10. Wireframe układu animacji ekranu końcowego zaproszenia do ulepszenia.
Rysunek 11. Przykład animacji ekranu outro

Testowanie procesu zaproszenia do uaktualnienia

  1. Na urządzeniu z Androidem otwórz Ustawienia > Google > Debugowanie Upgrade Party.
  2. Przygotuj aktywator do zaproszenia do przejścia na wyższą wersję dla danego systemu operacyjnego urządzenia (w zależności od obecnej wersji systemu operacyjnego i konkretnego procesu zaproszenia do przejścia na wyższą wersję do przetestowania. Wykonaj jedną z tych czynności:
    1. Kliknij Write Fake upgrade (current version) (Napisz fałszywą aktualizację (obecna wersja)). (jeśli na przykład uruchomisz system operacyjny Android 13, uruchomi to przepływ testów Androida 13).
    2. Kliknij Zapisz oczekujące uaktualnienie (bieżąca wersja + 1). (np. jeśli używasz Androida 12, uruchomi to proces testowania Androida 13)
    3. Kliknij Zgłoś uaktualnienie systemu operacyjnego.
  3. Kliknij otrzymane powiadomienie lub Otwórz zaproszenie do przejścia na wyższą wersję.

Opcje aktywatora dla opcji Zaproś do przejścia na wyższy pakiet

Istnieją 3 sposoby wywołania procesu zaproszenia do przejścia na nową wersję: 1. automatycznie 2. w ramach transmisji 3. Uruchomiono pakiet SDK Usług Google Play

Automatyczne – powiadomienie wywołane przez Google (tylko na urządzeniach z gOTA)

W przypadku urządzeń OEM z gOTA integracja jest automatyczna i nie wymaga żadnych czynności. Po wykryciu oczekującej dużej aktualizacji systemu operacyjnego usługa Google Play wyśle na urządzenie powiadomienie push, które przekieruje Cię do procesu aktualizacji.

Przesyłanie na Androida – powiadomienie uruchomione przez Google (zalecane)

Transmisja aplikacji to najprostszy i zalecany sposób na zintegrowanie procesu ulepszania za pomocą zaproszenia.

Odbiornik transmisji umożliwia uruchomienie procesu zaproszenia do uaktualnienia w aplikacji za pomocą wiadomości przesyłanej do wszystkich użytkowników. Transmisja wysyła powiadomienie push do urządzenia z Usługami Google Play, co prowadzi do uruchomienia procesu zaproszenia do uaktualnienia.

Wymagania wstępne dotyczące transmisji

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

Upewnij się, że pliki konfiguracji aplikacji zawierają te wartości:

  • wartość minSdkVersion = 14 lub wyższa,
  • compileSdkVersion 28 lub nowsza.
  • Uprawnienie usesPermission o nazwie android.permission.RECOVERY

Wysyłanie transmisji

Poniżej znajdziesz instrukcje dotyczące aplikacji OEM (lub kodu) umożliwiające wysłanie transmisji na Androida, aby wywołać powiadomienie push:

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

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

    com.google.android.gms
    

Dodatkowe wymagania

Proces zaproszenia do uaktualnienia umożliwia użytkownikom uaktualnienie systemu operacyjnego bezpośrednio z tego procesu.

Aby to zadziałało, udostępnij niestandardowy zamiar, który Google może wywołać z poziomu przepływu danych Upgrade Invite, który uruchamia 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 do określenia, który proces zaproszenia do uaktualnienia zostanie uruchomiony.

Pakiet SDK Usług Google Play – tylko uruchamianie przepływu

Pakiet SDK zewnętrznego dewelopera umożliwia Ci uruchamianie procesu zaproszenia do uaktualnienia z poziomu aplikacji lub własnych powiadomień OTA. Użyj zewnętrznego interfejsu API innej firmy, aby aktywować proces zaproszenia do ulepszonej wersji. 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:

  • Wersja minSdkVersion w wersji 14 lub nowszej
  • compileSdkVersion 28 lub nowsza.

Konfigurowanie 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('<PATH_TO_BINARY>/play-services-growth-16.1.0-eap04.aar')
   }
  1. Aby zapewnić zależności klienta, dołącz 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 aktywności powinien być obiektem inicjującym aktywność.

Funkcje interfejsu API

Uzyskany obiekt UpgradePartyClient udostępnia te funkcje.

isEligibleForUpgradeInvite (w języku angielskim)

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 Task, który asynchronicznie sprawdza, czy użytkownik kwalifikuje się do otrzymania zaproszenia do przejścia na wyższy poziom. Wynikowa wartość logiczna wskazuje, czy użytkownik kwalifikuje się do udziału w programie.

.

invokeUpgradeInvite

Task<Void> invokeUpgradeInvite();

Wywołuje aktywność zaproszenia do uaktualnienia. Wygenerowany obiekt _Task _wskazuje, czy podczas uruchamiania aktywności wystąpił błąd.

Kody błędów

Obie metody interfejsu API mogą się nie udać z wyjątkiem typu com.google.android.gms.common.api.ApiException. W takich przypadkach dzwoniący powinien spróbować ponownie później. Typowe kody stanu:

  • INTERNAL_ERROR (BŁĄD_WEWNĘTRZNY) – oznacza dowolny błąd w przepływie działania logiki.
  • LIMIT CZASOWY – jeśli żądanie nie zostało obsłużone w odpowiednim czasie.
  • API_NOT_CONNECTED – gdy interfejs API jest niedostępny (czyli moduł UpgradeParty nie jest jeszcze gotowy);
  • NETWORK_ERROR – żądanie nie zostało obsłużone z powodu błędów sieciowych.
  • DEVELOPER_ERROR – pakiet wywołujący 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);
             }
           });
   }