1. مقدمة
لنفترض أنك بحاجة إلى تعديل قيم بعض المعلمات في تطبيقك بعد نشر التطبيق على "متجر Play". في العادة، يجب إعادة نشر إصدار جديد من تطبيقك، وعلى المستخدمين تحديث التطبيق على هواتفهم أيضًا.
بشكل عام، سيعمل تحديث التطبيق إذا كنت تريد إجراء تغيير طويل الأمد في تطبيقك. ومع ذلك، ماذا لو كنت ستعدِّل قيمة بعض المعلمات في تطبيقك بشكل متكرر؟ أو ماذا لو كنت تريد إجراء بعض التجارب للعثور على الإعداد الأمثل للتطبيق؟
وفي هذه الحالات، لن تعمل تحديثات التطبيقات بشكل جيد. لأنّ نشر التحديث بالكامل للمستخدمين يتطلب بعض الوقت. إضافةً إلى ذلك، ينطوي إجراء التجارب على العديد من إصدارات التطبيق على صعوبة كبيرة.
أيضًا، كيف يمكنك تحديد ما إذا كانت رحلة مستخدم التطبيق تعمل على النحو المنشود؟ يمكنك الاعتماد على تعليقات المستخدمين في Play Console. ومع ذلك، قد لا يكون دقيقًا بما يكفي لاتخاذ قرار واضح.
إذا واجهت أي مشاكل (أخطاء في الرموز أو أخطاء نحوية أو صياغة غير واضحة أو غير ذلك) أثناء حلّ هذا الدرس التطبيقي حول الترميز، يُرجى الإبلاغ عن المشكلة من خلال رابط الإبلاغ عن خطأ في أسفل يمين الدرس التطبيقي حول الترميز.
المعلومات التي ستطّلع عليها
- كيفية إنشاء مسار إحالة ناجحة في "إحصاءات Google لبرنامج Firebase"
- كيفية استخدام ميزة "الإعداد عن بُعد في Firebase"
- كيفية إجراء اختبار A/B من Firebase
المتطلبات
- استوديو Android الإصدار 4.1 أو الإصدارات الأحدث
- حساب Google
- جهاز اختباري يعمل بالإصدار 5.0 من نظام التشغيل Android أو الإصدارات الأحدث مع كابل USB لتوصيل جهازك، أو محاكي Android يعمل بنظام AVD(جهاز Android افتراضي) يتضمّن صورة نظام تتوافق مع "متجر Play" أو واجهات Google APIs
ما هو تقييمك لمستوى خبرتك في استخدام AdMob؟
ما هو تقييمك لمستوى خبرتك في استخدام Firebase؟
2. إعداد بيئة التطوير
تنزيل الرمز
انقر على الزر التالي لتنزيل جميع الرموز الخاصة بهذا الدرس التطبيقي حول الترميز:
فك ضغط ملف ZIP الذي تم تنزيله. سيؤدي هذا الإجراء إلى فك ضغط مجلد جذر باسم admob-firebase-codelabs-android-master
.
...أو استنساخ مستودع جيت هب من سطر الأوامر.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-android
يحتوي المستودع على أربعة مجلدات على النحو التالي:
101-base: بدء الرمز البرمجي الذي ستنشئه في هذا الدرس التطبيقي حول الترميز
101-complete_and_102-base — تم إكمال الرمز لهذا الدرس التطبيقي حول الترميز، المبتدئين للدرس التطبيقي حول الترميز 102.
102-complete: تم إكمال الرمز للدرس التطبيقي 102.
استيراد تطبيق إجراء التفعيل
افتح "استوديو Android" واختَر استيراد مشروع في شاشة الترحيب. بعد ذلك، اختَر الدليل 101-complete_and_102-base من الرمز الذي نزّلته.
من المفترض أن يكون المشروع مفتوحًا الآن في "استوديو Android".
إضافة ملف إعداد Firebase إلى مشروع Android
- من شاشة النظرة العامة لمشروع اختبار رسومات رائعة، انقر على رمز الإعدادات.
- ضمن علامة التبويب الإعدادات العامة، اختَر تطبيق Android لتنزيل ملف google-service.json.
- انقِل ملف الإعداد إلى دليل
التطبيق في مشروعك.
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، يمكنك تعديل هذه القيم بدون تحديث التطبيق، ما يعني أنّه بإمكانك تغيير سلوك التطبيق بدون الحاجة إلى إزعاج المستخدمين من خلال إجبارهم على تنزيل التحديث.
في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية تعديل مبلغ المكافأة (عدد الخطابات التي سيتم الإفصاح عنها بعد مشاهدة إعلان فيديو يضم مكافأة) بدون تحديث التطبيق وذلك باستخدام ميزة "الإعداد عن بُعد".
إضافة ميزة "الإعداد عن بُعد" إلى اعتمادية التطبيق
لنبدأ بإضافة ميزة "الإعداد عن بُعد في Firebase" إلى اعتمادية التطبيق.
app/build.gradle
apply plugin: 'com.android.application'
android {
...
}
dependencies {
...
// TODO: Add Firebase Remote Config dependency (102)
implementation 'com.google.firebase:firebase-config-ktx'
...
}
...
مزامنة مشروعك مع ملفات Gradle
وللتأكّد من توفُّر جميع الاعتماديات لتطبيقك، عليك مزامنة مشروعك مع ملفات Gradle. حدد ملف > مزامنة قائمة المشروع مع ملفات Gradle لمزامنة مشروعك مع ملفات Gradle
ضبط قيمة تلقائية لمَعلمة "الإعداد عن بُعد"
يتطلب استرجاع القيم من "الإعداد عن بُعد" اتصالاً بالشبكة. في الحالة التي تكون فيها الشبكة غير متاحة، يجب تحديد قيمة تلقائية لكل مَعلمة في ميزة "الإعداد عن بُعد".
أنشئ ملف "remote_config_defaults.xml
" ضمن المجلد "res/xml
". بعد ذلك، اضبط قيمة تلقائية لمبلغ المكافأة (reward_amount)
على النحو التالي.
res/xml/remote_config_defaults.xml
<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
<entry>
<key>reward_amount</key>
<value>1</value>
</entry>
</defaultsMap>
يُرجى العِلم أنّ reward_amount
هو اسم المَعلمة في "الإعداد عن بُعد".
جلب مبلغ المكافأة من ميزة "الإعداد عن بُعد"
عدِّل AwesomeDrawingQuiz.kt
لجعل الفئة GameSettings
للإشارة إلى المثيل RemoteConfig
.
يُرجى العلم أنّه تم ضبط المثيل RemoteConfig
لجلب أحدث القيم من الخادم في وضع تصحيح الأخطاء للمساعدة في عملية التطوير. (اضبط الحد الأدنى للفاصل الزمني للاسترجاع على صفر ثانية من خلال طلب الرقم fetch(0L)
)
AwesomeDrawingQuiz.kt
class AwesomeDrawingQuiz : Application() {
...
// COMPLETE: Provide FirebaseRemoteConfig instance (102)
private fun provideGameSettings() = GameSettings(provideRemoteConfig())
// COMPLETE: Add a function that provides a FirebaseRemoteConfig instance (102)
private fun provideRemoteConfig(): FirebaseRemoteConfig {
val rc = Firebase.remoteConfig.apply {
setDefaultsAsync(R.xml.remote_config_defaults)
}
val fetchTask = if (BuildConfig.DEBUG) rc.fetch(0L) else rc.fetch()
fetchTask.addOnCompleteListener {
if (it.isSuccessful) {
Log.d("AwesomeDrawingQuiz", "Remote config value fetched")
rc.activate()
}
}
return rc
}
}
بعد ذلك، غيِّر الفئة GameSettings
لاسترجاع مبلغ المكافأة من ميزة "الإعداد عن بُعد".
GameSettings.kt
// TODO: Add FirebaseRemoteConfig as a class member
class GameSettings(private val rc: FirebaseRemoteConfig) {
...
// TODO: Apply reward amount from the Remote Config (102)
val rewardAmount: Int
get() = rc.getLong(KEY_REWARD_AMOUNT).toInt()
companion object {
...
// TODO: Add a key for 'reward_amount' Remote Config parameter (102)
private const val KEY_REWARD_AMOUNT = "reward_amount"
}
}
إنشاء مَعلمة "الإعداد عن بُعد" من وحدة التحكّم
بعد ذلك، ستنشئ معلمة جديدة في ميزة "الإعداد عن بُعد" لمقدار المكافأة حتى تتمكن من تعديل قيمتها بسرعة.
لإنشاء مَعلمة جديدة، انتقِل إلى وحدة تحكُّم 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. أكملت كل الإجراءات
لقد أكملت الدرس التطبيقي حول الترميز الخاص بنظام التشغيل Android لبرنامج AdMob وFirebase 102. يمكنك العثور على الرمز المكتمل لهذا الدرس التطبيقي في المجلد 102-complete.