Android Yükseltme Daveti

Yükseltme daveti, mevcut Android OS'in ana sürüm yükseltmesinde yer alan temel yeni özellikleri gösteren bir kullanıcı akışıdır.

Bu akış, kullanıcıları cihazlarını en son işletim sistemi sürümüne yükseltmeye ikna etmeye yardımcı olmayı amaçlar.

Bir cihazda kullanıcı onayı bekleyen bir işletim sistemi yükseltmesi olduğunda kullanıcılara yeni özellikleri gösteren ve yükseltmeyi yapmaya davet eden bir push bildirimi gönderilir.

Cihaz üreticileri, Android Yükseltme Daveti Etkinleştirme İsteği formunu göndererek Android OS cihazlarında Upgrade Party'yi etkinleştirebilir.

Bize Ulaşın/Topluluk sayfamızı ziyaret edin.

Yükseltme daveti deneyimini özelleştirme

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

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

Akışı özelleştirmek için Yükseltme Daveti Stil Kılavuzu'ndaki yönergeleri inceleyin ve özelleştirme bilgilerinizi form yanıtına ekleyin.

Upgrade Invite Style Guide

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

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

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

Her ekrandaki animasyonlar, özellikleri açıklamaya 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ının tel kafes düzeni

Cihaz animasyonu her zaman şunlardan oluşur:

  • 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.

3.şekil Yükseltme daveti akışının 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 varsa

  1. Sayılar ekrana girer.
  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 tamamlanır. Şekiller hafifçe hareket etmeye devam eder.
4. şekil. Yükseltme daveti için tel çerçeve düzeni Saat içeren giriş ekranı animasyonu.
5. şekil. Saat içeren giriş ekranı için örnek animasyon

2. seçenek: Ana ekranda saat yok

  1. Cep telefonu ekrana giriyor.
  2. Telefon, boyutu büyürken merkeze doğru hareket eder. Şekiller ekrana girmeye başlar.
  3. Telefon maksimum boyuta ulaşıyor ve şekiller hareket etmeye devam ediyor.
6.şekil Saat içermeyen, yükseltme davetiyle ilgili giriş ekranı animasyonu için tel kafes düzeni.
7.şekil Saat içermeyen giriş ekranı için örnek animasyon

Özellik ekranı

Her özellik ekranında yeni işletim sistemindeki bir özellik vurgulanır.

Düzen
8. şekil. Yükseltme daveti özelliği ekranlarının tel kafes düzeni.

Cihaz animasyonu her zaman şunlardan oluşur:

  • 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.
  • Ekranlarda kolayca okunabilen yazı tipi boyutları 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 animasyonunu 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
9.şekil Yükseltme daveti outro ekranının tel kafes düzeni.

Cihaz animasyonu her zaman şunlardan oluşur:

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

Standart bitiş ekranı animasyon akışını izleyin:

  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.
10. şekil. Yükseltme daveti outro ekranı animasyonunun tel kafes düzeni.
11. şekil. Örnek kapanış ekranı animasyonu.

Yükseltme daveti akışını test etme

  1. Android cihazda Ayarlar > Google > Upgrade Party debug'a 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. Write Fake upgrade (current version)'ı (Sahte yükseltme yaz (mevcut sürüm)) tıklayın. (örneğin, Android 13 işletim sistemini çalıştırıyorsanız Android 13 test akışı tetiklenir)
    2. Bekleyen yükseltmeyi yaz (mevcut sürüm + 1) seçeneğini tıklayın. (örneğin, Android 12 işletim sistemini kullanıyorsanız bu işlem Android 13 test akışını tetikler)
    3. İşletim sistemi yükseltmesini bildir'i tıklayın.
  3. Alınan bildirimi veya Yükseltme Davetini Aç'ı tıklayın.

Yükseltme daveti için tetikleyici 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 otomatik olarak yapılır ve Upgrade Invite entegrasyon adımları gerekmez. Beklemede olan büyük bir işletim sistemi yükseltmesi algılandığında Google Play Hizmetleri'nden cihaza anlık bildirim gönderilir. Bu bildirim, yükseltme daveti akışına yönlendirir.

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ı, yayın mesajı kullanarak uygulamanızdan yükseltme daveti akışını tetiklemenizi sağlar. Yayın, Google Play Hizmetleri'nden cihaza anlık bildirim gönderir ve 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ında aşağıdaki değerlerin kullanıldığından emin olun:

  • minSdkVersion 14 veya daha yüksek olmalıdır.
  • 28 veya daha yüksek bir compileSdkVersion
  • android.permission.RECOVERY için uses-permission

Anonsu gönderme

Anlık bildirimi tetiklemek için Android yayını göndermeyle ilgili OEM uygulaması (veya kodu) talimatlarını aşağıda bulabilirsiniz:

  1. İşlemle birlikte yayın gönderme

    com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE
    
  2. Yayınınıza com.google.android.gms paketini ekleyin.

    com.google.android.gms
    

Diğer şartlar

Yükseltme daveti akışı, kullanıcıların işletim sistemi yükseltmesini doğrudan akıştan yapmalarını da sağlar.

Bunun çalışması için Google'ın, güncellemenin indirilmesini tetikleyen Yükseltme Daveti akışından çağırabileceği özel bir amaç kullanıma sunun.

Örnek Yayın Kullanımı

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

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 işletim sistemi sürümünü gösteren 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. Yükseltme daveti akışını etkinleştirmek için üçüncü taraf harici bir API kullanın. Bu yöntem daha az önerilir.

Ön koşullar

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

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

  • minSdkVersion 14 veya daha yüksek olmalıdır.
  • 28 veya daha yüksek bir compileSdkVersion

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

deposu. 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ı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 UpgradeParty sınıfını kullanın:

    import com.google.android.gms.growth.UpgradeParty;
    UpgradeParty.getClient(activity);
    
  2. Etkinlik parametresi, başlatma etkinliği nesnesi olmalıdır.

API işlevleri

Sonuçta elde edilen UpgradePartyClient, aşağıdaki işlevleri kullanıma sunar.

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 davetiyesi almaya uygun olup olmadığını eşzamansız olarak doğrulayan bir Task döndürür. Sonuçta elde edilen Boole değeri, kullanıcının uygun olup olmadığını gösterir.

invokeUpgradeInvite

Task<Void> invokeUpgradeInvite();

Yükseltme daveti etkinliğini başlatır. Sonuçta elde edilen _Task _nesnesi, etkinliği başlatırken bir hata oluşup oluşmadığını gösterir.

Hata Kodları

Her iki API yöntemi de com.google.android.gms.common.api.ApiException türünde bir istisna ile başarısız olabilir. Bu tür durumlarda, arayanın daha sonra tekrar denemesi beklenir. Beklenen yaygın durum kodları şunlardır:

  • INTERNAL_ERROR: Temel mantığın akışındaki tüm hatalar için
  • ZAMAN AŞIMI: İstek zamanında işlenemediğinde
  • API_NOT_CONNECTED: API kullanılamadığında (ör. UpgradeParty modülü henüz hazır olmadığında)
  • NETWORK_ERROR: İstek, ağ hataları nedeniyle işlenemedi.
  • DEVELOPER_ERROR: Arayan paketin UpgradeParty API'ye erişmesine izin verilmiyor.

SDK Kullanımı Örneği

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