1. مقدمه
تبلیغات بخش مهمی از تجربه کاربری کلی برنامه شما هستند. اجرای تبلیغات خوب می تواند به بهبود تجربه کلی برنامه شما و حتی بهبود حفظ و تعامل کاربر کمک کند. به عنوان مثال، تبلیغات پاداش به شما امکان میدهد ارز درونبرنامهای یا مواردی را برای تماشای تبلیغات ویدیویی در اختیار کاربران قرار دهید تا کاربران بتوانند به ارتفاعات جدیدی برسند که در غیر این صورت ممکن است گیر بیفتند و سرگردان شوند.
با این حال، ایجاد یک تجربه تبلیغاتی عالی آسان نیست. ممکن است سوالاتی از این قبیل داشته باشید: چند وقت یکبار باید این تبلیغات را نشان دهید؟ کجا و چه زمانی باید آنها را نشان دهید؟ جایزه باید چی باشه؟ متأسفانه، پاسخ از یک برنامه به برنامه دیگر و از مکان به مکان دیگر متفاوت است. هیچ پاسخی برای همه وجود ندارد.
با Google Analytics برای Firebase، AdMob، و چندین ابزار قدرتمند و در عین حال کاربردی دیگر که Firebase ارائه میدهد، تنظیم دقیق برنامه شما به روشی مبتنی بر داده بسیار آسانتر و کارآمدتر شده است. امروز، ما به شما نشان خواهیم داد که چگونه می توانید شروع کنید!
چیزی که خواهی ساخت
این کد لبه اولین مورد از سه کد لبه است که شما را در ساخت اپلیکیشنی به نام Awesome Drawing Quiz راهنمایی می کند، بازی که به بازیکنان اجازه می دهد نام نقاشی را حدس بزنند. این نشان می دهد که چگونه می توانید تبلیغات پاداش و خدمات Firebase را در بازی خود بگنجانید.
در این نرم افزار کد، Google Analytics را برای Firebase ادغام خواهید کرد تا برخی رویدادهای مهم برنامه را ضبط کنید. همچنین، نحوه خواندن تجزیه و تحلیل برنامه نشان داده شده در کنسول Firebase را یاد خواهید گرفت.
اگر در حین کار با این کد با مشکلاتی (اشکالات کد، خطاهای دستوری، عبارت نامشخص و غیره) مواجه شدید، لطفاً مشکل را از طریق پیوند گزارش یک اشتباه در گوشه سمت چپ پایین صفحه کد گزارش کنید.
چیزی که یاد خواهید گرفت
- چگونه Google Analytics را برای Firebase در برنامه خود راه اندازی کنید
- نحوه ثبت رویدادهای برنامه
- نحوه خواندن تجزیه و تحلیل برنامه نشان داده شده در کنسول Firebase
آنچه شما نیاز دارید
- اندروید استودیو نسخه 4.1+
- یک اکانت گوگل
- یک دستگاه آزمایشی با Android نسخه 5.0 و بالاتر با یک کابل USB برای اتصال دستگاه شما، یا یک شبیهساز Android دارای AVD (دستگاه مجازی Android) با تصویر سیستمی که از Play Store/Google API پشتیبانی میکند.
سطح تجربه خود را با AdMob چگونه ارزیابی می کنید؟
سطح تجربه خود را با Firebase چگونه ارزیابی می کنید؟
2. راه اندازی محیط توسعه
کد را دانلود کنید
برای دانلود تمام کدهای این کد لبه روی دکمه زیر کلیک کنید:
فایل فشرده دانلود شده را باز کنید. با این کار یک پوشه ریشه به نام admob-firebase-codelabs-android
باز می شود.
... یا مخزن GitHub را از خط فرمان کلون کنید.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-android
مخزن شامل چهار پوشه به شرح زیر است:
- 101-base - کد شروعی که در این Codelab خواهید ساخت.
- 101-complete_and_102-base — کد تکمیل شده برای این Codelab و شروع کننده برای Codelab 102.
- 102-complete - کد تکمیل شده برای کد 102.
برنامه شروع را وارد کنید
Android Studio را راه اندازی کنید و در صفحه خوش آمد ، "Import project" را انتخاب کنید. سپس دایرکتوری 101-base را از کدی که دانلود کرده اید انتخاب کنید.
اکنون باید پروژه را در اندروید استودیو باز کنید.
3. راهاندازی واحد تبلیغات ویدیویی با پاداش (اختیاری)
برنامه شروع کننده از قبل شامل یک واحد تبلیغات ویدیویی با پاداش اختصاصی برای راحتی شما است. اگر نمیخواهید یک مورد جدید در حساب AdMob خود ایجاد کنید، کاملاً آزاد هستید که از این مرحله رد شوید .
برای ایجاد یک برنامه جدید AdMob در حساب خود، لطفاً دستورالعملهای زیر را دنبال کنید:
- به کنسول AdMob بروید.
- از منوی برنامه ها ، روی « افزودن برنامه » کلیک کنید.
- وقتی از شما پرسیده شد «آیا برنامه خود را در Google Play یا اپ استور منتشر کردهاید»، به « خیر» پاسخ دهید.
- نام برنامه را "Awesome Drawing Quiz" بگذارید، "Android" را به عنوان پلتفرم انتخاب کنید، سپس روی " افزودن " کلیک کنید.
هنگامی که یک برنامه AdMob در حساب خود ایجاد کردید، مراحل توضیح داده شده در زیر را دنبال کنید تا یک واحد تبلیغات ویدیویی با پاداش جدید ایجاد کنید.
- روی منوی Apps در AdMob frontend کلیک کنید، سپس "Awesome Drawing Quiz" را از لیست برنامه انتخاب کنید.
- روی ADD AD UNIT کلیک کنید تا یک واحد تبلیغ ویدیوی پاداشی جدید ایجاد کنید.
- Rewarded را برای قالب تبلیغ انتخاب کنید.
- نام واحد تبلیغات را به دلخواه خود وارد کنید. سپس، مقدار پاداش را روی 1 تنظیم کنید، و مورد پاداش را روی "اشاره" (این پاداشی است که برنامه در حال حاضر به کاربران می دهد). برای ایجاد یک واحد تبلیغات ویدیوی پاداش دار جدید، روی ایجاد واحد تبلیغات کلیک کنید.
- پس از ایجاد موفقیت آمیز، دستورالعمل های مشابه زیر را مشاهده خواهید کرد:
- به پروژه Android برگردید و شناسه برنامه AdMob و شناسه واحد تبلیغات را به مواردی که در مرحله قبل ایجاد کرده اید به روز کنید.
strings.xml
<!-- Update the value with your AdMob app id -->
<string name="admob_app_id">YOUR_ADMOB_APP_ID</string>
GameActivity. kt
// Update the value with your Rewarded Video ad unit id
private const val AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";
4. پروژه Firebase را راه اندازی کنید
یک پروژه جدید از کنسول Firebase ایجاد کنید
- به کنسول Firebase بروید.
- Add Project را انتخاب کنید و نام پروژه خود را "Awesome Drawing Quiz" بگذارید. مطمئن شوید که دکمه رادیویی فعال کردن Google Analytics برای این پروژه روشن است.
- حساب Google Analytics را که قصد استفاده از آن را دارید انتخاب کنید. برای اکثر افراد، انتخاب گزینه Default Account for Firebase کافی است، اما اگر حساب Google Analytics دیگری دارید که میخواهید از آن استفاده کنید، آن را در اینجا انتخاب کنید.
- روی Create project کلیک کنید.
برنامه اندروید را اضافه کنید
- از صفحه نمای کلی پروژه جدید خود، روی افزودن Firebase به برنامه Android خود کلیک کنید.
- نام بسته codelab را وارد کنید: com.codelab.awesomedrawingquiz
- یک نام مستعار برای برنامه خود تنظیم کنید: مسابقه طراحی عالی
- فیلد SHA-1 را خالی بگذارید زیرا SHA-1 برای این پروژه مورد نیاز نیست.
- برای ثبت برنامه خود، ثبت برنامه را انتخاب کنید.
فایل google-services.json را به برنامه خود اضافه کنید
در مرحله بعد، صفحه ای از شما نمایش داده می شود که در آن می توانید یک فایل پیکربندی را دانلود کنید که حاوی تمام ابرداده های Firebase لازم برای برنامه شما است. روی Download google-service.json کلیک کنید و فایل را در آن کپی کنید دایرکتوری برنامه در پروژه شما
نسخه های وابستگی را اعلام کنید
بیایید با اضافه کردن نسخه هر وابستگی مورد نیاز برای ادغام Firebase در پروژه شروع کنیم. فایل dependencies.gradle
را که در ریشه پروژه قرار دارد باز کنید، سپس افزونه google-services، Firebase Analytics SDK و نسخه Firebase Core SDK را اضافه کنید.
وابستگی ها.gradle
ext {
...
// TODO: Declare google-services plugin version (101)
googleServicesPluginVersion = '4.3.4'
...
// TODO: Declare Firebase BOM version (101)
firebaseBomVersion = '26.2.0'
...
}
افزونه google-services را در برنامه خود اعمال کنید
افزونه google-services از فایل google-services.json
برای پیکربندی برنامه شما برای استفاده از Firebase استفاده می کند.
google-services را به عنوان مسیر کلاس در فایل build.gradle
که در دایرکتوری ریشه پروژه قرار دارد، اضافه کنید.
build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
...
dependencies {
classpath "com.android.tools.build:gradle:$androidPluginVersion"
// TODO: Add google-services plugin (101)
classpath "com.google.gms:google-services:$googleServicesPluginVersion"
...
}
}
...
سپس، افزونه google-services را با افزودن یک خط در فایل app/build.gradle
به صورت زیر اعمال کنید:
app/build.gradle
apply plugin: 'com.android.application'
// TODO: Apply google-services plugin (101)
apply plugin: 'com.google.gms.google-services'
android {
...
}
dependencies {
...
}
Firebase SDK را به پروژه اضافه کنید
هنوز در فایل app/build.gradle
خود، Analytics SDK را به وابستگی های برنامه اضافه کنید.
app/build.gradle
apply plugin: 'com.android.application'
android {
...
}
dependencies {
...
// TODO: Import the Firebase BoM (101)
implementation platform("com.google.firebase:firebase-bom:$firebaseBomVersion")
// COMPLETE: Add Firebase Analytics dependency (101)
implementation 'com.google.firebase:firebase-analytics-ktx'
...
}
...
پروژه ما را با فایل های gradle همگام سازی کنید
برای اطمینان از اینکه همه وابستگی ها در برنامه شما در دسترس هستند، پروژه خود را با فایل های Gradle همگام کنید. منوی File > Sync Project with Gradle Files را برای همگام سازی پروژه خود با فایل های Gradle انتخاب کنید.
5. AdMob را به پروژه Firebase پیوند دهید
برای پیوند دادن برنامه های خود به Firebase، مراحل زیر را کامل کنید.
- وارد حساب AdMob خود در https://apps.admob.com شوید.
- روی Apps در نوار کناری کلیک کنید.
- "آزمون طراحی عالی" را انتخاب کنید. اگر آن را در لیست برنامههای اخیر نمیبینید، میتوانید روی مشاهده همه برنامهها کلیک کنید تا فهرستی از همه برنامههایی را که به AdMob اضافه کردهاید جستجو کنید.
- روی تنظیمات برنامه در نوار کناری کلیک کنید.
- روی پیوند به Firebase کلیک کنید.
- گزینه «پیوند به یک پروژه Firebase موجود و ایجاد یک برنامه Firebase جدید» را انتخاب کنید. سپس پروژه "Awesome Drawing Quiz" را از منوی کشویی انتخاب کنید.
- پس از کلیک بر روی دکمه "ادامه" ، پیام "پیوند با موفقیت" را مشاهده خواهید کرد. برای اتمام، روی دکمه "انجام شد" کلیک کنید.
هنگامی که برنامه AdMob خود را به پروژه Firebase پیوند دادید، قفل برخی از ویژگیهای اضافی را در کنسول AdMob و Firebase به شرح زیر باز میکند:
کارت درآمد (AdMob)
از کارت درآمد، میتوانید نگاهی جامع به تمام جریانهای درآمد ممکن در یک مکان داشته باشید. منابع درآمد پشتیبانی شده به شرح زیر است:
- AdMob (تخمینی)
- شبکه های تبلیغاتی میانجی (مشاهده شده)
- خریدهای درون برنامه ای
- خریدهای تجارت الکترونیک
کارت معیارهای کاربر (AdMob)
از کارت معیارهای کاربر، می توانید ببینید که چگونه تغییرات در تجربه تبلیغاتی شما ممکن است بر رفتار کاربر تأثیر بگذارد.
گزارش تبلیغات با پاداش (AdMob)
گزارش آگهیهای پاداشدار معیارهای مختلفی را ارائه میکند که به ناشران کمک میکند بفهمند کاربران چگونه با تبلیغات پاداشدهی شده خود تعامل دارند.
کارت درآمد کل (Firebase)
پس از اینکه برنامه AdMob خود را به Firebase پیوند دادید، کارت درآمد مجموع در داشبورد Firebase درآمد حاصل از AdMob را همراه با خریدهای درون برنامه ای و خریدهای تجارت الکترونیک نمایش می دهد.
گزارش رویدادهای تبلیغاتی (Firebase)
رویدادهای مخصوص تبلیغات (رویدادهای کلیک، نمایش و پاداش) به طور خودکار جمعآوری میشوند و برای استفاده در Google Analytics برای Firebase در دسترس هستند.
6. پروژه را اجرا کنید
هنگامی که پروژه را کامپایل و اجرا کردید، با شروع برنامه، صفحه زیر را مشاهده خواهید کرد.
هنگامی که روی START A GAME کلیک کنید، یک نقاشی روی صفحه نمایش خواهید دید. ماموریت شما این است که با استفاده از اشاره نمایش داده شده در بالا، نام نقاشی را حدس بزنید، که از آن می توانید حرف اول و طول نام نقاشی را استنباط کنید.
اگر نمیدانید نام نقاشی چیست، میتوانید با کلیک کردن روی دکمه 'SKIP' از سطح رد شوید.
ممکن است یک سرنخ اضافی بخواهید که به شما در حدس زدن پاسخ کمک کند. میتوانید با کلیک کردن روی دکمه «HINT» و تماشای یک آگهی ویدیویی با پاداش ، سرنخ بیشتری دریافت کنید. پس از تکمیل تماشای آگهی، یک حرف اضافی به عنوان جایزه فاش می شود.
7. رویدادهای برنامه را اضافه کنید
برای درک عمیق سفر کاربر در مسابقه طراحی عالی، چند رویداد سفارشی که رفتار کاربر در بازی را ردیابی می کند را به شرح زیر تعریف می کنید:
نام رویداد | تحریک شده... | پارامترها |
شروع_بازی | زمانی که کاربر یک بازی جدید را شروع می کند | هیچ کدام |
سطح_شروع | هنگامی که یک کاربر یک سطح جدید (یک مسابقه طراحی جدید) را در یک مرحله شروع می کند. (6 سطح در یک مرحله وجود دارد) | سطح_نام |
سطح_اشتباه_پاسخ | هنگامی که یک کاربر پاسخ اشتباه ارسال می کند | سطح_نام |
ad_reward_prompt | هنگامی که کاربر روی دکمه اشاره ضربه می زند و از او خواسته می شود که یک تبلیغ ویدیویی با پاداش تماشا کند | ad_unit_id |
ad_reward_impression | زمانی که کاربر شروع به تماشای یک تبلیغ ویدیویی با پاداش می کند | ad_unit_id |
سطح_موفقیت | هنگامی که یک کاربر یک پاسخ صحیح ارسال می کند (سطح را پاک می کند) | سطح_نام، تعداد_تلاش ها، زمان_سپری شده_ثانیه، اشاره_استفاده شده |
سطح_شکست | هنگامی که یک کاربر از یک سطح می گذرد | سطح_نام، تعداد_تلاش ها، زمان_سپری شده_ثانیه، اشاره_استفاده شده |
بازی_کامل | وقتی بازی تمام شد | تعداد_پاسخ_صحیح |
شرح هر پارامتر مرتبط با هر رویداد به شرح زیر است:
نام رویداد | نام پارامتر | توضیحات |
سطح_شروع | سطح_نام | نام نقاشی نشان داده شده در سطح (به عنوان مثال، "موز") |
سطح_اشتباه_پاسخ | سطح_نام | هنگامی که یک کاربر پاسخ اشتباه ارسال می کند |
ad_reward_prompt | ad_unit_id | شناسه واحد تبلیغاتی که برای نمایش یک آگهی ویدیویی با پاداش استفاده میشود |
ad_reward_impression | ad_unit_id | شناسه واحد تبلیغاتی که برای نمایش یک آگهی ویدیویی با پاداش استفاده میشود |
سطح_موفقیت | سطح_نام | نام نقاشی نشان داده شده در سطح (به عنوان مثال، "موز") |
سطح_موفقیت | تعداد_تلاش ها | تعداد تلاش های انجام شده برای پاک کردن یک سطح |
سطح_موفقیت | elapsed_time_sec | زمان سپری شده برای پاک کردن یک سطح، در چند ثانیه |
سطح_موفقیت | اشاره_استفاده شده | اینکه آیا کاربر از یک اشاره استفاده کرده است (یک تبلیغ ویدیویی با پاداش را تماشا کرده است) یا نه برای پاک کردن یک سطح (1: از یک اشاره استفاده کرده است / 0: یک سطح را بدون اشاره پاک کرده است) |
سطح_شکست | سطح_نام | نام نقاشی نشان داده شده در سطح (به عنوان مثال، "موز") |
سطح_شکست | تعداد_تلاش ها | تعداد تلاش های انجام شده برای پاک کردن یک سطح |
سطح_شکست | elapsed_time_sec | زمان سپری شده برای پاک کردن یک سطح، در چند ثانیه |
سطح_شکست | اشاره_استفاده شده | اینکه آیا کاربر از یک اشاره استفاده کرده است (یک تبلیغ ویدیویی با پاداش را تماشا کرده است) یا نه برای پاک کردن یک سطح (1: از یک اشاره استفاده کرده است / 0: یک سطح را بدون اشاره پاک کرده است) |
بازی_کامل | تعداد_پاسخ_صحیح | تعداد سطوح پاک شده در بازی |
یک کلاس کمکی برای ثبت رویدادهای سفارشی ایجاد کنید
برای ثبت آسان رویداد تجزیه و تحلیل، یک کلاس کمکی برای مدیریت رویدادهای سفارشی ایجاد خواهید کرد.
ابتدا یک فایل Kotlin جدید (نه یک کلاس Kotlin) ایجاد کنید و نام آن را QuizAnalytics.kt
در بسته com.codelab.awesomedrawingquiz
بگذارید. فیلدهایی ایجاد کنید که نام رویدادهای سفارشی و پارامترهای آنها را مشخص می کند.
QuizAnalytics.kt
private const val EVENT_AD_REWARD_PROMPT = "ad_reward_prompt"
private const val EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression"
private const val EVENT_LEVEL_FAIL = "level_fail"
private const val EVENT_LEVEL_SUCCESS = "level_success"
private const val EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer"
private const val EVENT_GAME_START = "game_start"
private const val EVENT_GAME_COMPLETE = "game_complete"
private const val PARAM_AD_UNIT_ID = "ad_unit_id"
private const val PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec"
private const val PARAM_HINT_USED = "hint_used"
private const val PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts"
private const val PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers"
در مرحله بعد، توابع برنامه افزودنی را اضافه کنید که به شما کمک می کند رویدادهای سفارشی را در بازی خود ثبت کنید. توجه داشته باشید که اکثر رویدادهای سفارشی شامل پارامترهایی هستند تا زمینه بیشتری از هر رویداد داشته باشید. همچنین توجه داشته باشید که چند نام و پارامتر رویداد ( FirebaseAnalytics.Event.LEVEL_NAME
و FirebaseAnalytics.Event.LEVEL_START
) قبلاً توسط Analytics تعریف شده است، بنابراین ما از آنها استفاده خواهیم کرد.
QuizAnalytics.kt
...
fun FirebaseAnalytics.logGameStart() = logEvent(EVENT_GAME_START, null)
fun FirebaseAnalytics.logLevelStart(levelName: String) {
logEvent(FirebaseAnalytics.Event.LEVEL_START) {
param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
}
}
fun FirebaseAnalytics.logLevelWrongAnswer(levelName: String) {
logEvent(EVENT_LEVEL_WRONG_ANSWER) {
param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
}
}
fun FirebaseAnalytics.logAdRewardPrompt(adUnitId: String) {
logEvent(EVENT_AD_REWARD_PROMPT) {
param(PARAM_AD_UNIT_ID, adUnitId)
}
}
fun FirebaseAnalytics.logAdRewardImpression(adUnitId: String) {
logEvent(EVENT_AD_REWARD_IMPRESSION) {
param(PARAM_AD_UNIT_ID, adUnitId)
}
}
fun FirebaseAnalytics.logLevelSuccess(
levelName: String,
numberOfAttempts: Int,
elapsedTimeSec: Int,
hintUsed: Boolean
) {
logEvent(EVENT_LEVEL_SUCCESS) {
param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
param(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts.toLong())
param(PARAM_ELAPSED_TIME_SEC, elapsedTimeSec.toLong())
param(PARAM_HINT_USED, if (hintUsed) 1 else 0)
}
}
fun FirebaseAnalytics.logLevelFail(
levelName: String,
numberOfAttempts: Int,
elapsedTimeSec: Int,
hintUsed: Boolean
) {
logEvent(EVENT_LEVEL_FAIL) {
param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
param(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts.toLong())
param(PARAM_ELAPSED_TIME_SEC, elapsedTimeSec.toLong())
param(PARAM_HINT_USED, if (hintUsed) 1 else 0)
}
}
fun FirebaseAnalytics.logGameComplete(
numberOfCorrectAnswers: Int
) {
logEvent(EVENT_GAME_COMPLETE) {
param(PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers.toLong())
}
}
رویدادهای تجزیه و تحلیل را در بازی ثبت کنید
در کلاس GameViewModel
، یک ویژگی جدید برای نمونه FirebaseAnalytics
اضافه کنید.
GameViewModel.kt
class GameViewModel(
...
// TODO: Accept FirebaseAnalytics instance as a parameter (101)
private val analytics: FirebaseAnalytics,
) : ViewModel() {
...
}
در مرحله بعد، در کلاس AwesomeDrawingQuizViewModelFactory
، یک ویژگی جدید اضافه کنید، همانطور که قبلا در GameViewModel
انجام دادید.
AwesomeDrawingQuizViewModelFactory.kt
class AwesomeDrawingQuizViewModelFactory(
...
// TODO: Accept FirebaseAnalytics instance as a parameter (101)
private val analytics: FirebaseAnalytics,
) : ViewModelProvider.Factory {
...
}
در مرحله بعد، در کلاس AwesomeDrawingQuiz
، تابع provideFirebaseAnalytics()
را اضافه کنید و تابع provideViewModelFactory()
را به روز کنید تا نمونه FirebaseAnalytics
به AwesomeDrawingViewModelFactory
ارسال شود.
AwesomeDrawingQuiz.kt
class AwesomeDrawingQuiz : Application() {
...
fun provideViewModelFactory() = AwesomeDrawingQuizViewModelFactory(
this,
provideGameSettings(),
// TODO: Pass FirebaseAnalytics instance as a parameter (101)
provideFirebaseAnalytics(),
)
// TODO: Provide FirebaseAnalytics instance (101)
private fun provideFirebaseAnalytics() = Firebase.analytics
...
}
اکنون شما آماده اجرای رویدادهای سفارشی هستید. ابتدا در تابع startGame()
logGameStart()
را فراخوانی کنید تا نشان دهید بازی شروع شده است.
از آنجایی که logGameStart()
یک تابع پسوندی از کلاس FirebaseAnalytics
است، می توانید آن را از نمونه کلاس FirebaseAnalytics
فراخوانی کنید.
GameViewModel.kt
fun startGame() {
...
// TODO: Log game_start event (101)
analytics.logGameStart()
...
}
سپس در تابع checkAnswer()
رویدادهای level_success
و level_wrong_answer
را اضافه کنید.
GameViewModel.kt
fun checkAnswer(userAnswer: String) {
...
if (correct) {
...
// TODO: Log level_success event (101)
analytics.logLevelSuccess(
levelName = drawing.word,
numberOfAttempts = numAttempts,
elapsedTimeSec = elapsedTimeInSeconds,
hintUsed = isHintUsed,
)
...
} else {
// TODO: Log level_wrong_answer event (101)
analytics.logLevelWrongAnswer(levelName = drawing.word)
...
}
}
سپس در تابع skipLevel()
رویداد level_fail را اضافه کنید تا سطح را به عنوان ناموفق علامت گذاری کنید.
GameViewModel.kt
fun skipLevel() {
...
// TODO: Log level_fail event (101)
analytics.logLevelFail(
levelName = drawing.word,
numberOfAttempts = numAttempts,
elapsedTimeSec = elapsedTimeInSeconds,
hintUsed = isHintUsed,
)
...
}
در مرحله بعد، توابع logAdRewardPrompt()
و logAdRewardImpression()
را برای ردیابی رفتار کاربر در رابطه با تبلیغ ویدیویی پاداش دار پیاده سازی کنید.
GameViewModel.kt
fun logAdRewardPrompt(adUnitId: String) {
// TODO: Log ad_reward_prompt event (101)
analytics.logAdRewardPrompt(adUnitId)
}
fun logAdRewardImpression(adUnitId: String) {
// TODO: Log ad_reward_impression event (101)
analytics.logAdRewardImpression(adUnitId)
}
در نهایت، تابع requestNewDrawing()
و finishGame()
را تغییر دهید تا رویدادهای سفارشی level_start و game_complete را اضافه کنید.
GameViewModel.kt
private fun requestNewDrawing() {
...
drawingRequestDisposable = drawingDao.getRandomDrawings(seenWords)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { d ->
...
// TODO: Log level_start event (101)
analytics.logLevelStart(d.word)
...
}
}
private fun finishGame() {
// TODO: Log game_complete event (101)
analytics.logGameComplete(numCorrectAnswers)
...
}
8. رویدادهای تجزیه و تحلیل اشکال زدایی
میتوانید از DebugView در کنسول Firebase برای تأیید اینکه رویدادها به درستی ثبت میشوند استفاده کنید. DebugView شما را قادر می سازد تا داده های رویداد خام ثبت شده توسط برنامه شما را در دستگاه های توسعه تقریباً در زمان واقعی مشاهده کنید.
این برای اهداف اعتبارسنجی در طول مرحله ابزار دقیق توسعه بسیار مفید است و می تواند به شما در کشف هر گونه خطا در اجرای تجزیه و تحلیل خود کمک کند.
حالت اشکال زدایی را فعال کنید
به طور کلی، رویدادهای ثبت شده در برنامه شما در یک دوره زمانی تقریباً یک ساعته با هم جمع می شوند و با هم آپلود می شوند. برای تأیید اجرای تجزیه و تحلیل خود در لحظه، باید حالت Debug را در دستگاه توسعه خود فعال کنید تا رویدادها را با حداقل تأخیر آپلود کند.
برای فعال کردن حالت Debug، مراحل زیر را انجام دهید:
- پنجره ابزار ترمینال را در Android Studio باز کنید ( نما > Tool Windows > Terminal ).
- دستور زیر را اجرا کنید (مطمئن شوید که دستگاه اندرویدی آزمایشی به رایانه شما متصل است یا شبیه ساز اندروید اجرا می شود):
adb shell setprop debug.firebase.analytics.app com.codelab.awesomedrawingquiz
این رفتار تا زمانی که با اجرای دستور زیر به طور صریح حالت Debug را غیرفعال نکنید ادامه دارد:
adb shell setprop debug.firebase.analytics.app .none.
رویدادهای تجزیه و تحلیل را با DebugView اشکال زدایی کنید
هنگامی که حالت Debug را در دستگاه آزمایشی خود فعال کردید، به پروژه خود در کنسول Firebase بروید و از منو گزینه Analytics > DebugView را انتخاب کنید. سپس، در دستگاه آزمایشی خود، بازی خود را انجام دهید تا رویدادهای ثبت شده و نمایش داده شده در گزارش DebugView را مشاهده کنید.
با کلیک بر روی نام رویداد می توانید به اطلاعات دقیق در مورد هر رویداد دسترسی پیدا کنید. به عنوان مثال، تصویر زیر جزئیات پارامتر مرتبط با رویداد level_start
را نشان می دهد.
لطفاً برای جزئیات بیشتر به مقاله مرکز راهنمایی DebugView مراجعه کنید.
9. ابعاد و معیارهای سفارشی را فعال کنید
به طور پیش فرض، Google Analytics برای Firebase تعداد کل رویدادها را جمع آوری می کند. برای هر پارامتر رویدادی که به آن علاقه دارید، باید به صراحت گزارش آن پارامتر را روشن کنید. سپس Google Analytics برای Firebase میتواند کارتهای اضافی را برای نمایش آمار پارامترهای سفارشی نمایش دهد.
برای ثبت ابعاد و معیارهای سفارشی:
- به کنسول Firebase بروید و پروژه Awesome Drawing Quiz را که قبلا ایجاد کردید انتخاب کنید.
- روی Analytics > رویدادها از منوی پیمایش کلیک کنید.
- روی مدیریت تعاریف سفارشی کلیک کنید.
- در برگه ابعاد سفارشی، روی ایجاد ابعاد سفارشی کلیک کنید.
- در قسمت نام پارامتر رویداد، level_name را وارد کرده و برای تکمیل ثبت پارامتر روی ذخیره کلیک کنید.
- سپس، برگه معیارهای سفارشی را انتخاب کنید و روی ایجاد معیارهای سفارشی کلیک کنید.
- نام پارامتر، واحد اندازه گیری پارامترهای زیر را وارد کنید.
نام پارامتر | نوع پارامتر | واحد اندازه گیری |
تعداد_تلاش ها | شماره | استاندارد |
اشاره_استفاده شده | شماره | استاندارد |
elapsed_time_sec | شماره | ثانیه ها |
تعداد_پاسخ_صحیح | شماره | استاندارد |
10. از گزارش رویداد بینش دریافت کنید
همانطور که چند رویداد را در بازی اضافه کرده اید، باید بتوانید به سوالات مربوط به رفتار کاربر بازی پاسخ دهید. در اینجا چند نکته وجود دارد که می توانید از گزارش رویدادهای Firebase دریافت کنید.
کدام سطح بیشترین تعداد پاسخ اشتباه را دارد؟
برای پاسخ به این سوال، باید دریابید که در هر سطح چند رویداد level_wrong_answer
راه اندازی شده است.
روی level_wrong_answer
از گزارش رویدادها کلیک کنید. در گزارش رویداد level_wrong_answer
، کارت level_name
را پیدا کنید. مقادیر مرتبط با پارامتر level_name
را در آن کارت به صورت زیر خواهید دید.
با توجه به اسکرین شات بالا، به راحتی می توانید متوجه شوید که افق بیشترین تعداد پاسخ اشتباه را دارد، که به این معنی است که برای کاربران در مقایسه با سطوح دیگر دشوار است.
با استفاده از بینشی که از اینجا به دست آوردهاید، میتوانید تصمیم بگیرید که سطوح دشواری را برای کاربران مبتدی ارائه نکنید تا نرخ ماندگاری بالایی داشته باشند.
به طور متوسط چند تلاش برای پاکسازی یک سطح انجام شد؟
در مسابقه طراحی عالی ، کاربران می توانند پاسخ هر سطح را به هر میزان که می خواهند ارسال کنند.
از آنجا که شما گزارش پارامتر را در مورد پارامتر number_of_attempts
در رویداد level_success
فعال کردهاید، میتوانید معیارهای دقیق آن پارامتر را ببینید.
روی رویداد level_success
از گزارش رویدادها کلیک کنید. در گزارش رویداد level_success
، کارت number_of_attemps
را پیدا کنید. میانگین تعداد تلاشها روی آن کارت را به صورت زیر میبینید:
می توانید از بینش موجود در اینجا برای بهینه سازی درجه سختی بازی به طور متوسط استفاده کنید. به عنوان مثال، اگر میانگین تعداد تلاش ها خیلی نزدیک به 1 باشد، ممکن است بازی را کمی چالش برانگیزتر کنید.
آیا کاربران سعی کردند با دریافت راهنمایی، سوال را حل کنند، حتی اگر در نهایت موفق به پاک کردن یک سطح نشدند؟
هنگامی که کاربر تصمیم می گیرد از یک سطح بگذرد، یک رویداد level_fail
راه اندازی می شود. دلایل زیادی برای تصمیم کاربر وجود دارد.
با این حال، از آنجایی که بازی میتواند پس از تماشای یک تبلیغ ویدیویی پاداشدار به آنها اشارهای بدهد، مهم است که بدانیم آیا کاربر سعی کرده سطح را با کمک راهنمایی پاک کند یا خیر.
روی رویداد level_fail
از گزارش رویدادها کلیک کنید. در گزارش رویداد level_fail
، کارت hint_used
را پیدا کنید. میانگین تعداد پارامترهای رویداد hint_used
را خواهید دید. توجه داشته باشید که مقدار پارامتر اگر از یک اشاره استفاده شده باشد 1 و اگر از یک اشاره استفاده نشده است 0 است.
اگر اعداد موجود در کارت hint_used
نزدیک به 0 باشند، این علامت این است که پاداش (اشاره) به اندازه کافی برای این کاربران مفید نیست. همچنین، در حال از دست دادن فرصت افزایش درآمد حاصل از تبلیغات ویدیویی با پاداش هستید.
بنابراین، باید در نظر داشته باشید که پاداش بزرگتری ارائه دهید، تا کاربران بتوانند عمیقتر با بازی درگیر شوند و درآمد حاصل از تبلیغات ویدیویی با پاداش را برای شما افزایش دهند.
به طور متوسط چند سطح در هر بازی پاک شد؟
در مجموع 6 سطح برای هر بازی در مسابقه طراحی عالی وجود دارد. هنگامی که کاربر 6 سطح را به پایان رساند (مهم نیست که هر سطح را پاک یا ناموفق کرده باشد)، یک رویداد game_complete
با number_of_correct_answers
به عنوان پارامتر راه اندازی می شود. پارامتر number_of_correct_answers
تعداد سطوحی را نشان می دهد که کاربر در آن ها پاسخ صحیح را ارائه کرده است.
روی رویداد game_complete
از گزارش رویدادها کلیک کنید. در گزارش رویداد game_complete، کارت number_of_correct_answers
را پیدا کنید. میانگین تعداد پارامترهای رویداد number_of_correct_answers
را خواهید دید.
اگر میانگین تعداد سطوح پاکشده خیلی کم است، باید مرتبسازی مجدد سطوح را در بازی در نظر بگیرید تا به افراد کمک کنید تا سطوح قبلی را راحتتر شکست دهند تا بتوانند بدون از دست دادن علاقه به بازی شما ادامه دهند.
11. همه چیز تمام شد!
شما AdMob+Firebase 101 Android Codelab را تکمیل کرده اید. شما می توانید کد تکمیل شده برای این Codelab را در اینجا پیدا کنید پوشه 101-complete_and_102-base .
در بخش بعدی AdMob+Firebase Codelab، نحوه استفاده از قیف برای تجسم جریان رویداد برنامه را خواهید آموخت. قسمت بعدی همچنین نحوه استفاده از Remote Config و A/B تست برای بهینه سازی مقدار پارامتر در بازی بدون به روز رسانی برنامه را پوشش می دهد.