1. مقدمة
لنفترض أنك بحاجة إلى تعديل قيم بعض المعلمات في تطبيقك بعد نشر التطبيق على "متجر Play". في العادة، يجب إعادة نشر إصدار جديد من تطبيقك، وعلى المستخدمين تحديث التطبيق على هواتفهم أيضًا.
بشكل عام، سيعمل تحديث التطبيق إذا كنت تريد إجراء تغيير طويل الأمد في تطبيقك. ومع ذلك، ماذا لو كنت ستعدِّل قيمة بعض المعلمات في تطبيقك بشكل متكرر؟ أو ماذا لو كنت تريد إجراء بعض التجارب للعثور على الإعداد الأمثل للتطبيق؟
وفي هذه الحالات، لن يعمل تحديث التطبيق بشكل جيد. لأنّ نشر التحديث بالكامل للمستخدمين يتطلب بعض الوقت. إضافةً إلى ذلك، ينطوي إجراء التجارب على العديد من إصدارات التطبيق على صعوبة كبيرة.
أيضًا، كيف يمكنك تحديد ما إذا كانت رحلة مستخدم التطبيق تعمل على النحو المنشود؟ يمكنك الاعتماد على تعليقات المستخدمين في Play Console. ومع ذلك، قد لا يكون دقيقًا بما يكفي لاتخاذ قرار واضح.
المعلومات التي ستطّلع عليها
- كيفية إنشاء مسار إحالة ناجحة في "إحصاءات Google لبرنامج Firebase"
- كيفية استخدام ميزة "الإعداد عن بُعد في Firebase"
- كيفية إجراء اختبار A/B من Firebase
المتطلبات
- Unity 2018.4.4f1 أو إصدار أحدث
- Xcode 10 أو أعلى (لإنشاء الهدف لنظام iOS)
- حساب Google
- جهاز اختباري يعمل بالإصدار 5.0 من نظام التشغيل Android أو الإصدارات الأحدث مع كابل USB لتوصيل جهازك، أو محاكي Android يعمل بنظام AVD(جهاز Android افتراضي) يتضمّن صورة نظام تتوافق مع "متجر Play" أو واجهات Google APIs
- جهاز iOS أو جهاز محاكاة يعمل بنظام التشغيل iOS 8.0 أو إصدار أحدث
ما هو تقييمك لمستوى خبرتك في استخدام AdMob؟
ما هو تقييمك لمستوى خبرتك في استخدام Firebase؟
2. إعداد بيئة التطوير
تنزيل الرمز
انقر على الزر التالي لتنزيل جميع الرموز الخاصة بهذا الدرس التطبيقي حول الترميز:
فك ضغط ملف ZIP الذي تم تنزيله. سيؤدي هذا الإجراء إلى فك ضغط مجلد جذر باسم admob-firebase-codelabs-unity-master
.
...أو استنساخ مستودع جيت هب من سطر الأوامر.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity
يحتوي المستودع على أربعة مجلدات على النحو التالي:
- 101-base: بدء الرمز البرمجي الذي ستنشئه في هذا الدرس التطبيقي حول الترميز
- 101-complete_and_102-base — تم إكمال الرمز لهذا الدرس التطبيقي حول الترميز، المبتدئين للدرس التطبيقي حول الترميز 102.
- 102-complete: تم إكمال الرمز للدرس التطبيقي 102.
إعداد الملفات المطلوبة
يستخدم اختبار الرسم الرائع العديد من الرموز مفتوحة المصدر والمطلوبة لتجميع المشروع وتنفيذه.
افتح الوحدة الطرفية، وانتقِل إلى الدليل الجذري للمستودع. بعد ذلك، شغِّل ./gradlew :prepareThirdPartyFiles
(gradlew.bat :prepareThirdPartyFiles
على نظام التشغيل Windows) من الوحدة الطرفية لنسخ الملفات المطلوبة إلى المشروع.
استيراد تطبيق إجراء التفعيل
شغِّل Unity، واختَر "فتح" في شاشة الترحيب. بعد ذلك، اختَر الدليل 101-complete_and_102-base من الرمز الذي نزّلته.
من المفترض أن يكون المشروع مفتوحًا الآن في Unity.
إضافة مكوّن Unity الإضافي لإعلانات Google على الأجهزة الجوّالة
لعرض إعلانات AdMob على تطبيق Unity، يجب إدراج مكوّن Unity الإضافي لإعلانات Google على الأجهزة الجوّالة في المشروع.
- تنزيل حزمة الإصدار 3.18.1 من مكوّن Unity الإضافي لإعلانات Google على الأجهزة الجوّالة. (يُرجى ملاحظة أنّ هذا الدرس التطبيقي حول الترميز قد لا يتوافق مع الإصدار الآخر من المكوّن الإضافي)
- في مشروع Unity لاختبار الرسومات الرائعة. في المشروع، انتقِل إلى مواد العرض >. استيراد الحزمة > الحزمة المخصّصة
- استورِد GoogleMobileAds.unitypackage إلى المشروع الذي نزّلته.
يجب ضبط رقم تعريف تطبيق AdMob أيضًا. في محرِّر Unity، اختَر مواد العرض >. إعلانات Google للأجهزة الجوّالة > الإعدادات من القائمة.
فعِّل AdMob بالنقر على مربّع الاختيار مفعّل ضمن قسم Google AdMob. بعد ذلك، أدخِل رقم تعريف تطبيق AdMob على النحو التالي:
- نظام تشغيل Android:
ca-app-pub-3940256099942544~3048611032
- نظام تشغيل iOS:
ca-app-pub-3940256099942544~2753522596
إضافة ملفات إعداد Firebase إلى مشروع Unity
- من شاشة النظرة العامة لمشروع اختبار رسومات رائعة، انقر على رمز الإعدادات.
- ضمن علامة التبويب الإعدادات العامة، اختَر كل تطبيق من تطبيقات Android وiOS لتنزيل ملف google-service.json (لنظام التشغيل Android) وملف GoogleService-Info.plist (لنظام التشغيل iOS).
- انقِل ملفَّي الإعداد إلى مجلد Assets في مشروع Unity.
إضافة حزمة تطوير البرامج (SDK) لخدمة "إحصاءات Firebase"
- يمكنك تنزيل الإصدار 5.5.0 من حزمة تطوير البرامج (SDK) لمنصّة Firebase Unity وفكّ ضغطه في مكان مناسب. (يمكنك تخطّي هذه الخطوة إذا سبق لك تنزيل حزمة تطوير البرامج (SDK).
- افتح مشروع Unity اختبار الرسومات الرائعة وانتقِل إلى مواد العرض >. استيراد الحزمة > الحزمة المخصّصة
- من حزمة تطوير البرامج (SDK) غير المضغوطة، استورِد حزمة تطوير البرامج لخدمة "إحصاءات Firebase" (
dotnet4/FirebaseAnalytics.unitypackage
). - في نافذة "استيراد حزمة Unity"، انقر على استيراد.
3- فتح مشروع Firebase من وحدة التحكّم
قبل الانتقال إلى الخطوة التالية، افتح المشروع من وحدة تحكُّم Firebase الذي أنشأته في خطوة "إعداد مشروع Firebase" في الدرس التطبيقي حول الترميز 101 بين AdMob وFirebase.
4. إنشاء مسار إحالة ناجحة لأحداث التطبيقات
قد تكون هناك بعض أحداث التطبيق التي أضفتها لتتبُّع نشاط المستخدم داخل التطبيق. ومن خلال قراءة تقرير كل حدث في التطبيق، يمكنك الحصول على التفاصيل المرتبطة بالحدث، مثل الأعداد الإجمالية ومتوسط الأعداد لكل مستخدم والخصائص الديمغرافية، وما إلى ذلك.
مع ذلك، ماذا لو كنت تريد الاطّلاع على معدّل إكمال سلسلة من الأحداث، بدلاً من التركيز على حدث معيّن؟ في "إحصاءات Google لبرنامج Firebase"، يمكنك استخدام مسار الإحالة الناجحة لعرض وتحسين معدّل اكتمال سلسلة من أحداث التطبيق.
إنشاء مسار إحالة ناجحة
لإنشاء مسار إحالة ناجحة:
- انتقِل إلى وحدة تحكُّم Firebase واختَر مشروع Awesome Drawing Quiz الذي أنشأته سابقًا.
- انقر على المخططات القمعية.
- انقر على مسار إحالة ناجحة جديد.
- أدخل اسمًا ووصفًا لمسار الإحالة الناجحة.
- اختر أول حدثين تريد استخدامهما كخطوتين في مسار الإحالة الناجحة.
- انقر على إضافة حدث آخر لكل خطوة إضافية، واختر حدثًا.
- انقر على إنشاء.
باتّباع الخطوات أعلاه، يمكنك إنشاء مسارات الإحالات الناجحة التالية:
#1 اسم مسار الإحالة الناجحة: معدّل نجاح المستوى الأحداث: level_start
وlevel_success
#2 اسم مسار الإحالة الناجحة: معدّل إكمال الإعلانات التي تضم مكافأة الأحداث: ad_reward_prompt
وad_reward_impression
وad_reward
3 اسم مسار الإحالة الناجحة: معدّل إكمال اللعبة الأحداث: game_start
، game_complete
عرض تحليل مسار الإحالة الناجحة
بعد إنشاء بعض مسارات الإحالات الناجحة، يمكنك الوصول إليها في قائمة المخططات القمعية في وحدة تحكُّم Firebase. بالنقر على اسم مسار الإحالة الناجحة في القائمة، يمكنك الاطّلاع على التحليل التفصيلي لكل مسار إحالة ناجحة.
على سبيل المثال، انقر على معدّل النجاح في المستوى. وسيعرِض تفاصيل مسار الإحالة الناجحة على النحو التالي:
من لقطة الشاشة أعلاه، يمكنك الاطّلاع على النسبة المئوية للمستخدمين الذين أزالوا أحد المستويات (أدّى الحدث level_success
) بعد بدء مستوى (ما أدى إلى تشغيل الحدث level_start
). يظهر هنا أنّ% 46.2 من المستخدمين قد أزالوا المستوى.
بعد النقر على عدد الأحداث، ستعرِض المقاييس استنادًا إلى عدد الأحداث على النحو التالي:
استنادًا إلى المقاييس في لقطة الشاشة أعلاه، كانت هناك 116 محاولة (تم تشغيل حدث level_start) و57 عملية محو (تم تشغيل حدث level_success) خلال هذه الفترة.
بما أنّ معدّل الإكمال استنادًا إلى الأحداث(49.1%) أعلى بقليل من المعدّل استنادًا إلى المستخدم(46.2%)، يمكنك القول إن هناك عددًا قليلاً من الأشخاص يحقّقون أداءً أفضل من غيرهم.
5- دمج ميزة "الإعداد عن بُعد" في التطبيق
نظرًا لأنه يمكنك الحصول على بعض الإحصاءات حول تطبيقك استنادًا إلى أحداث التطبيق ومسار الإحالة الناجحة، قد تحتاج إلى تحسين تطبيقك. وتتضمّن عادةً ضبطًا دقيقًا لقيمة المَعلمة في التطبيق. ولتعديل قيمة هذه المَعلمات، عليك تحديث التطبيق كي يتم تطبيق التغييرات على المستخدمين.
وباستخدام ميزة "الإعداد عن بُعد" في Firebase، يمكنك تعديل هذه القيم بدون تحديث التطبيق، ما يعني أنّه بإمكانك تغيير سلوك التطبيق بدون الحاجة إلى إزعاج المستخدمين من خلال إجبارهم على تنزيل التحديث.
في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية تعديل مبلغ المكافأة (عدد الخطابات التي سيتم الإفصاح عنها بعد مشاهدة إعلان فيديو يضم مكافأة) بدون تحديث التطبيق وذلك باستخدام ميزة "الإعداد عن بُعد".
إضافة حزمة تطوير البرامج (SDK) لميزة "الإعداد عن بُعد في Firebase"
- يمكنك تنزيل الإصدار 5.5.0 من حزمة تطوير البرامج (SDK) لمنصّة Firebase Unity وفكّ ضغطه في مكان مناسب.
- افتح مشروع Unity اختبار الرسومات الرائعة وانتقِل إلى مواد العرض >. استيراد الحزمة > الحزمة المخصّصة
- من حزمة تطوير البرامج (SDK) غير المضغوطة، استورِد حزمة تطوير البرامج (SDK) الخاصة بميزة "الإعداد عن بُعد" (
dotnet4/FirebaseRemoteConfig.unitypackage
). - في نافذة "استيراد حزمة Unity"، انقر على استيراد.
استيراد Firebase.RemoteConfig
عدِّل Main.cs للسماح لك باستخدام النوع من Firebase.RemoteConfig بدون الحاجة إلى استخدام الاسم المؤهل بالكامل.
Scenes/Main.cs
...
using AwesomeDrawingQuiz.Game;
// TODO: Import Firebase.RemoteConfig (102)
using Firebase.RemoteConfig;
namespace AwesomeDrawingQuiz.Scene {
...
}
الإعداد & استرجاع قيم "الإعداد عن بُعد"
عدِّل طريقة InitAndFetchRemoteConfig()
في Main.cs
لإعداد النسخة الافتراضية من ميزة "الإعداد عن بُعد" على النحو التالي. تجدر الإشارة إلى أنّ GameSettings.KEY_REWARD_AMOUNT
تحمل اسم المَعلمة في "الإعداد عن بُعد". (سوف تفصح عن هذا الحقل قريبًا في هذا الدرس التطبيقي حول الترميز)
Scenes/Main.cs
private Task InitAndFetchRemoteConfig() {
// TODO: Initialize and Fetch values from the Remote Config (102)
Dictionary<string, object> defaults = new Dictionary<string, object>();
defaults.Add(GameSettings.KEY_REWARD_AMOUNT, 1);
FirebaseRemoteConfig.SetDefaults(defaults);
if (Debug.isDebugBuild) {
ConfigSettings config = new ConfigSettings();
config.IsDeveloperMode = true;
FirebaseRemoteConfig.Settings = config;
return FirebaseRemoteConfig.FetchAsync(System.TimeSpan.Zero);
} else {
return FirebaseRemoteConfig.FetchAsync();
}
}
سيظهر لك أنّه تم ضبط المثيل FirebaseRemoteConfig
لجلب أحدث القيم من الخادم في وضع تصحيح الأخطاء للمساعدة في عملية التطوير. (IsDeveloperMode = true
وFetchAsync(System.TimeSpan.Zero)
)
تفعيل قيم "الإعداد عن بُعد" التي تم استرجاعها
عند استرجاع قيم "الإعداد عن بُعد" بنجاح، عليك تفعيل هذه القيم لإتاحتها في التطبيق. عدِّل طريقة ActivateRemoteConfigValues()
على النحو التالي.
Scenes/Main.cs
private void ActivateRemoteConfigValues() {
// TODO: Activate fetched Remote Config values (102)
FirebaseRemoteConfig.ActivateFetched();
}
تعديل طريقة Start()
لجعل التطبيق يجلب تفعِّل قيمة "الإعداد عن بُعد" عند تشغيل التطبيق، وعليك تعديل طريقة Start()
في ملف Main.cs
على النحو التالي.
Scenes/Main.cs
void Start () {
...
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
...
}).ContinueWith(task => {
// TODO: Call InitAndFetchRemoteConfig() (102)
InitAndFetchRemoteConfig();
}).ContinueWith(task => {
// TODO: Call ActivateRemoteConfigValues() (102)
ActivateRemoteConfigValues();
// Enable 'Start a game' button
UnityMainThreadDispatcher.Instance()
.Enqueue(() => buttonStartGame.interactable = true);
});
#else
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
// TODO: Call InitAndFetchRemoteConfig() (102)
InitAndFetchRemoteConfig().ContinueWith(task => {
// TODO: Call ActivateRemoteConfigValues() (102)
ActivateRemoteConfigValues();
});
#endif
}
جلب مبلغ المكافأة من ميزة "الإعداد عن بُعد"
عدِّل الفئة GameSettings
لاسترجاع مبلغ المكافأة من ميزة "الإعداد عن بُعد".
Game/GameSettings.cs
// TODO: Import Firebase.RemoteConfig (102)
using Firebase.RemoteConfig;
namespace AwesomeDrawingQuiz.Game {
public class GameSettings {
...
// TODO: Apply reward amount from the Remote Config (102)
public const string KEY_REWARD_AMOUNT = "reward_amount";
public static GameSettings Instance {
get {
return instance;
}
}
...
public int RewardAmount {
get {
// TODO: Apply reward amount from the Remote Config (102)
return (int) FirebaseRemoteConfig.GetValue(KEY_REWARD_AMOUNT).LongValue;
}
private set { }
}
}
}
إنشاء مَعلمة "الإعداد عن بُعد" من وحدة التحكّم
بعد ذلك، ستنشئ معلمة جديدة في ميزة "الإعداد عن بُعد" لمقدار المكافأة حتى تتمكن من تعديل قيمتها بسرعة.
لإنشاء مَعلمة جديدة، انتقِل إلى وحدة تحكُّم Firebase، ثم اختَر المشروع Awesome Drawing Quiz الذي أنشأته سابقًا. انقر على الإعداد عن بُعد -> أضِف المَعلمة الأولى.
أدخِل اسمًا للمَعلمة reward_amount
واضبط قيمتها التلقائية على 1
. بعد ذلك، انقر على الزر إضافة مَعلمة.
انقر على زر نشر التغييرات لتطبيق التغيير على المستخدمين.
6- تغيير سلوك التطبيق باستخدام ميزة "الإعداد عن بُعد"
يمكن الآن ضبط مقدار المكافأة في اختبار الرسم الرائع على وحدة تحكُّم Firebase بدون الحاجة إلى تحديث رمز التطبيق.
في هذا القسم، ستغير مبلغ المكافأة من 1 إلى 2 لجعل التطبيق يكشف عن شخصيتَين أخريَين كتلميح بعد مشاهدة إعلان يضم مكافأة.
تعديل القيمة التلقائية للمَعلمة meet_amount
انتقِل إلى وحدة تحكُّم Firebase، ثم اختَر مشروع اختبار الرسومات الرائع الذي أنشأته سابقًا. انقر على الإعداد عن بُعد، ثم انقر على reward_amount
من القائمة. بعد ذلك، غيِّر القيمة التلقائية إلى 2 ثم انقر على الزر تعديل.
انقر على زر نشر التغييرات لنشر التغيير للمستخدمين.
التحقّق من التغيير في سلوك التطبيق
لتأكيد التغيير في سلوك التطبيق، شغِّل المشروع مرة أخرى. بعد الانتهاء من مشاهدة إعلان يضم مكافأة، ستلاحظ أنّ التطبيق يعرض الآن حرفَين كمكافأة، وفقًا للإعدادات التي تم ضبطها في وحدة تحكّم "الإعداد عن بُعد".
قبل مشاهدة إعلان يضم مكافأة | الكشف عن حرفَين إضافيَين كمكافأة |
7. إنشاء التجربة لتحسين مبلغ المكافأة
يمكنك الآن تغيير قيمة المكافأة بدون الحاجة إلى نشر تحديث للتطبيق. ومع ذلك، كيف يمكنك تحديد مقدار التغيير الجيد للتطبيق؟
باستخدام اختبار A/B من Firebase، يمكنك تنفيذ التجارب لتحسين تجربة المستخدم بشكل عام في التطبيق بدون الحاجة إلى تحديث التطبيق أو إنشاء أداة منفصلة لتشغيل كل تجربة وتتبُّعها.
تصميم التجربة
قبل إنشاء تجربة جديدة، يجب عليك تحديد هدف أو هدف واضح للتجربة. احرص على الاطّلاع على قائمة التحقّق التالية قبل إنشاء تجربة جديدة.
- ما: ما الذي تريد تحسينه؟ (على سبيل المثال، مستوى صعوبة اللعبة، وتوقيت/مستوى رؤية الإعلان، وما إلى ذلك)
- السبب: ما هدف نشاطك التجاري من تنفيذ التجربة؟ (على سبيل المثال، زيادة أرباح الإعلانات إلى أقصى حد أو معدّل الحفاظ على المستخدمين وما إلى ذلك)
- من: من هم الأشخاص الخاضعون للتجربة؟ (مثال: جميع المستخدمين وجمهور المستخدم المحدّد وما إلى ذلك)
في هذا الدرس التطبيقي حول الترميز، ستُنشئ تجربة لتحسين قيمة مبلغ المكافأة من أجل زيادة التفاعل اليومي للمستخدمين من خلال اختبار الرسم الرائع.
إنشاء التجربة
افتح مشروع "اختبار الرسم الرائع" من وحدة تحكُّم Firebase. اختَر القائمة اختبار A/B، ثم انقر على الزر إنشاء تجربة.
اختَر الإعداد عن بُعد لإنشاء تجربة في ميزة "الإعداد عن بُعد".
أدخِل اسمًا للتجربة كقيمة المكافأة كما هو موضّح في لقطة الشاشة التالية.
اضبط خيارات الاستهداف. في هذا الدرس التطبيقي حول الترميز، تستهدف% 100 من مستخدمي اختبار الرسومات الرائعة.
بما أنّ الهدف الرئيسي من التجربة هو العثور على قيمة مثالية تزيد من تفاعل المستخدمين اليومي إلى أقصى حدّ، اختر تفاعل المستخدمين اليومي كمقياس أساسي لتتبُّعه.
أخيرًا، يجب ضبط عنصر التحكّم في الإعداد ومجموعة خيارات المنتج لتتمكّن من معرفة المجموعة التي تحقّق أداءً أفضل. اختَر reward_amount
من مجموعة التحكّم، واترك قيمته بدون تغيير. بالنسبة إلى مجموعة الصيغ، يجب تسميتها باسم "مكافأة أقل" ثم تغيير قيمة reward_amount
إلى 1.
باستخدام هذه الإعدادات، سيحصل الأشخاص في مجموعة "مكافأة أقل" على حرف واحد كمكافأة، بينما سيتلقّى المستخدمون في مجموعة التحكّم حرفَين كمكافأة. ونتيجة لذلك، سترى كيف يؤثر مقدار المكافأة على المستخدمين.
بعد النقر على الزر مراجعة، ستظهر لك نظرة عامة على التجربة على النحو التالي.
تنفيذ التجربة
انقر على زر بدء التجربة لتنفيذ التجربة. تجدر الإشارة إلى أنّه لا يمكنك تغيير إعدادات التجربة بعد بدئها.
8. إدارة التجربة
الاطّلاع على مستوى تقدّم التجربة
يمكنك الاطّلاع على مستوى تقدّم التجربة من قائمة اختبار A/B في وحدة تحكُّم Firebase على النحو الذي يظهر على شكل لقطة الشاشة التالية. تجدر الإشارة إلى أنّه يمكنك أيضًا الاطّلاع على عدد المستخدمين الذين يشاركون في التجربة في آخر 30 دقيقة في البطاقة.
بعد النقر على التجربة من القائمة، يمكنك الاطّلاع على تفاصيلها. إلى أن تتمكّن التجربة من إعلان الرائد (أي الصيغة الأفضل أداءً)، ستظهر لك الرسالة "من السابق لأوانه الإعلان عن الرائد".
بعد تنفيذ التجربة لفترة من الوقت، ستبدأ في عرض البيانات التي تم جمعها أثناء التجربة حتى الآن ضمن القسم نظرة عامة على التحسين. يمكنك مقارنة أداء كل صيغة لمعرفة الخيار الأفضل أداءً. تعرِض لقطة الشاشة التالية مثالاً على قسم "نظرة عامة على التحسين".
من الجدول أسفل قسم نظرة عامة على التحسين، يمكنك مراجعة تفاصيل مقاييس أهداف التجربة، بالإضافة إلى المقاييس الإضافية التي يتم تتبّعها في التجربة. تعرِض لقطة الشاشة التالية مثالاً على قسم تفاصيل المقاييس.
طرح الرائد لجميع المستخدمين
وبعد استمرار التجربة لفترة طويلة والتي تتضمّن تجربة رائدة أو صيغة فائزة، يمكنك طرح التجربة على جميع المستخدمين. بعد أن يعثر اختبار A/B على قائد واضح، سيشجّعك ذلك على طرح الصيغة الرائدة لجميع المستخدمين.
ومع ذلك، حتى إذا لم تحدّد التجربة اسم قائد واضح، لا يزال بإمكانك اختيار طرح صيغة لجميع المستخدمين.
على شاشة تفاصيل التجربة، انقر على قائمة السياق ( )، ثم انقر على طرح السعر المتغير.
اختَر إحدى الصيغ المراد طرحها لجميع المستخدمين، ثم انقر على الزر مراجعة في الإعداد عن بُعد لمراجعة التغييرات قبل إجراء تغيير في ميزة "الإعداد عن بُعد".
بعد التأكّد من عدم اشتمال المسودة على أي مشكلة، انقر على زر نشر التغييرات لنشر التغييرات لجميع المستخدمين.
9. أكملت كل الإجراءات
لقد أكملت الدرس التطبيقي حول ترميز Unity بين AdMob وFirebase 102. يمكنك العثور على الرمز المكتمل لهذا الدرس التطبيقي في المجلد 102-complete.