AdMob+Firebase 102 Android: رفتار برنامه را بدون به‌روزرسانی برنامه تنظیم کنید

1. مقدمه

بیایید فرض کنیم که پس از انتشار برنامه خود در فروشگاه Play، باید مقادیر برخی از پارامترها را در برنامه خود تنظیم کنید. به طور معمول، شما باید نسخه جدیدی از برنامه خود را مجدداً منتشر کنید و کاربران نیز باید برنامه را در تلفن خود به روز کنند.

به طور کلی، اگر بخواهید تغییرات طولانی مدت در برنامه خود ایجاد کنید، به روز رسانی برنامه کار خواهد کرد. با این حال، اگر بخواهید مقدار برخی از پارامترها را در برنامه خود مرتباً تنظیم کنید، چه؟ یا، اگر بخواهید چند آزمایش را برای یافتن پیکربندی برنامه بهینه اجرا کنید، چه؟

در این موارد، به‌روزرسانی‌های برنامه به خوبی کار نمی‌کنند. زیرا تا زمانی که آپدیت به طور کامل برای کاربران منتشر شود مدتی زمان نیاز دارد. همچنین، اجرای آزمایش ها در چندین نسخه برنامه بسیار چالش برانگیز است.

همچنین، چگونه می توانید تعیین کنید که آیا سفر کاربر برنامه مطابق با هدف کار می کند؟ ممکن است به نظرات کاربران در کنسول Play تکیه کنید. با این حال، ممکن است به اندازه کافی دقیق نباشد تا بتوان تصمیم روشنی گرفت.

اگر در حین کار با این کد با مشکلاتی (اشکالات کد، خطاهای دستوری، عبارت نامشخص و غیره) مواجه شدید، لطفاً مشکل را از طریق پیوند گزارش یک اشتباه در گوشه سمت چپ پایین صفحه کد گزارش کنید.

چیزی که یاد خواهید گرفت

  • چگونه یک قیف در Google Analytics برای Firebase ایجاد کنیم
  • نحوه استفاده از Firebase Remote Config
  • نحوه اجرای تست Firebase A/B

آنچه شما نیاز دارید

  • اندروید استودیو نسخه 4.1+
  • یک اکانت گوگل
  • یک دستگاه آزمایشی با Android نسخه 5.0 و بالاتر با کابل USB برای اتصال دستگاه شما، یا شبیه‌ساز Android دارای AVD (دستگاه مجازی Android) با تصویر سیستمی که از Play Store/Google API پشتیبانی می‌کند.

سطح تجربه خود را با AdMob چگونه ارزیابی می کنید؟

تازه کار متوسط مسلط

سطح تجربه خود را با Firebase چگونه ارزیابی می کنید؟

تازه کار متوسط مسلط

2. راه اندازی محیط توسعه

کد را دانلود کنید

برای دانلود تمام کدهای این کد لبه روی دکمه زیر کلیک کنید:

فایل فشرده دانلود شده را باز کنید. با این کار یک پوشه ریشه به نام admob-firebase-codelabs-android-master باز می شود.

... یا مخزن GitHub را از خط فرمان کلون کنید.

$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-android

مخزن شامل چهار پوشه به شرح زیر است:

  • android_studio_folder.png 101-base - کد شروعی که در این Codelab خواهید ساخت.
  • android_studio_folder.png 101-complete_and_102-base — کد تکمیل شده برای این Codelab و شروع کننده برای Codelab 102.
  • android_studio_folder.png 102-complete - کد تکمیل شده برای کد 102.

برنامه شروع را وارد کنید

Android Studio را راه اندازی کنید، "Import project" را در صفحه خوش آمد انتخاب کنید. سپس دایرکتوری 101-complete_and_102-base را از کدی که دانلود کرده اید انتخاب کنید.

اکنون باید پروژه را در اندروید استودیو باز کنید.

فایل پیکربندی Firebase را به پروژه اندروید اضافه کنید

  1. از صفحه نمای کلی پروژه مسابقه طراحی عالی ، روی نماد تنظیمات کلیک کنید. 9bacb5ada7cbaaf6.png
  2. در زبانه عمومی ، برنامه Android را برای دانلود فایل google-service.json انتخاب کنید.
  3. فایل پیکربندی را به داخل منتقل کنید android_studio_folder.png دایرکتوری برنامه در پروژه شما 797cde1881a38fdf.png

3. پروژه Firebase را از کنسول باز کنید

قبل از رفتن به مرحله بعدی، پروژه را از کنسول Firebase که در مرحله «Setup Firebase Project» در AdMob+Firebase 101 Codelab ایجاد کرده‌اید، باز کنید.

e0a028059c9e00cb.png

4. یک قیف از رویدادهای برنامه ایجاد کنید

ممکن است چند رویداد برنامه وجود داشته باشد که برای ردیابی فعالیت کاربر در داخل برنامه اضافه کرده اید. با خواندن گزارش هر یک از رویدادهای برنامه، می توانید جزئیات مرتبط با رویداد مانند تعداد کل، تعداد میانگین به ازای هر کاربر، جمعیت شناسی و غیره را دریافت کنید.

با این حال، اگر بخواهید به جای تمرکز روی یک رویداد خاص، میزان تکمیل یک سری از رویدادها را ببینید، چه؟ در Google Analytics برای Firebase، می‌توانید از Funnel برای تجسم و بهینه‌سازی نرخ تکمیل مجموعه‌ای از رویدادهای برنامه استفاده کنید.

یک قیف ایجاد کنید

برای ایجاد یک قیف:

  1. به کنسول Firebase بروید و پروژه Awesome Drawing Quiz را که قبلا ایجاد کردید انتخاب کنید.
  2. روی Funnels کلیک کنید.
  3. روی NEW FUNNEL کلیک کنید.
  4. یک نام و توضیحات برای قیف وارد کنید.
  5. دو رویداد اولی را که می خواهید به عنوان مراحل در قیف استفاده کنید انتخاب کنید.
  6. برای هر مرحله اضافی، روی افزودن یک رویداد دیگر کلیک کنید و یک رویداد را انتخاب کنید.
  7. روی CREATE کلیک کنید.

با انجام مراحل بالا، قیف های زیر را ایجاد کنید:

شماره 1 نام قیف: میزان موفقیت سطح رویدادها: level_start ، level_success d3bc78ef61a261d7.png

شماره 2 نام قیف: نرخ تکمیل آگهی با پاداش رویدادها: ad_reward_prompt , ad_reward_impression , ad_reward 45c9542dfa663014.png

شماره 3 نام قیف: نرخ اتمام بازی رویدادها: game_start ، game_complete dab25e8501746d5f.png

مشاهده تجزیه و تحلیل قیف

هنگامی که تعدادی قیف ایجاد کردید، می توانید در منوی Funnels در کنسول Firebase به آن دسترسی داشته باشید. با کلیک بر روی نام قیف در لیست، می توانید تجزیه و تحلیل دقیق هر قیف را مشاهده کنید.

620c0e84587c8ad4.png

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

c889f9b6ece15847.png

از اسکرین شات بالا، می‌توانید درصد کاربرانی را که پس از شروع یک سطح (رویداد level_success ) یک سطح را پاک کرده‌اند (رویداد level_start راه‌اندازی کرده‌اند) مشاهده کنید. در اینجا، می توانید ببینید که 46.2٪ از کاربران سطح را پاک کرده اند.

هنگامی که روی تعداد رویداد کلیک کنید، معیارهای بر اساس تعداد رویدادها را به صورت زیر نشان می دهد:

d044fb7b07e6e0d9.png

بر اساس معیارهای موجود در اسکرین شات بالا، 116 تلاش (رویداد level_start را راه اندازی کرد) و 57 پاکسازی (رویداد level_success را شروع کرد) در طول دوره انجام شد.

از آنجایی که میزان تکمیل بر اساس رویدادها (49.1%) کمی بیشتر از نرخ بر اساس کاربر (46.2%) است، می توان گفت که تعداد کمی از افراد هستند که عملکرد بهتری نسبت به بقیه دارند.

5. Remote Config را در برنامه ادغام کنید

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

با استفاده از Remote Config در Firebase، می‌توانید این مقادیر را بدون به‌روزرسانی برنامه تنظیم کنید، به این معنی که می‌توانید رفتار برنامه را بدون ایجاد مزاحمت برای کاربران خود با مجبور کردن آنها به دانلود به‌روزرسانی تغییر دهید.

در این Codelab، یاد می‌گیرید که چگونه با استفاده از Remote Config، مقدار پاداش (تعداد حروفی که باید پس از تماشای یک تبلیغ ویدیویی با پاداش افشا شود) را بدون به‌روزرسانی برنامه قابل تنظیم کنید.

Remote Config را به وابستگی برنامه اضافه کنید

بیایید با افزودن Firebase Remote Config به وابستگی برنامه شروع کنیم.

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 انتخاب کنید.

مقدار پیش فرض پارامتر Remote Config را تنظیم کنید

واکشی مقادیر از Remote Config نیاز به اتصال شبکه دارد. برای مواردی که شبکه در دسترس نیست، باید یک مقدار پیش فرض برای هر پارامتر Remote Config تعریف کنید.

فایل 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 نام پارامتر موجود در Remote Config است.

مقدار پاداش را از Remote Config دریافت کنید

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 را تغییر دهید تا مقدار پاداش را از Remote Config دریافت کنید.

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"
  }
}

یک پارامتر Remote Config از کنسول ایجاد کنید

در مرحله بعد، یک پارامتر Remote Config جدید برای مقدار پاداش ایجاد می کنید تا بتوانید مقدار آن را در لحظه تنظیم کنید.

برای ایجاد یک پارامتر جدید، به کنسول Firebase بروید، سپس پروژه Awesome Drawing Quiz را که قبلا ایجاد کرده‌اید انتخاب کنید. روی دکمه Remote Config -> ADD YOUR FIRST PARAMETER کلیک کنید.

7f52617141c53726.png

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

cbc771fd1685b29c.png

روی دکمه Publish Changes کلیک کنید تا تغییر برای کاربران زنده شود.

d6a6aa4a60e06ee9.png

6. رفتار برنامه را با Remote Config تغییر دهید

اکنون می‌توانید مقدار پاداش در مسابقه طراحی شگفت‌انگیز را در کنسول Firebase بدون نیاز به به‌روزرسانی کد برنامه پیکربندی کنید.

در این بخش، شما قصد دارید مقدار پاداش را از 1 به 2 تغییر دهید تا برنامه دو کاراکتر دیگر را به عنوان یک اشاره پس از تماشای یک تبلیغ پاداش نشان دهد.

مقدار پیش فرض پارامتر reward_amount را به روز کنید

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

9a9bd8a26a39bfe3.png

روی دکمه انتشار تغییرات کلیک کنید تا تغییرات به صورت زنده در اختیار کاربران قرار گیرد.

d6a6aa4a60e06ee9.png

تغییر رفتار برنامه را تأیید کنید

برای تأیید تغییر رفتار برنامه، پروژه را دوباره اجرا کنید. پس از اتمام تماشای یک تبلیغ پاداش، متوجه خواهید شد که برنامه اکنون دو حرف را به عنوان جایزه نشان می دهد، همانطور که ما در کنسول Remote Config پیکربندی کردیم.

قبل از تماشای یک آگهی با پاداش

دو حرف اضافی را به عنوان پاداش نشان داد

7. آزمایش را برای بهینه سازی مقدار پاداش ایجاد کنید

اکنون می‌توانید مقدار پاداش را بدون نیاز به انتشار به‌روزرسانی برنامه تغییر دهید. با این حال، چگونه می توانید تعیین کنید که مقداری که تغییر داده اید برای برنامه خوب است؟

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

آزمایش را طراحی کنید

قبل از ایجاد یک آزمایش جدید، باید یک هدف یا هدف واضح از آزمایش تعیین کنید. قبل از ایجاد یک آزمایش جدید، حتماً چک لیست زیر را مرور کنید.

  • چه: چه چیزی را می خواهید بهینه کنید؟ (به عنوان مثال، دشواری بازی، زمان بندی/قابلیت مشاهده آگهی و غیره)
  • چرا: هدف تجاری شما از اجرای آزمایش چیست؟ (به عنوان مثال، برای به حداکثر رساندن درآمد تبلیغات، افزایش حفظ و غیره)
  • چه کسی: چه کسی باید در آزمایش شرکت کند؟ (به عنوان مثال، همه کاربران، مخاطبان کاربر خاص، و غیره)

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

آزمایش را ایجاد کنید

پروژه Awesome Drawing Quiz را از کنسول Firebase باز کنید. منوی A/B Testing را انتخاب کنید، سپس روی دکمه ایجاد آزمایش کلیک کنید.

Remote Config را برای ایجاد آزمایش Remote Config انتخاب کنید.

f38a85328ab54e7e.png

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

15d552adb61c0b08.png

گزینه های هدف گذاری را پیکربندی کنید. در این Codelab، شما 100٪ از کاربران مسابقه طراحی عالی را هدف قرار خواهید داد.

61b316741a63050f.png

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

694641b57d90ff65.png

در نهایت، گروه کنترل و نوع را تنظیم کنید تا بتوانید بفهمید کدام گروه عملکرد بهتری دارد. reward_amount از گروه کنترل انتخاب کنید و مقدار آن را بدون تغییر بگذارید. برای گروه متغیر، آن را به عنوان "پاداش کمتر" نامگذاری کنید، سپس مقدار reward_amount را به 1 تغییر دهید.

10ed7f5b06858519.png

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

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

ae6477ce79f6265d.png

آزمایش را اجرا کنید

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

7131bf9b4fa74fa5.png

8. آزمایش را مدیریت کنید

مشاهده پیشرفت آزمایش

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

8a7009bdd8871d95.png

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

a4e7ca3e3f4711cd.png

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

e2d00fc27c053fd3.png

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

c3859d642f85cc52.png

رهبر را برای همه کاربران معرفی کنید

بعد از اینکه آزمایش طولانی شد و شما یک رهبر یا نوع برنده دارید، می توانید آزمایش را برای 100٪ از کاربران اجرا کنید. هنگامی که تست A/B یک رهبر واضح پیدا کرد، شما را تشویق می‌کند تا نسخه اصلی را برای همه کاربران عرضه کنید.

86cb6a6c07516634.png

با این حال، حتی اگر آزمایش یک رهبر واضح را اعلام نکرده باشد، همچنان می‌توانید انتخاب کنید که یک نسخه را برای همه کاربران عرضه کنید.

در صفحه جزئیات آزمایش، روی منوی زمینه کلیک کنید ( 73afe611adf58774.png )، و سپس روی Roll out variant کلیک کنید.

374e1c72be1d0656.png

یک نوع را برای ارائه برای همه کاربران انتخاب کنید، سپس روی دکمه Review in Remote Config کلیک کنید تا تغییرات را قبل از ایجاد تغییر در Remote Config بررسی کنید.

e176f6e6a72c754.png

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

d65d545620ce93f6.png

9. همه چیز تمام شد!

شما AdMob+Firebase 102 Android Codelab را تکمیل کرده اید. شما می توانید کد تکمیل شده برای این Codelab را در اینجا پیدا کنید android_studio_folder.png پوشه 102 کامل .