1. מבוא
נניח שאתם צריכים לשנות את הערכים של כמה פרמטרים באפליקציה אחרי שפרסמתם אותה בחנות Play. בדרך כלל, צריך לפרסם מחדש גרסה חדשה של האפליקציה, והמשתמשים צריכים לעדכן את האפליקציה בטלפון שלהם.
באופן כללי, עדכון האפליקציה יפעל אם רוצים לבצע שינוי לטווח ארוך באפליקציה. אבל מה קורה אם רוצים לשנות את הערך של פרמטרים מסוימים באפליקציה בתדירות גבוהה? או מה אם רוצים להריץ כמה ניסויים כדי למצוא את ההגדרות האופטימליות לאפליקציה?
במקרים כאלה, עדכוני האפליקציות לא יפעלו כמו שצריך. הסיבה לכך היא שייקח זמן עד שהעדכון יופץ באופן מלא למשתמשים. בנוסף, קשה מאוד להריץ את הניסויים בכמה גרסאות של האפליקציה.
בנוסף, איך אפשר לקבוע אם מסלול המשתמש באפליקציה פועל כמצופה? אפשר להסתמך על תגובות של משתמשים ב-Play Console. עם זאת, יכול להיות שהמידע לא יהיה מדויק מספיק כדי לקבל החלטה ברורה.
אם נתקלתם בבעיות (באגים בקוד, שגיאות דקדוק, ניסוח לא ברור וכו') במהלך העבודה עם ה-codelab הזה, אתם יכולים לדווח על הבעיה באמצעות הקישור דיווח על טעות בפינה הימנית התחתונה של ה-codelab.
מה תלמדו
- איך יוצרים משפך ב-Google Analytics for Firebase
- איך משתמשים בהגדרת תצורה מרחוק ב-Firebase
- איך מריצים את Firebase A/B Testing
מה תצטרכו
- Android Studio מגרסה 4.1 ואילך
- חשבון Google
- מכשיר בדיקה עם Android בגרסה 5.0 ומעלה, עם כבל USB לחיבור המכשיר, או אמולטור Android שמריץ AVD(מכשיר Android וירטואלי) עם קובץ אימג' של המערכת שתומך ב-Play Store או ב-Google APIs
מה רמת הניסיון שלך ב-AdMob?
מה רמת הניסיון שלך ב-Firebase?
2. הגדרת סביבת פיתוח
הורדת הקוד
כדי להוריד את כל הקוד של ה-Codelab הזה, לוחצים על הלחצן הבא:
מחלצים את קובץ ה-ZIP שהורד. הפעולה הזו תגרום לפריקה של תיקיית שורש בשם admob-firebase-codelabs-android-master.
…או משכפלים את המאגר ב-GitHub משורת הפקודה.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-android
המאגר מכיל ארבע תיקיות, כפי שמוצג בהמשך:
-
101-base – קוד התחלתי שתיצרו ב-Codelab הזה. -
101-complete_and_102-base – קוד מלא ל-Codelab הזה וקוד התחלתי ל-Codelab מספר 102. -
102-complete — קוד מלא ל-Codelab 102.
ייבוא אפליקציה לתחילת הדרך
מפעילים את Android Studio ובוחרים באפשרות Import project (ייבוא פרויקט) במסך הפתיחה. אחר כך בוחרים את הספרייה 101-complete_and_102-base מתוך הקוד שהורדתם.
הפרויקט אמור להיפתח ב-Android Studio.
הוספת קובץ תצורה של Firebase לפרויקט Android
- במסך הסקירה הכללית של הפרויקט Awesome Drawing Quiz, לוחצים על סמל ההגדרות.

- בכרטיסייה כללי, בוחרים את אפליקציית Android כדי להוריד את הקובץ google-service.json.
- מעבירים את קובץ התצורה לתיקייה
app בפרויקט. 
3. פתיחת פרויקט Firebase מהמסוף
לפני שממשיכים לשלב הבא, פותחים את הפרויקט ממסוף Firebase שיצרתם בשלב 'הגדרת פרויקט Firebase' בסדנת הקוד AdMob+Firebase 101.

4. יצירת משפך של אירועים באפליקציה
יכול להיות שהוספתם כמה אירועים באפליקציה כדי לעקוב אחרי פעילות המשתמשים בתוך האפליקציה. כשקוראים את הדוח של כל אירוע באפליקציה, אפשר לקבל את הפרטים שמשויכים לאירוע, כמו מספרים כוללים, מספרים ממוצעים לכל משתמש, נתונים דמוגרפיים וכו'.
אבל מה אם אתם רוצים לראות את שיעור ההשלמה של סדרת אירועים, במקום להתמקד באירוע ספציפי? ב-Google Analytics for Firebase, אפשר להשתמש במשפך כדי להציג באופן חזותי את שיעור ההשלמה של סדרת אירועים באפליקציה ולבצע אופטימיזציה שלו.
יצירת משפך
כדי ליצור משפך:
- נכנסים אל מסוף Firebase ובוחרים את הפרויקט Awesome Drawing Quiz שיצרתם קודם.
- לוחצים על משפכים.
- לוחצים על משפך חדש.
- מזינים שם ותיאור בשביל המשפך.
- בוחרים את שני האירועים הראשונים שרוצים להגדיר כשלבים במשפך.
- לוחצים על הוספת אירוע לכל שלב נוסף ובוחרים אירוע.
- לוחצים על יצירה.
פועלים לפי השלבים שלמעלה כדי ליצור את המשפכים הבאים:
#1 Funnel name: Level success rate Events: 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, אפשר לשנות את הערכים האלה בלי עדכון לאפליקציה. כך אפשר לשנות את התנהגות האפליקציה בלי להפריע למשתמשים ולהכריח אותם להוריד את העדכון.
ב-Codelab הזה תלמדו איך להפוך את סכום התגמול (מספר האותיות שייחשפו אחרי צפייה במודעת וידאו מתגמלת) לכוונון בלי עדכון לאפליקציה באמצעות Remote Config.
מוסיפים את הגדרת התצורה מרחוק לתלות של האפליקציה
נתחיל בהוספת התלות של הגדרת התצורה מרחוק ב-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. בוחרים באפשרות File > Sync Project with Gradle Files (קובץ > סנכרון הפרויקט עם קובצי 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 שיצרתם קודם. לוחצים על הלחצן Remote Config -> ADD YOUR FIRST PARAMETER (הגדרת תצורה מרחוק -> הוספת הפרמטר הראשון).

נותנים לפרמטר את השם reward_amount ומגדירים את ערך ברירת המחדל שלו כ-1. אחר כך לוחצים על הלחצן הוספת פרמטר.

לוחצים על הלחצן פרסום השינויים כדי שהשינוי יחול על המשתמשים.

6. שינוי התנהגות האפליקציה באמצעות הגדרת תצורה מרחוק
מעכשיו אפשר להגדיר את סכום התגמול בחידון ציור מדהים ב-מסוף Firebase בלי לעדכן את קוד האפליקציה.
בקטע הזה, תשנו את סכום התגמול מ-1 ל-2 כדי שהאפליקציה תציג עוד שני תווים כרמז אחרי צפייה במודעה מתגמלת.
עדכון ערך ברירת המחדל של הפרמטר reward_amount
עוברים אל מסוף Firebase ובוחרים את הפרויקט Awesome Drawing Quiz שיצרתם קודם. לוחצים על הגדרת תצורה מרחוק ואז על reward_amount מהרשימה. לאחר מכן משנים את ערך ברירת המחדל ל-2 ולוחצים על הלחצן עדכון.

לוחצים על הלחצן פרסום השינויים כדי שהשינוי יחול על המשתמשים.

אימות השינוי בהתנהגות האפליקציה
כדי לאשר את השינוי בהתנהגות האפליקציה, מריצים שוב את הפרויקט. אחרי שתסיימו לצפות במודעה מתגמלת, תראו שהאפליקציה חושפת עכשיו שתי אותיות כפרס, כמו שהגדרנו במסוף הגדרת תצורה מרחוק.
לפני הצפייה במודעה מתגמלת | קיבלתי כפרס שתי אותיות נוספות |
7. יצירת הניסוי לאופטימיזציה של סכום התגמול
מעכשיו אפשר לשנות את סכום התגמול בלי לפרסם עדכון לאפליקציה. אבל איך אפשר לדעת אם השינוי שביצעתם באפליקציה הוא לטובה?
באמצעות Firebase A/B Testing, אתם יכולים להריץ את הניסויים כדי לשפר את חוויית המשתמש הכוללת באפליקציה, בלי שתצטרכו לעדכן את האפליקציה או ליצור כלי נפרד להרצה ולמעקב אחרי הביצועים של כל ניסוי.
תכנון הניסוי
לפני שיוצרים ניסוי חדש, צריך להגדיר מטרה ברורה לניסוי. לפני שיוצרים ניסוי חדש, חשוב לעבור על רשימת המשימות הבאה.
- מה: מה רוצים לבצע אופטימיזציה? (למשל, רמת הקושי במשחק, התזמון או הנראות של המודעה וכו')
- למה: מהו היעד העסקי שלכם להפעלת הניסוי? (למשל, כדי למקסם את ההכנסות מפרסום, כדי להגדיל את שיעור השימור וכו')
- מי: מי כפוף להשתתפות בניסוי? (לדוגמה, כל המשתמשים, קהל משתמשים ספציפי וכו')
ב-Codelab הזה תיצרו ניסוי כדי לבצע אופטימיזציה של ערך סכום התגמול, במטרה למקסם את מעורבות המשתמשים היומית בחידון הציור המדהים.
יצירת הניסוי
פותחים את הפרויקט Awesome Drawing Quiz במסוף Firebase. בוחרים בתפריט בדיקות A/B ולוחצים על הלחצן יצירת ניסוי.
בוחרים באפשרות הגדרת תצורה מרחוק כדי ליצור ניסוי בהגדרת תצורה מרחוק.

נותנים לניסוי את השם Amount of the Reward' (סכום התגמול), כמו שמוצג בצילום המסך הבא.

מגדירים את אפשרויות הטירגוט. ב-Codelab הזה, תטרגטו 100% מהמשתמשים ב-Awesome Drawing Quiz.

מכיוון שהמטרה העיקרית של הניסוי היא למצוא ערך אופטימלי שממקסם את האינטראקציה היומית של המשתמשים, בוחרים באפשרות אינטראקציה יומית של משתמשים כמדד ראשי למעקב.

לבסוף, מגדירים קבוצת בקרה וקבוצת וריאנט כדי לגלות איזו קבוצה מניבה ביצועים טובים יותר. בוחרים את reward_amount מקבוצת הבקרה ומשאירים את הערך שלו ללא שינוי. לקבוצת הווריאציות, נותנים את השם Less reward ואז משנים את הערך של reward_amount ל-1.

בהגדרה הזו, אנשים בקבוצה 'פחות תגמול' יקבלו אות אחת כפרס, ואנשים בקבוצת הבקרה יקבלו שתי אותיות כפרס. כתוצאה מכך, תוכלו לראות איך סכום התגמול משפיע על המשתמשים.
אחרי שלוחצים על הלחצן בדיקה, מוצג סיכום של הניסוי, כמו שמתואר בהמשך.

הפעלת הניסוי
כדי להפעיל את הניסוי, לוחצים על הלחצן התחלת הניסוי. חשוב לזכור שאי אפשר לשנות את הגדרות הניסוי אחרי שהוא מתחיל.

8. ניהול הניסוי
צפייה בהתקדמות הניסוי
אפשר לעקוב אחר התקדמות הניסוי בתפריט A/B Testing במסוף Firebase. כך זה נראה: שימו לב: בכרטיס מוצג גם מספר המשתמשים שהשתתפו בניסוי ב-30 הדקות האחרונות.

אחרי שלוחצים על הניסוי ברשימה, אפשר לראות את פרטי הניסוי. עד שהניסוי יוכל להכריז על גרסה מובילה (כלומר, הגרסה עם הביצועים הכי טובים), תוצג ההודעה מוקדם מדי להכריז על גרסה מובילה.

אחרי שהניסוי יפעל במשך זמן מה, הנתונים שנאספו במהלך הניסוי עד כה יוצגו בקטע סקירת השיפורים. אפשר להשוות את הביצועים של כל וריאציה כדי לראות איזו מהן מניבה ביצועים טובים יותר. בצילום המסך הבא אפשר לראות דוגמה לקטע 'סקירה כללית של השיפורים'.

בטבלה שמתחת לקטע סקירה כללית של השיפור, אפשר לבדוק את הפרטים של מדדי היעד של הניסוי, וגם מדדים נוספים שנמדדים בניסוי. בצילום המסך הבא מוצגת דוגמה לקטע 'פרטי המדדים'.

השקת המנהיג לכל המשתמשים
אחרי שהניסוי פועל מספיק זמן כדי לזהות וריאנט מוביל או מנצח, אפשר להפעיל את הניסוי בקרב 100% מהמשתמשים. אחרי שבדיקת ה-A/B מזהה וריאנט מוביל ברור, היא מעודדת אתכם להשיק את הווריאנט המוביל לכל המשתמשים.

אבל גם אם לא ניתן לזהות מנצח ברור מתוצאות הניסוי, עדיין אפשר להפעיל את הווריאנט בקרב כל המשתמשים.
במסך פרטי הניסוי, לוחצים על תפריט ההקשר (
) ואז על השקת וריאציה.

בוחרים וריאציה להפצה לכל המשתמשים, ואז לוחצים על הלחצן Review in Remote Config (בדיקה בהגדרת תצורה מרחוק) כדי לבדוק את השינויים לפני שמבצעים שינוי בהגדרת התצורה מרחוק.

אחרי שמוודאים שאין בעיות בטיוטה, לוחצים על הלחצן פרסום השינויים כדי שהשינוי יופעל אצל כל המשתמשים.

9. הכול מוכן!
השלמת את ה-Codelab בנושא AdMob+Firebase 102 Android. אפשר למצוא את הקוד המלא של ה-Codelab הזה בתיקייה
102-complete.

