Android Yükseltme Daveti

Yükseltme Daveti, mevcut büyük Android işletim sistemi yükseltmesinde yer alan önemli yeni özellikleri gösteren bir kullanıcı akışıdır.

Akışın amacı, kullanıcıları cihazlarını en son işletim sistemi sürümüne yükseltmeye ikna etmeye yardımcı olmaktır.

Bir cihazda kullanıcı onayı bekleyen bir işletim sistemi yükseltmesi olduğunda, kullanıcılar yeni özellikleri görüntüleyen ve onları yükseltmeyi gerçekleştirmeye davet eden bir anında bildirim alır.

Android işletim sisteminiz için Yükseltme Davetini etkinleştirmek için Android Yükseltme Davetini etkinleştirme isteği formunu kullanarak kaydolun.

Yükseltme Daveti deneyimini özelleştirin

Yükseltme Daveti deneyimini aşağıdaki yollarla özelleştirebilirsiniz:

  • İlgisiz özellikleri kaldırın.
  • Metin bloklarındaki dili güncelleyin.
  • Animasyonları, renkleri ve yazı tiplerini markanıza uyacak şekilde değiştirin.

Akışı özelleştirmek için Yükseltme Daveti Stil Kılavuzu'ndaki yönergeleri inceleyin ve özelleştirme bilgilerinizi Android Yükseltme Daveti'ni etkinleştirme isteği formuna ekleyin.

Davet Stil Kılavuzunu Yükselt

Yükseltme Daveti görünümünü kendi markanıza (ekranlar, renkler, yazı tipleri) uyacak şekilde değiştirmek için bu stil kılavuzunu kullanın. Boyutların ve yapının orijinal tasarıma yakın tutulmasını önemle tavsiye ederiz.

Yükseltme Daveti akışı aşağıdaki üç bileşeni içerir:

  • Giriş ekranı
  • Özellik ekranı
  • Çıkış ekranı
Şekil 1. Yükseltme daveti akışındaki üç ekran türü

Her ekrandaki bir animasyon, her özelliğin açıklanmasına yardımcı olur.

Giriş ekranı

Giriş ekranı, kullanıcıyı karşılayan ve giriş ekranında gösterilen akışı başlatmaya teşvik eden kısa bir animasyon içerir.

Düzen
Şekil 2. Yükseltme Daveti giriş ekranı için tel çerçeve düzeni

Cihaz animasyonu her zaman aşağıdakilerden oluşur:

  • Beyaz arka plan ve renkli şekiller
  • Cihaz çerçevesi
  • Kullanıcı arayüzü içeriği
Şekillendirme

Material You stilini uyarlamayı seçerseniz örnekte gösterilen varsayılan renkleri ve şekilleri kullanabilirsiniz.

Şekil 3. Yükseltme Daveti akışı için varsayılan renk şeması.

Kendi marka renginizi kullanıyorsanız bunun kullanıcı arayüzü arka planıyla iyi çalıştığından emin olun.

Hareket

Seçenek 1: Ana ekranda saat var

  1. Sayılar ekrana giriyor.
  2. Sayılar küçülürken merkeze doğru hareket eder. Cep telefonu çerçevesi görünür.
  3. Telefonun boyutu küçülüyor. Şekiller ekrana girmeye başlar.
  4. Animasyon tamamlandı. Şekiller yavaşça hareket etmeye devam ediyor.
Şekil 4. Yükseltme Daveti giriş ekranı animasyonunun saatli tel çerçeve düzeni.
Şekil 5. Saatli giriş ekranı için örnek animasyon.

Seçenek 2: Ana ekranda saat yok

  1. Cep telefonu ekrana giriyor.
  2. Telefonun boyutu artarken merkeze doğru hareket eder. Şekiller ekrana girmeye başlar.
  3. Telefon maksimum boyuta ulaşır ve şekiller hareket etmeye devam eder.
Şekil 6. Yükseltme Daveti giriş ekranı animasyonunun saatsiz tel çerçeve düzeni.
Şekil 7. Saatsiz giriş ekranı için örnek animasyon.

Özellik ekranı

Her özellik ekranı yeni işletim sistemindeki bir özelliği vurgular.

Düzen
Şekil 8. Yükseltme Daveti özelliği ekranları için tel çerçeve düzeni.

Cihaz animasyonu her zaman aşağıdakilerden oluşur:

  • Renkli arka plan
  • Cihaz çerçevesi
  • Kullanıcı arayüzü içeriği
Şekillendirme
  • Kullanıcı arayüzü içeriğine ve genel görünüme uygun bir arka plan rengi seçin.
  • Ekranların içinde kolayca okunabilecek yazı tipi boyutlarını ayarlayın. Gerekirse daha büyük yazı tipi boyutları ayarlayın.
Hareket

Dokunma etkileşimleri de dahil olmak üzere her özelliğin akışının bir animasyonunu kaydedin. Kayıtları Lottie dosyaları olarak dışa aktarın.

Çıkış ekranı

Çıkış ekranı akışı tamamlar. Kullanıcılara tüm ekranlardan geçtiklerini belirtir.

Düzen
Şekil 9. Yükseltme Daveti çıkış ekranı için tel çerçeve düzeni.

Cihaz animasyonu her zaman aşağıdakilerden oluşur:

  • Arka planda yarım daire (artı animasyonlu şekiller)
  • Cihaz çerçevesi
  • Kullanıcı arayüzü içeriği
Şekillendirme
  • Kullanıcı arayüzü içeriğine ve genel görünüme uygun bir arka plan rengi seçin.
  • Yarım daire şeklini kullanın.
Hareket

Standart çıkış ekranı animasyon akışını izleyin:

  1. Cep telefonu biraz yukarı doğru hareket ediyor.
  2. Arka planda bir daire belirir.
  3. Cep telefonunun arkasından şekiller çıkıyor.
  4. Şekiller konfeti gibi arka plandan uçup gidiyor.
Şekil 10. Yükseltme Daveti çıkış ekranı animasyonu için tel çerçeve düzeni.
Şekil 11. Örnek çıkış ekranı animasyonu.

Yükseltme Daveti Akışını Test Edin

  1. Android cihazda şuraya gidin: Ayarlar > Google > Yükseltme Partisi hata ayıklaması .
  2. İlgili cihaz işletim sistemi için Yükseltme Daveti tetikleyicisini hazırlayın (mevcut işletim sistemi sürümünüze ve test edilecek belirli Yükseltme Daveti akışına bağlı olarak). Şunlardan birini yapın:
    1. Sahte yükseltme yaz (geçerli sürüm) seçeneğine tıklayın. (örneğin, Android 13 işletim sistemini çalıştırıyorsanız bu, Android 13 test akışını tetikleyecektir)
    2. Bekleyen yükseltmeyi yaz (geçerli sürüm + 1) seçeneğine tıklayın. (örneğin, Android 12 işletim sistemini çalıştırıyorsanız bu, Android 13 test akışını tetikleyecektir)
    3. İşletim sistemi yükseltmesini bildir'e tıklayın
  3. Alınan bildirime tıklayın veya Yükseltme Davetini Aç'a tıklayın.

Yükseltme Daveti için tetikleme seçenekleri

Yükseltme Daveti akışını tetiklemenin 3 farklı yolu vardır: 1. otomatik 2. yayın 3. Play Hizmetleri SDK'sının tetiklenmesi

Otomatik - Google tarafından tetiklenen bildirim (yalnızca gOTA çalıştıran cihazlar için)

gOTA çalıştıran OEM cihazları için entegrasyon otomatiktir ve Yükseltme Daveti entegrasyon adımları gerekli değildir. Bekleyen büyük bir işletim sistemi yükseltmesi tespit edildiğinde, Google Play hizmetlerinden cihaza bir anında bildirim gönderilerek Yükseltme Daveti akışına yönlendirilir.

Android Yayını - Google tarafından tetiklenen bildirim (Önerilen)

Uygulama yayını, Yükseltme Daveti akışını entegre etmenin en basit ve önerilen yoludur.

Yayın alıcısı, bir yayın mesajı kullanarak uygulamanızdan Yükseltme Daveti akışını tetiklemenizi sağlar. Yayın, Google Play hizmetlerinden cihaza bir anında bildirim göndererek Yükseltme Daveti akışına yönlendirir.

Yayın Ön Koşulları

Uygulamanızı hazırlamak için aşağıdaki bölümlerdeki adımları tamamlayın.

Uygulamanızın yapılandırma dosyalarının aşağıdaki değerleri kullandığından emin olun:

  • 14 veya daha yüksek bir minSdkVersion
  • 28 veya daha yüksek bir compileSdkVersion
  • Android.permission.RECOVERY'nin kullanım izni

Yayını Gönder

Anlık bildirimi tetiklemek üzere bir Android yayını göndermek için OEM uygulamasının (veya kodunun) talimatlarını aşağıya bakın:

  1. Eylemle birlikte yayın gönderin.

    com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE
    
  2. com.google.android.gms paketini yayına ekleyin.

    com.google.android.gms
    

Ek gereksinimler

Yükseltme Daveti akışı, kullanıcıların işletim sistemi yükseltmesini doğrudan akıştan gerçekleştirmesine de olanak tanır.

Bunun işe yaraması için Google'ın, güncellemenin indirilmesini tetikleyen Yükseltme Daveti akışından çağırabileceği özel bir amacı ortaya çıkarın.

Örnek Yayın Kullanımı

Aşağıdaki uygulama yayını örneğine bakın:

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

EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER anahtarının değeri, beklemedeki işletim sistemi sürümünü belirten bir Tam Sayıdır (bu örnekte yüklenecek Android sürümü 14'tür). Bu, hangi Yükseltme Daveti akışının tetikleneceğini belirlemek için kullanılır.

Play Hizmetleri SDK'sı - yalnızca akış tetikleme

Üçüncü taraf SDK, uygulamanızdan veya kendi OTA bildirimlerinizden Yükseltme Daveti akışını tetiklemenizi sağlar. Yükseltme Daveti akışının kendisini etkinleştirmek için üçüncü taraf harici bir API kullanın. Bu yöntem daha az tavsiye edilir.

Önkoşullar

Uygulamanızı hazırlamak için aşağıdaki bölümlerdeki adımları tamamlayın.

Uygulamanızın derleme dosyasının aşağıdaki değerleri kullandığından emin olun:

  • 14 veya daha yüksek bir minSdkVersion
  • 28 veya daha yüksek bir compileSdkVersion

Uygulamanızı yapılandırın

Uygulamanızı yapılandırmak için:

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

depo. 2. Google Growth SDK bağımlılıklarını modülünüzün uygulama düzeyindeki Gradle dosyasına (normalde app/build.gradle ekleyin:

   dependencies {
    implementation files('<PATH_TO_BINARY>/play-services-growth-16.1.0-eap04.aar')
   }
  1. İstemcinin bağımlılıklarını sağlamak için aşağıdaki kitaplıkları ekleyin:

    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 Başlatma

  1. Bir istemciyi başlatmak için YükseltmeParty sınıfını kullanın:

    import com.google.android.gms.growth.UpgradeParty;
    UpgradeParty.getClient(activity);
    
  2. Activity parametresi, başlatıcı Activity nesnesi olmalıdır.

API işlevleri

Ortaya çıkan YükseltmePartyClient aşağıdaki işlevselliği ortaya çıkarır.

YükseltmeDavetine Uygundur

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

Kullanıcının Yükseltme Daveti için uygun olup olmadığını eşzamansız olarak doğrulayan bir Görev döndürür. Ortaya çıkan boole değeri kullanıcının uygun olup olmadığını gösterir.

çağırmaYükseltmeDavet Et

Task<Void> invokeUpgradeInvite();

Yükseltme Daveti Etkinliğini çağırır. Ortaya çıkan _Task _object, aktiviteyi başlatırken bir hatanın oluşup oluşmadığını gösterir.

Hata Kodları

com.google.android.gms.common.api.ApiException türü istisnası dışında her iki API yöntemi de başarısız olabilir. Bu gibi durumlarda arayanın daha sonra tekrar denemesi beklenir. Beklenen ortak durum kodları şunları içerir:

  • INTERNAL_ERROR - temel mantığın akışındaki herhangi bir hata için
  • ZAMAN AŞIMI - istek zamanında yerine getirilemezse
  • API_NOT_CONNECTED - API mevcut olmadığında (yani, YükseltmeParty modülü henüz hazır olmadığında)
  • NETWORK_ERROR - ağ hataları nedeniyle istek gerçekleştirilemedi
  • DEVELOPER_ERROR - çağıran paketin YükseltmeParty API'sine erişmesine izin verilmiyor

Örnek SDK Kullanımı

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