Uygulamanızda parametreler tanımlamak ve bulutta değerlerini güncellemek için Firebase Remote Config'ü kullanabilirsiniz. Böylece, 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, güncellenen parametre değerlerini Remote Config arka ucundan almak ve alınan değerlerin uygulamanıza ne zaman sunulacağını kontrol etmek için kullanılır. Daha fazla bilgi edinmek isterseniz Remote Config yükleme stratejilerine göz atın.
Bu kılavuzda, başlangıç adımlarını adım adım uygulayabilir ve bazı örnek kodları inceleyebilirsiniz. Bu örnek kodların tümü firebase/quickstart-unity GitHub deposundan klonlanabilir veya indirilebilir.
1. Adım: Uygulamanıza Remote Config ekleyin
Remote Config özelliğini kullanabilmek için:
Unity projenizi kaydedin ve Firebase'i kullanacak şekilde yapılandırın.
Unity projeniz zaten Firebase kullanıyorsa Firebase için kayıtlı ve yapılandırılmış demektir.
Unity projeniz yoksa örnek uygulama indirebilirsiniz.
Firebase Unity SDK'sını (özellikle
FirebaseRemoteConfig.unitypackage
) Unity projenize ekleyin.
Firebase'i Unity projenize 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 indirip 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ğerleri ayarlayabilirsiniz. Böylece uygulamanız, Remote Config arka ucuna bağlanmadan önce amaçlandığı gibi davranır ve arka uçta hiçbiri ayarlanmazsa varsayılan değerler kullanılabilir.
Bunun için bir dize sözlüğü oluşturun ve eklemek istediğiniz varsayılanları temsil eden anahtar/değer çiftleriyle doldurun. Remote Config arka uç parametre değerlerini daha önce yapılandırdıysanız bu anahtar/değer çiftlerini içeren bir dosya indirebilir ve dize sözlüğünüzü oluşturmak için kullanabilirsiniz. Daha fazla bilgi için Remote Config şablon varsayılanlarını indirme bölümünü inceleyin.
(Dize olmayan özellikler, SetDefaultsAsync()
çağrıldığında mülkün türüne dönüştürülür).
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 kullanacağınız parametre değerlerini alın
Artık Remote Config nesnesinden parametre değerleri alabilirsiniz. Remote Config arka ucunda değerler ayarladıysanız, bunları getirdiyseniz ve 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()
işlevini kullanın. Bu işlem, değeri çeşitli temel türlere dönüştüren özelliklere sahip bir ConfigValue
döndürür.
4. adım: Parametre değerlerini ayarlayın
- Firebase konsolunda projenizi açın.
- Remote Config kontrol panelini görüntülemek için menüden Remote Config'i seçin.
- Uygulamanızda tanımladığınız parametrelerle aynı ada sahip parametreler tanımlayın. Her parametre için bir varsayılan değer (sonunda uygulama içi varsayılan değeri geçersiz kılar) ve koşullu değerler ayarlayabilirsiniz. Daha fazla bilgi için Remote Config parametreleri ve koşulları başlıklı makaleyi inceleyin.
5. adım: Değerleri getirin ve etkinleştirin (gerekirse)
Remote Config arka ucundan parametre değerlerini getirmek için FetchAsync()
yöntemini çağırın. Arka uçta ayarladığınız tüm değerler getirilir 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()
öğesinin aşırı yüklemelerinden birinin parametreleriyle eşleşen bir yöntemdir.
Aşağıdaki örnek kodda, FetchComplete
yöntemine önceki görev (fetchTask
) iletilir. Bu, FetchComplete
'ün görevin tamamlanıp tamamlanmadığını belirlemesine olanak tanır.
Kod, bitiş işleminin ayrıca başarılı olup olmadığını belirlemek için Info.LastFetchStatus
değerini kullanır. Bu durumda, Remote Config parametre değerleri 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()
kullanılarak getirilen değerler, getirme tamamlandığında yerel olarak önbelleğe alınır. Ancak ActivateAsync()
çağrılana kadar kullanılamaz. Bu sayede, yeni değerlerin hesaplama sırasında veya soruna ya da garip davranışa neden olabilecek başka zamanlarda uygulanmamasını sağlayabilirsiniz.
6. adım: Güncellemeleri gerçek zamanlı olarak dinleyin
Parametre değerlerini aldıktan sonra, Remote Config arka ucundan güncelleme dinlemek için gerçek zamanlı Remote Config kullanabilirsiniz. Remote Config, güncellemeler hazır olduğunda bağlı cihazlara gerçek zamanlı sinyal gönderir ve yeni bir Remote Config sürümü yayınlamanızın ardından değişiklikleri otomatik olarak getirir.
Gerçek zamanlı güncellemeler, Android ve Apple platformları için Firebase Unity SDK'sı v11.0.0+ ve sonraki sürümler tarafından desteklenir.
- Uygulamanızda güncellemeleri dinlemeye başlamak ve yeni veya güncellenmiş parametre değerlerini otomatik olarak almak için bir
OnConfigUpdateListener
ekleyin. Ardından, güncelleme etkinliklerini işlemek için birConfigUpdateListenerEventHandler
oluşturun. Aşağıdaki örnekte güncellemeler dinlenir ve güncellenmiş bir karşılama mesajı görüntülemek için yeni getirilen değerler kullanılı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 uygulamanızın yeni bir sürümünü yayınladığınızda, uygulamanızı çalıştıran ve değişiklikleri dinleyen cihazlar tamamlama işleyicisini çağırır.
Sonraki adımlar
Henüz yapmadıysanız Remote Config kullanım alanlarını inceleyin ve aşağıdakiler gibi temel kavramlar ve gelişmiş strateji dokümanlarından bazılarına göz atın: