Huawei Remote Configuration Entegrasyonu

Herkese merhabalar,

Bu yazımda sizlere öncelikle Huawei Remote Configuration servisi hakkında bilgi vereceğim daha sonra Use case’ler üzerinde servisi kullanabileceğimiz senaryoları göreceğiz ve son olarak da servisi uygulamamıza nasıl entegre ederiz bundan bahsedeceğim.


Remote configuration


Remote configuration hizmeti temelde bizlere, uygulama içerisinde herhangi bir güncelleme yapmadan uygulamanızın davranışında ve görünümünde değişiklikler yapmayı sağlar. Bu süreç, AppGallery Connect Console üzerinde çeşitli parametreler belirlenerek yönetilir ve daha sonra kod içerisinde konfigürasyon yapılır.

Peki Remote Configuration’ın temelde bize sağladığı fonksiyonlar nelerdir?

  • Parametre yönetimi: Parametreleri eklenebilir, silinebilir, değiştirilebilir ya da mevcut parametreler kopyalanarak yenisi oluşturulabilir.

  • Koşul yönetimi: Koşullar da aynı şekilde eklenebilir, silinebilir, değiştirilebilir yada mevcut parametreler kopyalanarak yenisi oluşturulabilir.

  • Tanımlayabileceğiniz koşullar: Versiyon, dil, ülke / bölge, hedef kitle, kullanıcı özelliği, kullanıcı yüzdesi ve saat.

  • Versiyon yönetimi: Parametreler ve koşullar için 300 adede kadar versiyonun yönetimini ve geri alınmasını destekler.

Aslında temelde hedeflediğim bu fonksiyonlar ile geliştirmekte olduğunuz uygulamlarda Remote Configuration kullanmanız için kafanızda fikirler uyandırmak, o yüzden şimdi çeşitli use caseler üzerinde servisi kullanabileceğimiz senaryolara bakalım.


Senaryolar

1. Use case: Device Language - Remote Configuration


Örneğin; Remote configuration ile oldukça kolay bir şekilde uygulamanızın dilini cihazın diline göre ayarlayabilirsiniz. Bunun için yapmanız gereken (yazının ilerleyen kısmında bu işlemleri detaylı olarak anlattım) AppGallery Conncet Remote configuration konsolu üzerinden öncelikle bir koşul tanımı yapmak, daha sonra da bir parameter yaratarak tanımladığınız koşulu kullanmak.


Burda bahsettiğimiz örnek device dili ile ilgili olduğu için bir language koşulu tanımladım ve default value’su TR olan ve language koşulunu kullanan bir parameter yarattım. Böylelikle uygulamamın dili Türkçe ve İngilizce için duyarlı hale geldi. Siz aynı şekilde birden fazla dil desteği için de aynı adımları yaparak destek verebilirsiniz.



2. Use case: Country/Region - Remote Configuration

Örneğin bir haber uygulaması üzerinde çalışıyor olalım. Eğer Globalde bir haber uygulaması geliştiriyorsak, haberler için kullanabileceğimiz başlıklar, eğitim, siyaset, ekonomi gibi başlılar olacaktır. Ancak Remote configuration servisi sayesinde Country/Region koşulunu kullanarak uygulamamıza bir de Local haberler başlığı ekleyebiliriz. Ve telefonun ülke ya da bölgesine göre de ilgili Local haberleri bu başlık altında otomatik olarak aşağıdaki gibi gösterebiliriz.

Bu örnek için yapıcağınız tanımlamalar Kanada ve Türkiye için birer koşul yaratmak ve bir parametrede bunları kullanmak.


Burada koşul tanımı yaparken ben örneğime uygun olarak birer ülke seçtim ama siz her koşul için birden fazla ülke ya da bölge seçimi yapabilirsiniz. Örneğin burada Kanada yerine Kanada, Amerika, İngiltere ve Türkiye yerine de tüm Afrika ülkelerini seçebilirsiniz.

3. Use case: Time - Remote Configuration


Time koşulu kullanarak yapabileceklerimize bakalım. Time tanımlaması iki zaman arasındaki aralığı seçmek gibi değil de, belirlenen bir tarih ve saat seçiminin öncesi ve sonrası için yapılabiliyor. Burada yapabileceklerimiz; örneğin bir restorant uygulaması üzerinde çalışıyor olalım. 23 nisan, 19 mayıs gibi özel günlerde uygulama background'unu ve ana ekrandaki menü içeriğini ilgili güne göre değiştirerek uygulamamızı daha çekici hale getirebiliriz. Geliştirdiğim örnek uygulamanın UI değişimlerini ve AppGallery connect üzerinde hangi condition ve parametreleri oluşturduğumu aşağıda görebilirisiniz.




Remote Config Androiod Uygulama Entegrasyonu


Şimdi ise bahsettiğim kullanım tiplerinden ilkini seçerek, size baştan sona nasıl geliştireceğimizi anlatacağım. Öncelikle aşağıdaki linkten temel HMS entegrasyonu işlemini gerçekleştirerek uygulamamızı Remote Config için uygun hale getiriyoruz.


https://www.mobiler.dev/post/huawei-developer-hesabi-acma-ve-hms-core-u-projeye-entegre-etme


Konfigürasyon işlemini daha önce yaptıysanız aşağıdaki linkten Konsola geçiniz.

https://developer.huawei.com/consumer/en/



Giriş yaptıktan hemen sonra aşağıdaki gibi App services seçiyoruz.



App Services ekranından AppGallery Connect seçiyoruz ve konsola geçiyoruz.



Servisi uygulayacağımız projeyi daha önce konsolda tanımlamış olmamız gerekli. Bu ekrandan My project seçiyoruz.



Remote configuration uygulayacağımız projemizi seçiyoruz.



Daha sonra aşağıdaki gibi Growing menüsünden Remote configuration seçiyoruz.



İlk kullanımda Remote configuration servisini aktif ediyoruz ve buil gradle'ımıza ilgili dependency'leri ekliyoruz.



implementation 'com.huawei.agconnect:agconnect-remoteconfig:1.4.1.300'

Bu adımlardan sonra konfigürasyon işlemleri tamamlanmış oluyor. Şimdi ise uygulamamız içerisinde Remote config kullanmak için bir parametre tanımlaması yapıyoruz. Ben telefonun diline göre uygulama dilinin belirlenmesi için ekstra bir kod yazarak uygulamayı update etmek vs istemiyorum. Cihaz diline bağlı olarak otomatik şekilde uygulama dilinin değişmesini istiyorum. Bu yüzden Remote config kullanarak bunu otomatik hale getireceğim. Aşağıdaki gibi language adında ve default dili türkçe olmasını istediğim için default değerini TR verdiğim bir parametre tanımladım.



Daha sonra bu parametre için bir koşul belirliyoruz. Bu koşul aslında yukarıda bahsettiğim Use case'ler gibi caseler için Language, Audience, App version, OS version, User attribute, Time, Country/Region seçeneklerden biri ya da birden fazlası oluyor. Bu örnek için ben aşağıdaki gibi Language seçtim. Ve anlaşılır olması için sadece English dil seçimi yaptım ama uygulamanızın ikiden fazla dile duyarlı olabilmesi için burada birden fazla dil seçimi de yapılabilir.



Daha sonra tekrar parametre ekranına geçiyoruz ve tanımladığımız parametre için Modify seçiyoruz. Add condition value seçtikten sonra name kısmında tanımladığımız koşulu seçiyoruz ve koşul için bir value tanımlıyoruz.



Save ve Release seçtikten sonra parametremize bu koşulu eklemiş oluyoruz.



Daha sonra uygulama geliştirdiğimiz platforma geçiyoruz. Ben android studio kullandığım için bunun üzerinden anlatacağım. Console üzerinde yukarıda yaptığımız parametre ile kodumuzun iletişim kurabilmesi için parametre adı ve default value değerlerini içinde tutacak bir Map Object yada XML tanımlamalıyız. Ben aşağıdaki gibi bir Xml tanımladım.


Burada önemli olan Consoldaki Default parameter name ile Xml'deki key değeri, Consoldaki default value değerleri ile Xml'de taglar arasındaki değerin aynı olması önemli!









Kodlama kısmı oldukça kolay, öncelikle aşağıdaki gibi bir AppGalery Connect Config nesnesi oluşturuyoruz. Sonra default parametre için tanımladığımız XML doyasını atıyoruz. Daha sonra addOnSuccessListiner dinleyicisini kullanarak Consol ile bağlantının doğrulandığını test ediyoruz ve altında Config Value değeri olan it value'sunu bu nesneye atıyoruz.


Daha sonra parametreden gelen değeri alması için langugeResponse adında bir değişken oluşturuyoruz ve getValueString içerisine parametre adımızı veriyoruz.


Bundan sonra uygulamamızın dili languageResponse değişkeninin değeri olacaktır. (Ben bunu görmek için Toast mesajı bastırmıştım.)


 override fun onCreate(savedInstanceState: Bundle?)
{
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val agConnectConfig = AGConnectConfig.getInstance()
    agConnectConfig.applyDefault(R.xml.remote_config)

    btn_LanguageRemoteConfig?.setOnClickListener {
        agConnectConfig.fetch(0).addOnSuccessListener {

            agConnectConfig.apply(it)

            val languageResponse = agConnectConfig.getValueAsString("language")

            Toast.makeText(this, languageResponse, Toast.LENGTH_LONG).show()

            if (languageResponse == "TR"){
                txt_AppLanguage.text="Language is Turkish"
            }
            else if(languageResponse == "EN"){
                txt_AppLanguage.text="Language is English"
            }

        }.addOnFailureListener {
            // fail fetching from remote config
            it.printStackTrace()
        }
    } 

Bu kadar :)

Bundan sonra uygulamamızın dili cihaz diline göre otomatik olarak ayarlanacaktır.

Umarım bu yazım sizler için faydalı olmuştur. Bir sonraki yazıda görüşmek üzere.


Github: https://github.com/neslihanmetin/remoteconfig_abtesting


#Huawei #HMS #HuaweiMobileServices #huaweikit #AppGallery #AppGalleryConnect #Android #HMSCore


0 yorum

Komünite

Platform

Mobiler.dev Anasayfa
  • Twitter
  • Instagram
  • development_düzenlendi_düzenlendi
  • Youtube
  • slack-icon-black_edited_edited_edited
  • Gri LinkedIn Simge
imageedit_2_9667998092.png
JetBrains Hakkında Detaylı Bilgi Alın

© 2020 by mobiler.dev

Kurumsal Yazar Hesapları

adesso.png
mobilerdevLogo.jpg
Yazarlık Başvurusu Hakkında Bilgi Alın, Başvuru Yapın.
Topluluk Yazarlarını Tanıyın