Uygulamanızdaki parametreleri tanımlamak ve buluttaki değerlerini güncellemek için Firebase Remote Config'i kullanabilirsiniz, böylece bir uygulama güncellemesi dağıtmadan uygulamanızın görünümünü ve davranışını değiştirebilirsiniz.
Remote Config kitaplığı, uygulama içi varsayılan parametre değerlerini depolamak, Remote Config arka ucundan güncellenmiş parametre değerlerini almak ve getirilen değerlerin uygulamanız tarafından ne zaman kullanılabilir hale getirileceğini kontrol etmek için kullanılır. Daha fazla bilgi edinmek için bkz. Remote Config yükleme stratejileri .
Bu kılavuz, başlangıç adımlarında size yol gösterir ve bazı örnek kodlar sağlar; bunların tümü , firebase/quickstart-unity GitHub deposundan kopyalanabilir veya indirilebilir.
1. Adım: Uygulamanıza Remote Config ekleyin
Remote Config'i kullanmadan önce yapmanız gerekenler:
Unity projenizi kaydedin ve Firebase'i kullanacak şekilde yapılandırın.
Unity projeniz zaten Firebase kullanıyorsa Firebase için zaten kayıtlı ve yapılandırılmış demektir.
Bir Unity projeniz yoksa örnek bir uygulama indirebilirsiniz.
Firebase Unity SDK'sını (özellikle
FirebaseRemoteConfig.unitypackage
) Unity projenize ekleyin.
Unity projenize Firebase eklemenin hem Firebase konsolunda hem de açık Unity projenizde görevler içerdiğini unutmayın (örneğin, Firebase yapılandırma dosyalarını konsoldan indirir ve ardından bunları Unity projenize taşırsınız).
2. Adım: Uygulama içi varsayılan parametre değerlerini ayarlayın
Remote Config nesnesinde uygulama içi varsayılan parametre değerlerini ayarlayabilirsiniz, böylece uygulamanız Remote Config arka ucuna bağlanmadan önce istendiği gibi davranır ve böylece arka uçta hiçbiri ayarlanmazsa varsayılan değerler kullanılabilir.
Bunu yapmak için bir dize sözlüğü oluşturun ve onu eklemek istediğiniz varsayılanları temsil eden anahtar/değer çiftleriyle doldurun. Remote Config arka uç parametre değerlerini zaten yapılandırdıysanız, bu anahtar/değer çiftlerini içeren bir dosyayı indirebilir ve bunu dize sözlüğünüzü oluşturmak için kullanabilirsiniz. Daha fazla bilgi için bkz. Remote Config şablonu varsayılanlarını indirme .
(Dize olmayan özellikler, SetDefaultsAsync()
çağrıldığında özelliğin türüne dönüştürülecektir).
System.Collections.Generic.Dictionary<string, object> defaults = new System.Collections.Generic.Dictionary<string, object>(); // These are the values that are used if we haven't fetched data from the // server // yet, or if we ask for values that the server doesn't have: defaults.Add("config_test_string", "default local string"); defaults.Add("config_test_int", 1); defaults.Add("config_test_float", 1.0); defaults.Add("config_test_bool", false); Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults) .ContinueWithOnMainThread(task => {
3. Adım: Uygulamanızda kullanılacak parametre değerlerini alın
Artık Remote Config nesnesinden parametre değerleri alabilirsiniz. Remote Config arka ucunda değerler ayarlayıp getirdiyseniz ve ardından etkinleştirdiyseniz, bu değerler uygulamanız tarafından kullanılabilir. Aksi takdirde, SetDefaultsAsync()
kullanılarak yapılandırılan uygulama içi parametre değerlerini alırsınız.
Bu değerleri almak için parametre anahtarını bağımsız değişken olarak sağlayarak GetValue()
öğesini kullanın. Bu, değeri çeşitli temel türlere dönüştürmek için özelliklere sahip olan bir ConfigValue
döndürür.
4. Adım: Uygulamanızı Firebase konsoluna bağlayın
Firebase konsolunda , uygulamanızı Firebase projenize ekleyin.
Adım 5: Parametre değerlerini ayarlayın
- Firebase konsolunda projenizi açın.
- Remote Config panosunu görüntülemek için menüden Remote Config'i seçin.
- Uygulamanızda tanımladığınız parametrelerle aynı ada sahip parametreleri tanımlayın. Her parametre için bir varsayılan değer (eninde sonunda uygulama içi varsayılan değeri geçersiz kılacaktır) ve koşullu değerler ayarlayabilirsiniz. Daha fazla bilgi edinmek için bkz. Remote Config parametreleri ve koşulları .
6. Adım: Değerleri getirin ve etkinleştirin (gerektiğinde)
Remote Config arka ucundan parametre değerlerini almak için [ FetchAsync()
][fetch] yöntemini çağırın. Arka uçta ayarladığınız tüm değerler alınır ve Remote Config nesnesinde önbelleğe alınır.
// Start a fetch request. // FetchAsync only fetches new data if the current data is older than the provided // timespan. Otherwise it assumes the data is "recent enough", and does nothing. // By default the timespan is 12 hours, and for production apps, this is a good // number. For this example though, it's set to a timespan of zero, so that // changes in the console will always show up immediately. public Task FetchDataAsync() { DebugLog("Fetching data..."); System.Threading.Tasks.Task fetchTask = Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync( TimeSpan.Zero); return fetchTask.ContinueWithOnMainThread(FetchComplete); }
Yukarıdaki kodda FetchComplete
, imzası ContinueWithOnMainThread()
aşırı yüklemelerinden birinin parametreleriyle eşleşen bir yöntemdir.
Aşağıdaki örnek kodda, FetchComplete
yöntemi önceki göreve ( fetchTask
) geçirilir ve bu, FetchComplete
bitip bitmediğini belirlemesine olanak tanır. Kod, bitişin de başarılı olup olmadığını belirlemek için Info.LastFetchStatus
kullanır. Böyleyse, Remote Config parametre değerleri daha sonra activateAsync()
kullanılarak etkinleştirilir.
private void FetchComplete(Task fetchTask) {
if (!fetchTask.IsCompleted) {
Debug.LogError("Retrieval hasn't finished.");
return;
}
var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
var info = remoteConfig.Info;
if(info.LastFetchStatus != LastFetchStatus.Success) {
Debug.LogError($"{nameof(FetchComplete)} was unsuccessful\n{nameof(info.LastFetchStatus)}: {info.LastFetchStatus}");
return;
}
// Fetch successful. Parameter values must be activated to use.
remoteConfig.ActivateAsync()
.ContinueWithOnMainThread(
task => {
Debug.Log($"Remote data loaded and ready for use. Last fetch time {info.FetchTime}.");
});
}
[ FetchAsync()
][fetch] yoluyla getirilen değerler, getirme tamamlandığında yerel olarak önbelleğe alınır, ancak ActivateAsync()
çağrılana kadar kullanılamaz. Bu, yeni değerlerin hesaplamanın ortasında veya sorunlara veya garip davranışlara neden olabilecek diğer zamanlarda uygulanmamasını sağlar.
7. Adım: Güncellemeleri gerçek zamanlı olarak dinleyin
Parametre değerlerini getirdikten sonra, Remote Config arka ucundan güncellemeleri dinlemek için gerçek zamanlı Remote Config'i kullanabilirsiniz. Gerçek Zamanlı Remote Config, güncellemeler mevcut olduğunda bağlı cihazlara sinyal gönderir ve siz yeni bir Remote Config sürümü yayınladıktan sonra değişiklikleri otomatik olarak getirir.
Gerçek zamanlı güncellemeler, Android ve Apple platformları için Firebase Unity SDK v11.0.0+ ve üstü tarafından desteklenir.
- Güncellemeleri dinlemeye başlamak ve yeni veya güncellenmiş parametre değerlerini otomatik olarak getirmek için uygulamanızda bir
OnConfigUpdateListener
ekleyin. Ardından, güncelleme olaylarını işlemek için birConfigUpdateListenerEventHandler
oluşturun. Aşağıdaki örnek, güncellemeleri dinler ve yeni getirilen değerleri güncelleştirilmiş bir karşılama mesajı görüntülemek için kullanır.
// Invoke the listener. void Start() { Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener += ConfigUpdateListenerEventHandler; } // Handle real-time Remote Config events. void ConfigUpdateListenerEventHandler( object sender, Firebase.RemoteConfig.ConfigUpdateEventArgs args) { if (args.Error != Firebase.RemoteConfig.RemoteConfigError.None) { Debug.Log(String.Format("Error occurred while listening: {0}", args.Error)); return; } Debug.Log("Updated keys: " + string.Join(", ", args.UpdatedKeys)); // Activate all fetched values and then display a welcome message. remoteConfig.ActivateAsync().ContinueWithOnMainThread( task => { DisplayWelcomeMessage(); }); } // Stop the listener. void OnDestroy() { Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener -= ConfigUpdateListenerEventHandler; }
Remote Config'inizin yeni bir sürümünü bir sonraki yayınlayışınızda, uygulamanızı çalıştıran ve değişiklikleri dinleyen cihazlar tamamlama işleyicisini arayacak.
Sonraki adımlar
If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: