يمكنك استخدام Firebase Remote Config لتحديد المعلمات في تطبيقك وتحديث قيمها في السحابة ، مما يسمح لك بتعديل مظهر وسلوك تطبيقك دون توزيع تحديث للتطبيق.
تُستخدم مكتبة Remote Config لتخزين قيم المعلمات الافتراضية داخل التطبيق ، وجلب قيم المعلمات المحدثة من الواجهة الخلفية لـ Remote Config ، والتحكم في وقت إتاحة القيم التي تم جلبها لتطبيقك. لمعرفة المزيد ، راجع استراتيجيات تحميل Remote Config .
يرشدك هذا الدليل خلال الخطوات للبدء ويقدم بعض نماذج التعليمات البرمجية ، وكلها متاحة للنسخ أو التنزيل من مستودع جيثب firebase / quickstart-union .
الخطوة 1: أضف Remote Config إلى تطبيقك
قبل أن تتمكن من استخدام Remote Config ، تحتاج إلى:
سجل مشروع Unity الخاص بك وقم بتكوينه لاستخدام Firebase.
إذا كان مشروع Unity الخاص بك يستخدم Firebase بالفعل ، فهذا يعني أنه تم تسجيله بالفعل وتهيئته لـ Firebase.
إذا لم يكن لديك مشروع Unity ، فيمكنك تنزيل نموذج للتطبيق .
أضف Firebase Unity SDK (على وجه التحديد ،
FirebaseRemoteConfig.unitypackage
) إلى مشروع Unity الخاص بك.
لاحظ أن إضافة Firebase إلى مشروع Unity الخاص بك يتضمن مهامًا في كل من وحدة تحكم Firebase وفي مشروع Unity المفتوح (على سبيل المثال ، يمكنك تنزيل ملفات تهيئة Firebase من وحدة التحكم ، ثم نقلها إلى مشروع الوحدة الخاص بك).
الخطوة 2: تعيين قيم المعلمات الافتراضية داخل التطبيق
يمكنك تعيين قيم المعلمات الافتراضية داخل التطبيق في كائن Remote Config ، بحيث يتصرف تطبيقك على النحو المنشود قبل أن يتصل بالواجهة الخلفية لـ Remote Config ، وبذلك تكون القيم الافتراضية متاحة إذا لم يتم تعيين أي منها في الخلفية.
للقيام بذلك ، قم بإنشاء قاموس سلسلة ، وقم بتعبئته بأزواج المفاتيح / القيمة التي تمثل الإعدادات الافتراضية التي تريد إضافتها. إذا كنت قد قمت بالفعل بتكوين قيم معلمات الواجهة الخلفية لـ Remote Config ، فيمكنك تنزيل ملف يحتوي على أزواج المفاتيح / القيمة هذه واستخدامها لإنشاء قاموس السلسلة الخاص بك. لمزيد من المعلومات ، راجع تنزيل الإعدادات الافتراضية لقالب Remote Config .
(سيتم تحويل الخصائص بدون سلسلة إلى نوع الخاصية عند استدعاء SetDefaultsAsync()
).
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: احصل على قيم المعلمات لاستخدامها في تطبيقك
يمكنك الآن الحصول على قيم المعلمات من كائن Remote Config. إذا قمت بتعيين القيم في الواجهة الخلفية لـ Remote Config ، وجلبتها ، ثم قمت بتنشيطها ، فستتوفر هذه القيم لتطبيقك. خلاف ذلك ، يمكنك الحصول على قيم المعلمات داخل التطبيق التي تم تكوينها باستخدام SetDefaultsAsync()
.
للحصول على هذه القيم ، استخدم GetValue()
، مع توفير مفتاح المعلمة كوسيطة. يؤدي هذا إلى إرجاع ConfigValue
، والذي يحتوي على خصائص لتحويل القيمة إلى أنواع أساسية مختلفة.
الخطوة 4: قم بتوصيل تطبيقك بوحدة تحكم Firebase
في وحدة تحكم Firebase ، أضف تطبيقك إلى مشروع Firebase.
الخطوة 5: تعيين قيم المعلمات
- في وحدة تحكم Firebase ، افتح مشروعك.
- حدد Remote Config من القائمة لعرض لوحة معلومات Remote Config.
- حدد المعلمات بنفس الأسماء مثل المعلمات التي حددتها في تطبيقك. لكل معلمة ، يمكنك تعيين قيمة افتراضية (والتي ستتجاوز في النهاية القيمة الافتراضية داخل التطبيق) والقيم الشرطية. لمعرفة المزيد ، راجع معلمات وشروط التكوين عن بُعد .
الخطوة 6: جلب القيم وتنشيطها (حسب الحاجة)
لجلب قيم المعلمات من الواجهة الخلفية لـ Remote Config ، قم باستدعاء الأسلوب FetchAsync()
. يتم جلب أي قيم تقوم بتعيينها على الواجهة الخلفية وتخزينها مؤقتًا في كائن Remote Config.
// 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); }
في الكود أعلاه ، FetchComplete
هي طريقة يتطابق توقيعها مع معلمات أحد الأحمال الزائدة في ContinueWithOnMainThread()
.
في نموذج التعليمات البرمجية أدناه ، تم تمرير طريقة FetchComplete
المهمة السابقة ( fetchTask
) ، والتي تسمح لـ FetchComplete
بتحديد ما إذا كانت قد انتهت أم لا. يستخدم الرمز Info.LastFetchStatus
لتحديد ما إذا كان الإنهاء ناجحًا أيضًا . إذا كان الأمر كذلك ، يتم تنشيط قيم معلمات Remote Config باستخدام activateAsync()
.
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()
مؤقتًا محليًا عند اكتمال الجلب ، ولكن لا يتم إتاحتها حتى يتم استدعاء ActivateAsync()
. يمكّنك هذا من التأكد من عدم تطبيق القيم الجديدة في منتصف الحساب ، أو في أوقات أخرى قد تسبب مشاكل أو سلوكًا غريبًا.
الخطوة 7: (اختياري) قم بتمكين وضع المطور
لتمكين وضع المطور ، والذي يمكن استخدامه لتعطيل الاختناق أثناء التطوير ، يمكنك استخدام خاصية FirebaseRemoteConfig.Setting
، وتعيين ConfigSettings
جديد مع تعيين IsDeveloperMode
على "صحيح".
الخطوات التالية
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: