1. מבוא
נניח שאתם צריכים לשנות את הערכים של כמה פרמטרים באפליקציה אחרי שפרסמתם אותה בחנות Play. בדרך כלל, צריך לפרסם מחדש גרסה חדשה של האפליקציה, והמשתמשים צריכים לעדכן את האפליקציה בטלפון שלהם.
באופן כללי, עדכון האפליקציה יפעל אם רוצים לבצע שינוי לטווח ארוך באפליקציה. אבל מה קורה אם רוצים לשנות את הערך של פרמטרים מסוימים באפליקציה בתדירות גבוהה? או מה אם רוצים להריץ כמה ניסויים כדי למצוא את ההגדרות האופטימליות לאפליקציה?
במקרים כאלה, עדכון האפליקציה לא יפעל בצורה תקינה. הסיבה לכך היא שייקח זמן עד שהעדכון יופץ באופן מלא למשתמשים. בנוסף, קשה מאוד להריץ את הניסויים בכמה גרסאות של האפליקציה.
בנוסף, איך אפשר לקבוע אם מסלול המשתמש באפליקציה פועל כמצופה? אפשר להסתמך על תגובות של משתמשים ב-Play Console. עם זאת, יכול להיות שהמידע לא יהיה מדויק מספיק כדי לקבל החלטה ברורה.
מה תלמדו
- איך יוצרים משפך ב-Google Analytics for Firebase
- איך משתמשים בהגדרת תצורה מרחוק ב-Firebase
- איך מריצים את Firebase A/B Testing
מה תצטרכו
- Unity 2018.4.4f1 ואילך
- Xcode 10 ואילך (כדי ליצור את היעד ל-iOS)
- חשבון Google
- מכשיר בדיקה עם Android בגרסה 5.0 ומעלה, עם כבל USB לחיבור המכשיר, או אמולטור Android שמריץ AVD(מכשיר Android וירטואלי) עם קובץ אימג' של המערכת שתומך ב-Play Store או ב-Google APIs
- מכשיר iOS או סימולטור עם iOS מגרסה 8.0 ואילך
מה רמת הניסיון שלך ב-AdMob?
מה רמת הניסיון שלך ב-Firebase?
2. הגדרת סביבת פיתוח
הורדת הקוד
כדי להוריד את כל הקוד של ה-Codelab הזה, לוחצים על הלחצן הבא:
מחלצים את קובץ ה-ZIP שהורד. הפעולה הזו תגרום לפריקה של תיקיית שורש בשם admob-firebase-codelabs-unity-master.
…או משכפלים את המאגר ב-GitHub משורת הפקודה.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity
המאגר מכיל ארבע תיקיות, כפי שמוצג בהמשך:
-
101-base – קוד התחלתי שתיצרו ב-Codelab הזה. -
101-complete_and_102-base – קוד מלא ל-Codelab הזה וקוד התחלתי ל-Codelab מספר 102. -
102-complete — קוד מלא ל-Codelab 102.
הכנת הקבצים הנדרשים
ב-Awesome Drawing Quiz נעשה שימוש בכמה קודים של קוד פתוח, שנדרשים כדי לקמפל ולהריץ את הפרויקט.
פותחים את הטרמינל ועוברים לספריית הבסיס של המאגר. לאחר מכן, מריצים את הפקודה ./gradlew :prepareThirdPartyFiles (gradlew.bat :prepareThirdPartyFiles ב-Windows) מהטרמינל כדי להעתיק את הקבצים הנדרשים לפרויקט.
ייבוא אפליקציה לתחילת הדרך
מפעילים את Unity ובוחרים באפשרות Open במסך הפתיחה. אחר כך בוחרים את הספרייה 101-complete_and_102-base מתוך הקוד שהורדתם.
הפרויקט אמור להיפתח ב-Unity.
הוספת Google Mobile Ads Unity Plugin
כדי להציג מודעות AdMob באפליקציית Unity, צריך להוסיף את Google Mobile Ads Unity Plugin לפרויקט.
- מורידים את חבילת Google Mobile Ads Unity Plugin 3.18.1. (שימו לב: יכול להיות שה-Codelab הזה לא יהיה תואם לגרסה השנייה של הפלאגין)
- בפרויקט Unity Awesome Drawing Quiz. בפרויקט, עוברים אל Assets > Import Package > Custom Package (נכסים > ייבוא חבילה > חבילה מותאמת אישית).
- מייבאים את GoogleMobileAds.unitypackage לפרויקט שהורדתם.
צריך להגדיר גם את מזהה האפליקציה ב-AdMob. בתפריט של Unity Editor, בוחרים באפשרות Assets > Google Mobile Ads > Settings (נכסים > Google Mobile Ads > הגדרות).

כדי להפעיל את AdMob, מסמנים את תיבת הסימון Enabled (מופעל) בקטע Google AdMob. לאחר מכן מזינים את מזהה האפליקציה ב-AdMob באופן הבא:
- Android:
ca-app-pub-3940256099942544~3048611032 - iOS:
ca-app-pub-3940256099942544~2753522596

הוספת קובצי תצורה של Firebase לפרויקט ב-Unity
- במסך הסקירה הכללית של הפרויקט Awesome Drawing Quiz, לוחצים על סמל ההגדרות.

- בכרטיסייה כללי, בוחרים כל אפליקציית Android ו-iOS כדי להוריד את הקובץ google-service.json (ל-Android) ואת הקובץ GoogleService-Info.plist (ל-iOS).
- מעבירים את שני קובצי ההגדרות לתיקייה
Assets בפרויקט Unity.

הוספת Firebase Analytics SDK
- מורידים את Firebase Unity SDK 5.5.0 ומחלצים את הקבצים במיקום נוח. (אפשר לדלג על השלב הזה אם כבר הורדתם את ה-SDK)
- פותחים את פרויקט Unity Awesome Drawing Quiz (חידון ציור מדהים), עוברים אל Assets > Import Package > Custom Package (נכסים > ייבוא חבילה > חבילה מותאמת אישית).
- מתוך ה-SDK שבוטלה הדחיסה שלו, מייבאים את Firebase Analytics SDK (
dotnet4/FirebaseAnalytics.unitypackage). - בחלון Import Unity package (ייבוא חבילת Unity), לוחצים על Import (ייבוא).
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.
הוספת ה-SDK של הגדרת התצורה מרחוק ב-Firebase
- מורידים את Firebase Unity SDK 5.5.0 ומחלצים את הקבצים במיקום נוח.
- פותחים את פרויקט Unity Awesome Drawing Quiz (חידון ציור מדהים), עוברים אל Assets > Import Package > Custom Package (נכסים > ייבוא חבילה > חבילה מותאמת אישית).
- מתוך ה-SDK שחולץ, מייבאים את ה-SDK של הגדרת התצורה מרחוק (
dotnet4/FirebaseRemoteConfig.unitypackage). - בחלון Import Unity package (ייבוא חבילת Unity), לוחצים על Import (ייבוא).
ייבוא של 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 מכיל את שם הפרמטר בהגדרת התצורה מרחוק. (תגדירו את השדה הזה בהמשך ה-Codelab)
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 שיצרתם קודם. לוחצים על הלחצן 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 Unity. אפשר למצוא את הקוד המלא של ה-Codelab הזה בתיקייה
102-complete.

