Android Yükseltme Daveti

Yükseltme daveti, mevcut Android OS ana sürüm 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ılara yeni özellikleri gösteren ve yükseltme yapmaları için davet eden bir push bildirimi gönderilir.

Android OS'inizde Yükseltme Daveti'ni etkinleştirmek için Android Yükseltme Daveti'ni etkinleştirme isteği formunu kullanarak kaydolun.

Yükseltme daveti deneyimini özelleştirme

Yükseltme daveti deneyimini aşağıdaki yöntemlerle özelleştirebilirsiniz:

  • Alakasız ö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 Yeni Sürüme Geçiş Daveti Stil Kılavuzu'ndaki yönergeleri inceleyin ve özelleştirme bilgilerinizi Android Yükseltme Daveti formuna özelleştirme bilgilerinizi ekleyin.

Yükseltme Davet Stil Kılavuzu

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ı ve yapıyı orijinal tasarıma yakın tutmanız önemle tavsiye edilir.

Yükseltme daveti akışı aşağıdaki üç bileşenden oluşur:

  • Giriş ekranı
  • Özellik ekranı
  • Kapanış ekranı
Şekil 1. Yükseltme daveti akışında üç ekran türü

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

Giriş ekranı

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

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

Cihaz animasyonu her zaman şunları içerir:

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

Material You stilini kullanmayı 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 bu rengin kullanıcı arayüzü arka planıyla uyumlu olduğundan emin olun.

Hareket

1. Seçenek: Ana ekranda saat göstererek

  1. Ekrana sayılar girilir.
  2. Sayılar, boyutları küçülürken merkeze doğru hareket eder. Cep telefonu çerçevesi görünür.
  3. Telefonun boyutu küçülür. Şekiller ekrana girmeye başlar.
  4. Animasyon tamamlandı. Şekiller yavaşça hareket etmeye devam eder.
Şekil 4. Saatli Yükseltme Daveti giriş ekranı animasyonu için tel çerçeve düzeni.
Şekil 5. Saat içeren giriş ekranı animasyonu örneği.

2. Seçenek: Ana ekranda saat yok

  1. Cep telefonu ekrana girer.
  2. Telefon, boyutu büyürken ortasına taşınır. Şekiller ekrana girmeye başlar.
  3. Telefon maksimum boyuta ulaşır ve şekiller hareket etmeye devam eder.
Şekil 6. Yükseltme daveti giriş ekranı animasyonu için saat içermeyen şematik düzen.
Şekil 7. Saat içermeyen giriş ekranı animasyonu örneği.

Özellik ekranı

Her özellik ekranında yeni işletim sistemindeki bir özellik öne çıkarılır.

Düzen
Şekil 8. Yükseltme Daveti özellik ekranları için şema düzeni.

Cihaz animasyonu her zaman şunları içerir:

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

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

Kapanış ekranı

Kapanış ekranı, akışı tamamlar. Kullanıcılara tüm ekranları tamamladıklarını gösterir.

Düzen
Şekil 9. Yükseltme daveti son ekranı için wireframe düzeni.

Cihaz animasyonu her zaman şunları içerir:

  • Arka planda yarım daire (ve animasyonlu şekiller)
  • Cihaz çerçevesi
  • Kullanıcı arayüzü içeriği
Stil
  • Kullanıcı arayüzü içeriği ve genel görünümle uyumlu bir arka plan rengi seçin.
  • Yarım daire şekli kullanın.
Hareket

Standart kapanış ekranı animasyon akışını uygulayın:

  1. Cep telefonu biraz yukarı hareket eder.
  2. Arka planda bir daire görünür.
  3. Şekiller cep telefonunun arkasından çıkıyor.
  4. Şekiller arka plandan konfeti gibi uçuyor.
Şekil 10. "Yükseltme Daveti kapatma" ekran animasyonu için tel çerçeve düzeni.
Şekil 11. Örnek kapanış ekranı animasyonu.

Yeni Sürüme Geçiş Davet Akışı'nı test etme

  1. Android cihazda Ayarlar > Google > Yükseltme Partisi hata ayıklama'ya gidin.
  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). Şu yöntemlerden birini kullanın:
    1. Yanlış yükseltme yaz (mevcut sürüm)'ı tıklayın. (örneğin, Android 13 işletim sistemi kullanıyorsanız bu, Android 13 test akışını tetikler)
    2. Yükseltme beklemede yazın (mevcut sürüm + 1)'i tıklayın. (örneğin, Android 12 işletim sistemini çalıştırırsanız Android 13 test akışı tetiklenir)
    3. İşletim sistemi yükseltmesini bildir'i tıklayın.
  3. Alınan bildirimi veya Yükseltme Davetini Aç'ı tıklayın.

Daveti Yeni Sürüme Geçirmek 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ı tetiklendi

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

gOTA çalıştıran OEM cihazlarda entegrasyon otomatiktir ve Yükseltme Daveti entegrasyon adımları gerekmez. Beklemedeki önemli bir OS yükseltmesi tespit edildiğinde Google Play Hizmetleri cihaza bir push bildirimi gönderir ve yükseltme daveti akışına yönlendirir.

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

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

Yayın alıcı, bir yayın mesajı kullanarak uygulamanızdan Yükseltme Daveti akışını tetiklemenizi sağlar. Yayın, Google Play Hizmetleri'nden cihaza bir push bildirimi gönderir ve Yükseltme Davet akışını başlatır.

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ında aşağıdaki değerlerin kullanıldığından emin olun:

  • minSdkVersion 14 veya sonraki sürümler
  • 28 veya daha yüksek bir çalışınSdkVersion
  • android.permission.RECOVERY izni için usesPermission

Anons gönder

Push bildirimini tetiklemek için Android yayını göndermeye yönelik OEM uygulamasının (veya kodunun) aşağıdaki talimatlarına bakın:

  1. İşlemi içeren 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
    

Diğer şartlar

"Yükseltme Daveti" akışı, kullanıcıların işletim sistemi yükseltme işlemini doğrudan akıştan gerçekleştirmesini de sağlar.

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

Örnek Yayın Kullanımı

Uygulama yayını örneğini aşağıda bulabilirsiniz:

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, bekleyen OS 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'sı, uygulamanızdan veya kendi OTA bildirimlerinizden Yükseltme Daveti akışını tetiklemenize olanak tanır. Daveti Yükseltme akışını etkinleştirmek için üçüncü taraf harici API kullanın. Bu yöntem daha az önerilir.

Ön koşullar

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

Uygulamanızın derleme dosyasında aşağıdaki değerlerin kullanıldığından emin olun:

  • minSdkVersion 14 veya sonraki sürümler
  • 28 veya daha yüksek bir çalışınSdkVersion

Uygulamanızı yapılandırma

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'sına ait bağımlılıkları, modülünüzün uygulama düzeyindeki Gradle dosyasına (genellikle app/build.gradle) ekleyin:

   dependencies {
    implementation files('<PATH_TO_BINARY>/play-services-growth-16.1.0-eap04.aar')
   }
  1. İstemcinin bağımlıları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'yi başlatma

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

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

API işlevleri

Sonuç olarak elde edilen UpgradePartyClient, aşağıdaki işlevleri gösterir.

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

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. Elde edilen boole değeri, kullanıcının uygun olup olmadığını gösterir.

invokeUpgradeInvite

Task<Void> invokeUpgradeInvite();

Yükseltme Davet Etkinliği'ni çağırır. Elde edilen _Task _nesnesi, etkinlik başlatılırken hata olup olmadığını gösterir.

Hata Kodları

Her iki API yöntemi de com.google.android.gms.common.api.ApiException türündeki bir istisnayla başarısız olabilir. Bu tür durumlarda, arayanın daha sonra yeniden denemesi beklenir. Beklenen yaygın durum kodları) şunları içerir:

  • INTERNAL_ERROR: Temel mantığın akışında oluşan hatalar için
  • TIMEOUT: İstek zamanında işlenemediyse
  • API_NOT_CONNECTED: API kullanılamadığında (yani UpgradeParty modülü henüz hazır olmadığında)
  • NETWORK_ERROR: Ağ hataları nedeniyle istek işlenemedi
  • DEVELOPER_ERROR: Arayan paketin UpgradeParty API'ye 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);
             }
           });
   }