Remote Configuration — Android Uygulamayı Uzaktan Yapılandırma

Ubeyde Akgül
Huawei Developers - Türkiye
8 min readAug 19, 2020

Remote Configuration, güncellemeye gerek duymadan uygulamanızın görünümünü ve davranışını değiştirmenizi sağlar.

Remote Configuration kullanırken, uygulamamızın görünümünü ve davranışını kontrol eden uygulama içi varsayılan parametre ve değerler oluşturuyoruz. Daha sonra, değerleri güncellemek için Console üzerinde bu parametreleri ve yeni değerlerini yönetebiliyoruz.

Console üzerinden gerekli parametreleri ve değerleri oluşturup bu parametreler doğrultusunda herhangi bir güncelleme yayınlamadan değişiklikleri uygulamanıza yansıtabilirsiniz..

Uygulamadaki resimler, metinler, renkler vb. değişkenleri bu servis ile kolay bir şekilde değiştirebilirsiniz.Örneğin özel günlerde özel tema/icon değişikliği, güne ve bölgeye özel mesajlar, dile bölgeye gire içerik değişiklikleri vb.

Fakat kullanıcı yetkilendirmesine dayalı gizli verilerin bu parametrelere eklenmemesinde fayda var.

HUAWEI AppGallery Connect, parametreleri çevrimiçi olarak yönetmeniz için Remote Configuration hizmetini sağlar. Bu hizmet ile, kullanıcıların uygulamayı güncellemesine gerek kalmadan uygulamanın çevrimiçi davranışı ve görünümü değiştirilebilir..

Uzaktan Yapılandırma, bulut tabanlı hizmetler, konsol ve istemci SDK’sı sağlar. İstemci SDK’sını entegre ederek uygulamanız, uygulamanın davranışını ve görünümünü değiştirmek için konsolda sunulan parametre değerlerini periyodik olarak alabilir.

Fonksiyonlar :

1. Hizmet sağlama.

2. Parametre yönetimi: Parametrelerin eklenmesini, silinmesini ve değiştirilmesini, mevcut parametrelerin yeniler olarak kopyalanmasını ve değiştirilmesini ve koşullu değerlerin ayarlanmasını içerir.

3. Durum yönetimi: Koşulları eklemeyi, silmeyi ve değiştirmeyi ve mevcut koşulları yeniler olarak kopyalayıp değiştirmeyi içerir. Şu anda ayarlayabileceğiniz koşulları şu şekilde: sürüm, dil, ülke / bölge, hedef kitle, kullanıcı özelliği, kullanıcı yüzdesi ve saat. Gelecekte daha fazla koşul mevcut olacak.

4. Sürüm yönetimi: Parametreler ve koşullar için 300 adede kadar sürümün yönetimini ve geri alınmasını destekler.

5. İzin yönetimi: Hesap sahibinin, yöneticinin, uygulama yöneticisinin, Ar-Ge personelinin ve operasyon personelinin varsayılan olarak Uzaktan Yapılandırmaya erişmesine izin verir.

Temel Prosedür :

1. AppGalery Connect’te oturum açın, uygulamanız için Uzaktan Yapılandırmayı etkinleştirin ve parametreleri ve koşulları ayarlayın.

2. AppGallery Connect Uzaktan Yapılandırma SDK’sını uygulamanıza entegre edin.

3. Uzaktan Yapılandırmaya bağlanmadan önce düzgün çalışabilmesi için uygulamanızda varsayılan parametre değerlerini ayarlayın.

4. Uzaktan Yapılandırmadan parametre değeri güncellemelerini periyodik olarak almak için SDK tarafından sağlanan getirme metodunu çağırın. Uygulamadan bir istek alırken, Uzaktan Yapılandırma, bildirilen bir parametrenin bulut üzerinde bir değeri olup olmadığını kontrol eder ve varsa değeri döndürür.

5. Parametre değeri güncellemelerini aldıktan sonra, uygulama, elde edilen değerlerle uygulamadaki değerleri geçersiz kılmak için hemen veya hizmet gereksinimlerine göre belirli bir zamanda apply () metodunu çağırır.

6. Uzaktan Yapılandırmadan dinamik olarak parametre değerleri elde etmek için, SDK tarafından sağlanan çeşitli alma metodlarını çağırın.

Use Cases

  • Ülkeye / Bölgeye Göre Farklı Dil Görüntüleme
  • Farklı Kullanıcılara Farklı İçeriğin Gösterilmesi

Uzaktan Yapılandırma, farklı kullanıcı gruplarına gösterilen içeriği kişiselleştirmek için HUAWEI Analytics ile çalışabilir. Örneğin, ofis çalışanları ve öğrenciler için bir uygulamada farklı ürünler ve kullanıcı arayüzü düzenleri gösterilebilir

  • Uygulama Temasını Zamana Göre Uyarlama

Uygulama temasını özel bir süre değiştirmek için Uzaktan Yapılandırma’da saat koşulunu, farklı uygulama renklerini ve çeşitli resim malzemelerini ayarlayabilirsiniz. Örneğin, mezuniyet sezonu boyunca, daha fazla kullanıcı çekmek için uygulamanızı mezuniyet temasına uyarlayabilirsiniz.

  • Yeni İşlevlerin Yayınlanması

Yeni işlevleri tüm kullanıcılara aynı anda yayınlamak riskli olabilir. Uzaktan Yapılandırma, hedef kullanıcı kapsamını yavaşça artırmanız için kullanıcı yüzdesine göre yeni işlev sürümüne olanak tanır ve yeni işlevlere halihazırda maruz kalan kullanıcılardan gelen geri bildirimlere dayanarak uygulamanızı iyileştirmenize etkili bir şekilde yardımcı olur

SDK Hazırlığı ve Projeye Entegre Edilmesi adresinden geliştirme öncesi gerekli adımların ayrıntılarına ulaşabilirsiniz.

Başlıca metodlar şunlardır :

  • containKey(String key) : ConfigValues ​​nesnesinin istenen bir anahtarı içerip içermediğini kontrol eder.
  • getValueAsBoolean(String key) : key için boolean tipte değerini döndürür.
  • getValueAsDouble(String key) : key için double tipte değerini döndürür.
  • getValueAsLong(String key) : key için long tipte değerini döndürür.
  • getValueAsString(String key) : key için string tipte değerini döndürür.
  • getValueAsByteArray(String key) : key için byteArray tipte değerini döndürür.

Varsayılan Uygulama İçi Parametre Değerlerini Ayarlama

Uzaktan Yapılandırma nesnesinin bir örneğini edinin.

AGConnectConfig config = AGConnectConfig.getInstance();

Uzaktan Yapılandırma nesnesinde uygulama içi varsayılan parametre değerlerini ayarlayabilirsiniz, böylece uygulamanız Uzaktan Yapılandırmaya bağlanmadan önce düzgün bir şekilde çalışabilir ve parametre değerleri konsolda ayarlanmadıysa uygulama içi varsayılan değerler kullanılır. Şu anda, uygulama içi varsayılan parametre değerlerini aşağıdaki yollardan biriyle tanımlayabilirsiniz.

  • XML kaynak dosyası kullanma yolu ile

Android Studio projenizin res / xml klasörüne bir varsayılan değer XML dosyası (örneğin, remote_config.xml) ekleyin. Dosyada, anahtar / değer çiftleri <value key = “testkey”> testvalue </value> biçimindedir.

<remoteconfig><value key="test1">test1</value><value key="test2">true</value><value key="test3">123</value><value key="test4">123.456</value><value key="test5">test-test</value></remoteconfig>

Hemen etkili olacak varsayılan değerleri geçirmek için aşağıdaki API’yi çağırabilirsiniz.

config.applyDefault(R.xml.remote_config)
  • Map objesi kullanma yolu ile

Map nesnesi yalnızca string, boolean ve sayısal değerleri destekler. Diğer tür değerler göz ardı edilecektir. <rnek Örnek bir yapılandırma kodu :

Map<String, Object> map = new HashMap<>();map.put("test1", "test1");map.put("test2", "true");map.put("test3", 123);map.put("test4", 123.456);map.put("test5", "test-test");config.applyDefault(map);

Uzaktan Yapılandırmada Parametre Değerlerini Ayarlama

AppGallery Connect’te tanımlanan koşullara veya hedef kullanıcılara göre uygulama içi parametre değerlerini geçersiz kılmak için parametre değerleri oluşturabilirsiniz.

Uygulamanızda kullanılan aynı adları kullanarak parametreleri tanımlayın. Her parametre için varsayılan değeri (karşılık gelen uygulama içi varsayılan değeri geçersiz kılacak) ve koşullu değerleri ayarlayabilirsiniz.

Parametre Yönetimi

1. AppGallery Connect’te oturum açın ve Projelerim’i seçin.

2. Proje listesinden projenizi bulun ve proje kartında parametreleri ayarlamanız gereken uygulamaya tıklayın. Growing > Remote Configuration ‘a gidin.

3. Parameter management sekmesine tıklayarak bu sekme sayfasında, parametreleri ekleyebilir, silebilir ve değiştirebilirsiniz. Mevcut parametreleri yeniler olarak kopyalayabilir ve değiştirebilir ve koşullu parametre değerlerini ayarlayabilirsiniz.

4. Add parameter‘a tıklayarak parameter ekleyebilirsiniz.

Bir parametre için birden çok koşullu değer ayarlayabilirsiniz. Yani, parametre değeri duruma bağlı olarak değişecektir.

Mevcut olana benzer bir parametre eklemek için, mevcut parametrenin yanındaki Duplicate‘e tıklayıp ve küçük değişiklikler yapabilirsiniz.

Koşul/Durum Yönetimi

1. AppGallery Connect’te oturum açın ve Projelerim’i seçin.

2. Proje listesinden projenizi bulun ve proje kartında parametreleri ayarlamanız gereken uygulamaya tıklayın. Growing > Remote Configuration ‘a gidin.

3. Condition Management sekmesine tıklayarak bu sekme sayfasında koşullar ekleyebilir, silebilir ve değiştirebilirsiniz. Mevcut koşulları yeni koşullar olarak kopyalayabilir ve değiştirebilirsiniz.

4. Add condition’a tıklayarak koşul ekleyebilirsiniz

Örneğin :

Filter Condition : App Version

Operator : Include / Exclude / Equal / Include regular expression

Value : Bir veya daha fazla uygulama version numarası

Açıklama : Bir Android uygulaması için sürüm numarası, SürümAdı değerinden elde edilir.

Seçilen operatör Include, Exclude, or Equal ise, virgülle (,) ayrılmış bir değerler listesi kullanabilirsiniz.

Seçilen operatör Include regular expression ise, normal ifade oluşturmak için RE2 formatını kullanabilirsiniz. Normal bir ifade kullanarak yalnızca hedef sürüm dizesinin tüm metnini değil, aynı zamanda ^ ve $ bağlantılarını kullanarak hedef dizenin başlangıcını, sonunu veya tam metnini de eşleştirebilirsiniz.

Equal operatörü, hedef değer listesindeki herhangi bir değer gerçek değerse True döndürüldüğünü belirtir. Örneğin, hedef değer 1.0, 2.0, 3.0 ise, gerçek değer 2.0 olduğunda True döndürülür ve gerçek değer 4.0 olduğunda False döndürülür.

Include operatörü, hedef değer listesindeki herhangi bir değer gerçek değerin bir alt dizesi ise True döndürüldüğünü belirtir. Örneğin, hedef değer 1.0, 2.0, 3.0 ise, gerçek değer 2.0.1 olduğunda True döndürülür ve gerçek değer 4.0.1 olduğunda False döndürülür.

Exclude operatörü, hedef değer listesindeki hiçbir değer gerçek değerin bir alt dizesi değilse True döndürüldüğünü belirtir. Örneğin, hedef değer 1.0, 2.0, 3.0 ise, gerçek değer 2.0.1 olduğunda False döndürülür ve gerçek değer 4.0.1 olduğunda True döndürülür.

Include regular expression operatörü, hedef değerin (RE2 biçiminde normal ifade) gerçek değerle eşleştiğinde True döndürüldüğünü belirtir.

Diğer Durum Yönetimleri için Integrating Remote Configuration adresinde Condition Management alt başlığını inceleyebilirsiniz.

Operatörlerinin anlamları şu şekilde:

Her bir elips seyirciyi gösteriyor ve birden çok elips, hedef değer için birden çok kitlenin seçildiğini gösterir şekilde. Dikdörtgen, bir uygulamanın tüm kullanıcılarını gösteriyor. Gri kısımlar, operatörleri karşılayan kullanıcıları gösterir.

Mevcut koşullara benzer bir koşul eklemek için, mevcut koşulun yanındaki Duplicate’e tıklayıp küçük değişiklikler yapabilirsiniz.

Birden fazla koşul varsa, koşul sırasını ayarlamak için koşul kartlarını tıklayıp sürükleyebilirsiniz.

Version Yönetimi

Sürüm Yönetimi Uzaktan Yapılandırma, parametreler ve koşullar için 300 adede kadar sürümün yönetimini ve geri alınmasını destekler.

Uzaktan Yapılandırmadan Parametre Değerlerini Alma

Asynchronous modda Remote Configuration’dan parametre değerleri almak için fetch API çağırabilirsiniz. API başarıyla çağrıldıktan sonra, ConfigValues ​​türünün verileri Uzaktan Yapılandırma’dan döndürülecektir.

ConfigValues ​​sınıfını kullanırsanız, bulut üzerinde yalnızca parametre değerlerini elde edebilirsiniz. Parametre değeri güncellemelerini aldıktan sonra, elde edilen değerlerle uygulamadaki değerleri güncellemek/geçersiz kılmak için hemen veya hizmet gereksinimlerine göre belirli bir zamanda apply () metodu çağrılmalı.

config.fetch().addOnSuccessListener(new OnSuccessListener<ConfigValues>() {
@Override
public void onSuccess(ConfigValues configValues) {
config.apply(configValues);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
}
});

Fetch () metodunu çağırmak için varsayılan aralık 12 saattir. Getirme aralığını özelleştirmek için fetch(long intervalSeconds) metodunu çağırabilirsiniz. Fetch () metodunun belirli bir aralık içinde çağrılması, buluttan veri almak yerine yerel olarak önbelleğe alınmış verileri elde eder.

fetch(long intervalSeconds) metodu tarafından belirtilen getirme aralığı saniye cinsindendir. Devreye almayı kolaylaştırmak için hata ayıklama sırasında bu aralığı küçük bir değere ayarlamanız ve akış kontrolünün etkisini önlemek için üretim aşamasında büyük bir değere ayarlamanız önerilir.

Veri Türüne Göre Parametre Değerlerinin Elde Edilmesi

Varsayılan parametre değerleri ayarlandıktan veya parametre değerleri Remote Configuration’dan getirildikten sonra, uygulamanızda kullanılacak parametre değerlerini elde etmek için veri türüne göre SDK tarafından sağlanan API’lerden herhangi birini çağırabilirsiniz:

  • getValueAsBoolean(String key)
  • getValueAsDouble(String key)
  • getValueAsLong(String key)
  • getValueAsString(String key)
  • getValueAsByteArray(String key)

Remote Configuration’da ayarlanan parametre değerleri, character strings olarak saklanır. Elde edildiğinde, değerler istenen veri türüne dönüştürülür. Dönüştürme başarısız olursa, istenen veri türünün varsayılan değeri döndürülür

  • DEFAULT.BOOLEAN_VALUE = false
  • DEFAULT.DOUBLE_VALUE = 0.0
  • DEFAULT.LONG_VALUE = 0L
  • DEFAULT.STRING_VALUE = “”
  • DEFAULT.BYTE_ARRAY_VALUE = new byte[0]

Bir değerin kaynağını elde etmek için getSource API’sini çağırabilirsiniz. Veri kaynakları aşağıdaki gibidir:

  • SOURCE.STATIC: default value of the data type.
  • SOURCE.DEFAULT: in-app default value.
  • SOURCE.REMOTE: value obtained from Remote Configuration.

Note:

The boolean value true is returned for the following character strings: 1, true, t, yes, y, on.

The boolean value false is returned for the following character strings: 0, false, f, no, n, off.

Uzaktan Yapılandırmada bir tetikleyici ayarlayarak bir promosyon planlayabilirsiniz. Daha da önemlisi, yerel bilgileri Uzaktan Yapılandırma’da ayarladığınız sürece tanıtım içeriği ülkeye veya bölgeye göre değişebilir. Örneğin, Çin ve Avustralya’daki kullanıcılar için farklı diller görüntülebilir.

Tüm Parametre Değerlerinin Elde Edilmesi

Tüm uygulama içi varsayılan değerleri ve bulut üzerindeki parametre değerlerini tek seferde elde edebilirsiniz. Aynı parametre anahtarı için, bulut üzerindeki değer öncelikli olarak kullanılır.

Map<String,Object> map = config.getMergedAll();

Parametre Değerlerini Sıfırlama

clearAll() metodunu çağırarak uygulama içi parametre değerleri ve bulut üzerindeki parametre değerleri dahil tüm parametre değerlerini temizleyebilirsiniz

config.clearAll();

Daha fazla ayrıntı için ilgili adresler :

Integrating Remote Configuration

Remote Configuration

--

--