AppGallery Connect Dynamic Ability

Önder
Huawei Developers - Türkiye
4 min readOct 5, 2020

Herkese merhaba, bu yazımda sizlere Dynamic Ability nedir, nasıl kullanılır, bunlardan bahsedeceğim.

Dynamic Ability nedir?

Dynamic Ability, HUAWEI AppGallery’nin, Android App Bundle teknolojisi tabanlı, dinamik yüklemeyi sağlayan bir servisidir. Dynamic Ability kullanılarak oluşturulmuş uygulamalar, kullanıcı isteğine bağlı olarak HUAWEI AppGallery’den uygulamanın diğer özelliklerini ve dil paketlerini indirebilirler. Dynamic Ability’nin avantajı, ağ trafiğinin ve cihaz depolama alanının gereksiz tüketiminin önüne geçmektir. Günümüzde Dynamic Ability SDK, cep telefonlarını, akıllı ekranları ve ekrana sahip olan hoparlörleri desteklemektedir.

Nasıl Çalışır?

Bir uygulamanın yeni oluşturulan AAB dosyası HUAWEI AppGallery’e yüklendikten sonra platform uygulamayı üç özelliğe göre birden çok APK’ye böler: dil, ekran yoğunluğu ve ABI mimarisi. Bir kullanıcı bir uygulamayı indirdiğinde HUAWEI AppGallery, cihaz dili, ekran yoğunluğu ve ABI mimarisine bağlı olarak kullanıcı cihazı için uygun bir APK sunar. Bu durum, uygulamanın özelliklerini etkilemeden kullanıcı cihazındaki depolama alanı tüketimini ve ağ trafiğini azaltır. Bir kullanıcı bir uygulamayı ilk kez indirdiğinde, uygulamanın yalnızca temel modülü indirilir ve dinamik özellikler yalnızca gerektiğinde indirilir.

Geliştirme Süreci

Öncelikle bir Android Studio projesi oluşturuyoruz ve build.gradle dosyalarını yapılandırıyoruz.

Daha sonra projemize dinamik özellik modulü eklememiz gerekiyor.

Modül ismini ve paket ismini yazıyoruz.

Modül indirme seçeneklerini yapılandırıyoruz.

Ve projeyi senkronize ediyoruz.

Ana projemiz ve dinamik özellik modülümüz aşağıdaki gibi bir yapı oluşturmaktadır.

Ana projemizde ve dinamik özellik modülümüzde attachBaseContext metodunu override ediyoruz ve Dynamic Ability SDK’yi başlatmak için FeatureCompat.install fonksiyonunu çağırıyoruz.

Ana projemizin onCreate metodunda FeatureInstallManager’dan instance yaratmak için FeatureInstallManagerFactory.create metodunu çağırıyoruz.

Dinamik yükleme için istek oluşturuyoruz ve özellikleri yüklemek için installFeature metodunu çağırıyoruz. İstenilen durumda bir veya daha fazla dinamik özellik ekleyebiliriz.

Özellik yükleme isteğinin durumunu izlemek için bir listener kullanırız. Üç adet listener mevcuttur: OnFeatureCompleteListener, OnFeatureSuccessListener ve OnFeatureFailureListener.

– OnFeatureCompleteListener: İstek durumu başarılı veya başarısız sonuçlansa da callback tetiklenir. İsteğin başarılı olup olmadığını belirlemek gerekir. İstek başarısız olursa, FeatureTask.getResult çağırıldığında exception atılır.

OnFeatureSuccessListener: Callback, sadece HUAWEI AppGallery tarafından isteğe başarılı bir şekilde cevap geldiğinde tetiklenir. Callback sonucu, sessionId denilen dinamik yükleme görevine ait eşsiz bir id içerir. sessionId ile herhangi bir zamanda dinamik yüklemenin ilerleyiş durumunu elde edebilir ve bir görevi iptal edebiliriz.

OnFeatureFailureListener: Callback, sadece HUAWEI AppGallery isteğe cevap vermede başarısız olursa tetiklenir.

Kullanıcı, Dynamic Ability’i kullanabilmek için HUAWEI AppGallery’nin sözleşmesini kabul etmek zorundadır. Herhangi bir dinamik özellik indirilmeden önce uygulama, sözleşmenin kabul edilip edilmediğini doğrulamak zorundadır.

  • Eğer kullanıcı sözleşmeyi kabul ederse, yükleme işlemi devam eder.
  • Eğer kullanıcı sözleşmeyi reddederse, yükleme işlemi sonlandırılır.

Herhangi bir dinamik özellik indirilip cihaza yüklenmeden önce uygulama, cihazın mobil veri kullanıp kullanmadığını kontrol eder. Eğer mobil veri kullanılıyorsa, uygulama kullanıcıya veri tüketimini hatırlatarak, kullanıcıdan indirme izni ister.

  • Eğer kullanıcı indirmeye izin verirse uygulama, dinamik özelliği indirmeye başlar.
  • Eğer kullanıcı indirmeye izin vermezse uygulama, indirme işlemini sonlandırır.

Dinamik özelliğin indirilme ilerleyişini gözlemleyebiliriz.

Oluşturulan listener gerekli zamanda kayıt edilmeli ve gerekli zamanda listener’ın kaydı silinmeli.

Yükleme durumunu, başarılı olup olmadığını kontrol edebiliriz.

Eğer bir dinamik özelliğin hemen yüklenmesi gerekmiyorsa, ertelemeli yüklemeyi seçebiliriz. Bu durumda dinamik özellik, uygulamamız çalışırken arkaplanda yüklenecektir. Erteleme isteği geldiği zaman, HUAWEI AppGallery yüklemeyi, cihazın çalışma durumuna göre erteleyecektir.

Kullanıcı artık kullanmadığı dinamik özellikleri silebilir. Silme işlemi hemen gerçekleşmez, uygulama çalışırken arkaplanda işlem gerçekleşir.

Her dinamik yükleme, sessionId denilen eşsiz bir ID’ye sahiptir. Devam eden bir işlemi herhangi bir zamanda bu ID’ye göre iptal edebiliriz.

Herhangi bir görevin yürütülme işlemini elde edebiliriz.

İstersek sistemdeki bütün görevlerin yürütülme işlemlerini elde edebiliriz.

Bir uygulamanın kullanımında kullanıcı dili değişkenlik gösterebilir. Bu durumda bir veya daha fazla dil paketini uygulamamıza dinamik olarak yükleyebiliriz.

Dil paketi ülke kodunu içermek zorunda değildir. Örneğin, Fransızca paketini yüklemek için fr yazılması yeterlidir. Dynamic Ability SDK, birden fazla ülke ve bölgenin Fransızca kaynaklarını yükleyecektir. Belirsizliğin giderilmesi için Locale.forLanguageTag(lang) metodunun kullanılması tavsiye edilir.

Dynamic Ability ve özellikleri sayesinde, kullanıcılar en başta uygulamanın sadece en temel halini indirecektir. Daha sonra ihtiyaç durumunda gereken özellikleri dinamik olarak yükleyebileceklerdir.

Dynamic Ability SDK’nin bütün özelliklerini elimden geldiğince anlatmaya çalıştım, umarım faydalı olmuştur.

Referanslar

--

--