۱. مقدمه
فرض کنید که پس از انتشار برنامه در فروشگاه Play، نیاز به تنظیم مقادیر برخی از پارامترها در برنامه خود دارید. معمولاً باید نسخه جدیدی از برنامه خود را دوباره منتشر کنید و کاربران نیز باید برنامه را در تلفن خود بهروزرسانی کنند.
بهطورکلی، اگر بخواهید یک تغییر بلندمدت در برنامه خود اعمال کنید، بهروزرسانی برنامه کار خواهد کرد. با این حال، اگر بخواهید مقدار برخی از پارامترها را در برنامه خود مرتباً تنظیم کنید، چه؟ یا اگر بخواهید آزمایشهایی را برای یافتن پیکربندی بهینه برنامه انجام دهید، چه؟
در این موارد، بهروزرسانی برنامه به خوبی کار نمیکند. زیرا مدتی طول میکشد تا بهروزرسانی به طور کامل برای کاربران منتشر شود. همچنین، اجرای آزمایشها در چندین نسخه از برنامه بسیار چالش برانگیز است.
همچنین، چگونه میتوانید تشخیص دهید که آیا مسیر کاربر در اپلیکیشن مطابق انتظار پیش میرود؟ میتوانید به نظرات کاربران در کنسول Play تکیه کنید. با این حال، ممکن است این نظرات برای تصمیمگیری قطعی به اندازه کافی دقیق نباشند.
آنچه یاد خواهید گرفت
- نحوه ایجاد قیف فروش در گوگل آنالیتیکس برای فایربیس
- نحوه استفاده از پیکربندی از راه دور Firebase
- نحوه اجرای تست A/B فایربیس
آنچه نیاز دارید
- یونیتی ۲۰۱۸.۴.۴f۱ یا بالاتر
- Xcode نسخه ۱۰ یا بالاتر (برای ساخت تارگت برای iOS)
- یک حساب گوگل
- یک دستگاه آزمایشی با اندروید ۵.۰+ به همراه کابل USB برای اتصال دستگاه، یا یک شبیهساز اندروید که AVD (دستگاه مجازی اندروید) را اجرا میکند و دارای یک ایمیج سیستمی است که از Play Store/Google APIs پشتیبانی میکند.
- یک دستگاه iOS یا یک شبیهساز که iOS 8.0 یا بالاتر را اجرا میکند
سطح تجربه خود را با AdMob چگونه ارزیابی میکنید؟
سطح تجربه خود با فایربیس را چگونه ارزیابی میکنید؟
۲. راهاندازی محیط توسعه
کد را دانلود کنید
برای دانلود تمام کدهای این codelab روی دکمه زیر کلیک کنید:
فایل زیپ دانلود شده را از حالت فشرده خارج کنید. این کار پوشه ریشه با نام admob-firebase-codelabs-unity-master را از حالت فشرده خارج میکند.
... یا مخزن GitHub را از خط فرمان کلون کنید.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity
این مخزن شامل چهار پوشه به شرح زیر است:
۱۰۱-base — کد اولیهای که در این آزمایشگاه کد خواهید ساخت.
۱۰۱-complete_and_102-base — کد تکمیلشده برای این codelab و کد آغازین برای codelab 102.
۱۰۲-کامل — کد کاملشده برای آزمایشگاه کد ۱۰۲.
تهیه فایلهای مورد نیاز
آزمون طراحی فوقالعاده از چندین کد متنباز استفاده میکند که برای کامپایل و اجرای پروژه مورد نیاز هستند.
ترمینال را باز کنید و به دایرکتوری ریشه مخزن بروید. سپس، دستور ./gradlew :prepareThirdPartyFiles (در ویندوز gradlew.bat :prepareThirdPartyFiles ) را از ترمینال اجرا کنید تا فایلهای مورد نیاز در پروژه کپی شوند.
برنامه شروع کننده را وارد کنید
یونیتی را اجرا کنید، در صفحه خوشامدگویی گزینه "Open" را انتخاب کنید. سپس پوشه 101-complete_and_102-base را از کدی که دانلود کردهاید، انتخاب کنید.
حالا باید پروژه را در یونیتی باز کرده باشید.
افزونه یونیتی تبلیغات موبایل گوگل را اضافه کنید
برای نمایش تبلیغات AdMob در برنامه Unity، باید افزونه Google Mobile Ads Unity را به پروژه اضافه کنید.
- بسته افزونه Google Mobile Ads Unity نسخه ۳.۱۸.۱ را دانلود کنید. (توجه داشته باشید که این Codelab ممکن است با نسخه دیگر افزونه سازگار نباشد)
- در پروژه یونیتی Awesome Drawing Quiz . در پروژه، به مسیر Assets > Import Package > Custom Package بروید.
- فایل GoogleMobileAds.unitypackage را به پروژهای که دانلود کردهاید، وارد (import) کنید.
شما باید شناسه برنامه AdMob را نیز تنظیم کنید. در ویرایشگر Unity، از منو، Assets > Google Mobile Ads > Settings را انتخاب کنید.

با کلیک روی کادر انتخاب Enabled در بخش Google AdMob، AdMob را فعال کنید. سپس شناسه برنامه AdMob را به شرح زیر وارد کنید:
- اندروید:
ca-app-pub-3940256099942544~3048611032 - iOS:
ca-app-pub-3940256099942544~2753522596

فایلهای پیکربندی Firebase را به پروژه Unity اضافه کنید
- از صفحه نمای کلی پروژه آزمون طراحی فوقالعاده ، روی نماد تنظیمات کلیک کنید.

- در زیر تب General ، هر برنامه اندروید و iOS را برای دانلود فایل google-service.json (برای اندروید) و GoogleService-Info.plist (برای iOS) انتخاب کنید.
- هر دو فایل پیکربندی را به داخل منتقل کنید
پوشهی Assets در پروژهی Unity.

اضافه کردن کیت توسعه نرمافزاری (SDK) فایربیس آنالیتیکس
- Firebase Unity SDK 5.5.0 را دانلود کنید و آن را در جایی مناسب از حالت فشرده خارج کنید. (اگر قبلاً SDK را دانلود کردهاید، از این مرحله صرف نظر کنید)
- پروژه یونیتی Awesome Drawing Quiz را باز کنید، به مسیر Assets > Import Package > Custom Package بروید.
- از SDK استخراجشده، Firebase Analytics SDK (
dotnet4/FirebaseAnalytics.unitypackage) را وارد کنید. - در پنجرهی «وارد کردن بستهی Unity»، روی «وارد کردن» کلیک کنید.
۳. پروژه Firebase را از کنسول باز کنید
قبل از رفتن به مرحله بعدی، پروژهای را که در مرحله «راهاندازی پروژه فایربیس» از AdMob+Firebase 101 Codelab ایجاد کردهاید، از کنسول فایربیس باز کنید.

۴. قیفی از رویدادهای اپلیکیشن ایجاد کنید
ممکن است چند رویداد برنامه وجود داشته باشد که برای ردیابی فعالیت کاربر در داخل برنامه اضافه کردهاید. با خواندن گزارش هر رویداد برنامه، میتوانید جزئیات مرتبط با رویداد مانند تعداد کل، میانگین تعداد به ازای هر کاربر، اطلاعات جمعیتی و غیره را دریافت کنید.
با این حال، اگر بخواهید به جای تمرکز روی یک رویداد خاص، نرخ تکمیل یک سری رویدادها را ببینید، چه؟ در گوگل آنالیتیکس برای فایربیس، میتوانید از قیف (Funnel) برای تجسم و بهینهسازی نرخ تکمیل یک سری رویدادهای برنامه استفاده کنید.
یک قیف ایجاد کنید
برای ایجاد قیف:
- به کنسول فایربیس بروید و پروژه 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 )، مشاهده کنید. در اینجا، میتوانید ببینید که ۴۶.۲٪ از کاربران سطح را تکمیل کردهاند.
وقتی روی تعداد رویدادها کلیک کنید، معیارها بر اساس تعداد رویدادها به شرح زیر نشان داده میشوند:

بر اساس معیارهای موجود در تصویر بالا، در طول این دوره، ۱۱۶ تلاش (که رویداد level_start را فعال کرده) و ۵۷ پاکسازی (که رویداد level_success را فعال کرده) رخ داده است.
از آنجایی که نرخ تکمیل بر اساس رویدادها (۴۹.۱٪) کمی بالاتر از نرخ بر اساس کاربر (۴۶.۲٪) است، میتوان گفت که تعداد کمی از افراد عملکرد بهتری نسبت به بقیه دارند.
۵. پیکربندی از راه دور را در برنامه ادغام کنید
از آنجایی که میتوانید بر اساس رویدادهای برنامه و قیف فروش، بینشهایی در مورد برنامه خود به دست آورید، ممکن است بخواهید برنامه خود را بهینه کنید. این کار معمولاً شامل تنظیم دقیق مقدار پارامتر در برنامه است. برای تغییر مقدار این پارامترها، باید برنامه را بهروزرسانی کنید تا تغییرات برای کاربران اعمال شود.
با استفاده از Remote Config در Firebase، میتوانید این مقادیر را بدون بهروزرسانی برنامه تنظیم کنید، به این معنی که میتوانید رفتار برنامه را بدون ایجاد مزاحمت برای کاربران خود با مجبور کردن آنها به دانلود بهروزرسانی، تغییر دهید.
در این Codelab، یاد خواهید گرفت که چگونه مبلغ پاداش (تعداد حروفی که پس از تماشای یک تبلیغ ویدیویی پاداشدار نمایش داده میشوند) را بدون بهروزرسانی برنامه و با استفاده از Remote Config قابل تنظیم کنید.
اضافه کردن کیت توسعه نرمافزاری پیکربندی از راه دور فایربیس
- Firebase Unity SDK 5.5.0 را دانلود کنید و آن را در جایی مناسب از حالت فشرده خارج کنید.
- پروژه یونیتی Awesome Drawing Quiz را باز کنید، به مسیر Assets > Import Package > Custom Package بروید.
- از SDK استخراجشده، SDK مربوط به Remote Config (
dotnet4/FirebaseRemoteConfig.unitypackage) را وارد کنید. - در پنجرهی «وارد کردن بستهی Unity»، روی «وارد کردن» کلیک کنید.
وارد کردن Firebase.RemoteConfig
فایل Main.cs را طوری تغییر دهید که بتوانید بدون نیاز به استفاده از نام کامل، از نوع دادهی Firebase.RemoteConfig استفاده کنید.
صحنهها/فایل اصلی.cs
...
using AwesomeDrawingQuiz.Game;
// TODO: Import Firebase.RemoteConfig (102)
using Firebase.RemoteConfig;
namespace AwesomeDrawingQuiz.Scene {
...
}
مقداردهی اولیه و دریافت مقادیر پیکربندی از راه دور
متد InitAndFetchRemoteConfig() را در فایل Main.cs برای مقداردهی اولیه نمونه Remote Config به صورت زیر تغییر دهید. توجه داشته باشید که GameSettings.KEY_REWARD_AMOUNT نام پارامتر موجود در Remote Config را در خود نگه میدارد. (این فیلد را به زودی در این Codelab تعریف خواهید کرد)
صحنهها/فایل اصلی.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) )
مقادیر پیکربندی از راه دور واکشی شده را فعال کنید
وقتی با موفقیت مقادیر Remote Config را دریافت کردید، باید آن مقادیر را فعال کنید تا در برنامه در دسترس باشند. متد ActivateRemoteConfigValues() را به صورت زیر تغییر دهید.
صحنهها/فایل اصلی.cs
private void ActivateRemoteConfigValues() {
// TODO: Activate fetched Remote Config values (102)
FirebaseRemoteConfig.ActivateFetched();
}
اصلاح متد Start()
برای اینکه برنامه در هنگام اجرای برنامه، مقدار Remote Config را دریافت و فعال کند، متد Start() را در فایل Main.cs به صورت زیر تغییر دهید.
صحنهها/فایل اصلی.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
}
مبلغ پاداش را از Remote Config دریافت کنید
کلاس GameSettings را طوری تغییر دهید که مبلغ پاداش را از Remote Config دریافت کند.
تنظیمات بازی/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 { }
}
}
}
یک پارامتر Remote Config از کنسول ایجاد کنید
در مرحله بعد، یک پارامتر Remote Config جدید برای مبلغ پاداش ایجاد خواهید کرد تا بتوانید مقدار آن را در لحظه تنظیم کنید.
برای ایجاد یک پارامتر جدید، به کنسول Firebase بروید، سپس پروژه Awesome Drawing Quiz را که قبلاً ایجاد کردهاید انتخاب کنید. روی دکمه Remote Config -> ADD YOUR FIRST PARAMETER کلیک کنید.

پارامتر را reward_amount نامگذاری کنید و مقدار پیشفرض آن را 1 قرار دهید. سپس روی دکمهی Add Parameter کلیک کنید.

برای اعمال تغییرات به کاربران، روی دکمهی انتشار تغییرات کلیک کنید.

۶. رفتار برنامه را با Remote Config تغییر دهید
مقدار جایزه در مسابقه نقاشی فوقالعاده اکنون میتواند بدون نیاز به بهروزرسانی کد برنامه، در کنسول Firebase پیکربندی شود.
در این بخش، شما مبلغ پاداش را از ۱ به ۲ تغییر میدهید تا برنامه پس از تماشای یک تبلیغ پاداشدار، دو شخصیت دیگر را به عنوان راهنمایی نشان دهد.
مقدار پیشفرض پارامتر reward_amount را بهروزرسانی کنید.
به کنسول Firebase بروید، سپس پروژه Awesome Drawing Quiz را که قبلاً ایجاد کردهاید انتخاب کنید. روی Remote Config کلیک کنید و از لیست، reward_amount انتخاب کنید. سپس، مقدار پیشفرض را به ۲ تغییر دهید و سپس روی دکمه Update کلیک کنید.

برای اعمال تغییرات به کاربران، روی دکمهی انتشار تغییرات کلیک کنید.

تغییر رفتار برنامه را تأیید کنید
برای تأیید تغییر رفتار برنامه، پروژه را دوباره اجرا کنید. پس از اتمام تماشای یک تبلیغ پاداشدار، متوجه خواهید شد که برنامه اکنون دو حرف را به عنوان پاداش نشان میدهد، همانطور که در کنسول Remote Config پیکربندی کردیم.
قبل از تماشای یک تبلیغ جایزهدار | دو حرف اضافی را به عنوان پاداش نشان داد |
۷. آزمایشی برای بهینهسازی میزان پاداش ایجاد کنید
حالا میتوانید بدون نیاز به انتشار بهروزرسانی برنامه، مبلغ پاداش را تغییر دهید. با این حال، چگونه میتوانید تعیین کنید که مبلغی که تغییر دادهاید برای برنامه خوب است؟
با تست A/B فایربیس ، میتوانید آزمایشها را برای بهینهسازی تجربه کلی کاربر برنامه اجرا کنید، بدون اینکه نیازی به بهروزرسانی برنامه یا ساخت ابزاری جداگانه برای اجرا و پیگیری عملکرد هر آزمایش داشته باشید.
آزمایش را طراحی کنید
قبل از ایجاد یک آزمایش جدید، باید یک هدف یا مقصد مشخص برای آزمایش تعیین کنید. قبل از ایجاد یک آزمایش جدید، حتماً چک لیست زیر را مرور کنید.
- چه چیزی را میخواهید بهینه کنید؟ (مثلاً، سختی بازی، زمانبندی/میزان دیده شدن تبلیغات و غیره)
- چرا: هدف تجاری شما از اجرای این آزمایش چیست؟ (مثلاً به حداکثر رساندن درآمد تبلیغات، افزایش نرخ بازگشت مشتری و غیره)
- چه کسی: چه کسی قرار است در این آزمایش شرکت کند؟ (مثلاً همه کاربران، مخاطبان خاص کاربر و غیره)
در این Codelab، شما قصد دارید آزمایشی ایجاد کنید تا مقدار پاداش را بهینه کنید تا میزان مشارکت روزانه کاربران در آزمون نقاشی فوقالعاده به حداکثر برسد.
آزمایش را ایجاد کنید
پروژه Awesome Drawing Quiz را از کنسول Firebase باز کنید. منوی A/B Testing را انتخاب کنید، سپس روی دکمه Create experiment کلیک کنید.
برای ایجاد یک آزمایش Remote Config، گزینه Remote Config را انتخاب کنید.

همانطور که در تصویر زیر نشان داده شده است، نام آزمایش را «مقدار پاداش» بگذارید.

گزینههای هدفگیری را پیکربندی کنید. در این Codelab، شما ۱۰۰٪ کاربران آزمون نقاشی فوقالعاده را هدف قرار خواهید داد.

از آنجایی که هدف اصلی آزمایش یافتن مقدار بهینهای است که میزان مشارکت روزانه کاربر را به حداکثر برساند، میزان مشارکت روزانه کاربر را به عنوان معیار اصلی برای ردیابی انتخاب کنید.

در نهایت، گروههای کنترل و متغیر را تنظیم کنید تا بتوانید بفهمید کدام گروه عملکرد بهتری دارد. از گروه کنترل، reward_amount انتخاب کنید و مقدار آن را بدون تغییر بگذارید. برای گروه متغیر، نام آن را «Less reward» بگذارید، سپس مقدار reward_amount را به ۱ تغییر دهید.

با این پیکربندی، افراد گروه «پاداش کمتر» یک حرف به عنوان پاداش دریافت میکنند، در حالی که افراد گروه کنترل دو حرف به عنوان پاداش دریافت میکنند. در نتیجه، خواهید دید که میزان پاداش چگونه بر کاربران تأثیر میگذارد.
پس از کلیک بر روی دکمه مرور ، نمای کلی آزمایش را به شرح زیر مشاهده خواهید کرد.

آزمایش را اجرا کنید
برای اجرای آزمایش، روی دکمهی «شروع آزمایش» کلیک کنید. توجه داشته باشید که پس از شروع آزمایش، نمیتوانید پیکربندی آن را تغییر دهید.

۸. آزمایش را مدیریت کنید
مشاهده پیشرفت آزمایش
شما میتوانید پیشرفت آزمایش را از منوی A/B Testing در کنسول Firebase بررسی کنید که مانند تصویر زیر خواهد بود. توجه داشته باشید که میتوانید تعداد کاربرانی را که در 30 دقیقه گذشته در آزمایش شرکت کردهاند، در کارت نیز مشاهده کنید.

وقتی روی آزمایش از لیست کلیک کنید، میتوانید جزئیات آزمایش را مشاهده کنید. تا زمانی که آزمایش نتواند یک رهبر (یعنی بهترین نوع عملکرد) را اعلام کند، پیام «برای اعلام رهبر خیلی زود است» را مشاهده خواهید کرد.

پس از مدتی که آزمایش اجرا شد، دادههای جمعآوریشده در طول آزمایش تاکنون را در بخش نمای کلی بهبود نمایش میدهد. میتوانید عملکرد هر نوع را با هم مقایسه کنید تا ببینید کدام یک عملکرد بهتری دارد. تصویر زیر نمونهای از بخش نمای کلی بهبود را نشان میدهد.

از جدول زیر بخش « مرور کلی بهبود »، میتوانید جزئیات معیارهای هدف آزمایش و همچنین معیارهای اضافی که در آزمایش ردیابی میشوند را بررسی کنید. تصویر زیر نمونهای از بخش جزئیات معیارها را نشان میدهد.

رهبر را برای همه کاربران منتشر کنید
بعد از اینکه آزمایش به مدت طولانی ادامه پیدا کرد و شما یک گزینه پیشرو یا برنده پیدا کردید، میتوانید آزمایش را به ۱۰۰٪ کاربران ارائه دهید. وقتی تست A/B یک گزینه پیشرو مشخص پیدا کرد، شما را تشویق میکند که گزینه پیشرو را به همه کاربران ارائه دهید.

با این حال، حتی اگر آزمایش، رهبر مشخصی را اعلام نکرده باشد، شما هنوز هم میتوانید یک نوع را برای همه کاربران منتشر کنید.
در صفحه جزئیات آزمایش، روی منوی زمینه ( کلیک کنید
) و سپس روی «ارائهی نوع» کلیک کنید.

یک نوع را برای انتشار برای همه کاربران انتخاب کنید، سپس روی دکمه «بررسی در پیکربندی از راه دور» کلیک کنید تا تغییرات را قبل از ایجاد تغییر در پیکربندی از راه دور بررسی کنید.

پس از اینکه تأیید کردید که پیشنویس هیچ مشکلی ندارد، روی دکمهی انتشار تغییرات کلیک کنید تا تغییر برای همه کاربران اعمال شود.

۹. کار تمام است!
شما Codelab مربوط به AdMob+Firebase 102 Unity را تکمیل کردهاید. میتوانید کد تکمیلشده برای این Codelab را در اینجا پیدا کنید.
پوشه ۱۰۲ کامل .

