افزودن ویژگی‌های مختص محصول پاداش‌دار

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

این سند توضیح می‌دهد چگونه کارکردهای مختص محصولات پاداش‌دار را پیاده‌سازی کنید. بخش نمودار گردش کار در این صفحه این فرایند را نشان می‌دهد.

محصولات پاداش‌دار برنامه‌تان را شناسایی کنید

محصولات پاداش‌دار SkuType INAPP دارند. برای اطمینان از اینکه کاربران می‌توانند چندین آگهی را تماشا کنند و چندین پاداش دریافت کنند، محصولات باید مصرف شوند.

قبل‌از اینکه بتوانید محصول پاداش‌دار را به کاربر ارائه دهید، باید SkuDetails را برای محصول دریافت کنید. برای انجام این کار، با querySkuDetailsAsync() با SkuType.INAPP به‌عنوان نوع محصول تماس بگیرید.

اعلام کردن آگهی‌های مناسب سن

برای کمک به تسهیل رعایت تعهدات قانونی مربوط به کودکان و کاربران زیر سن قانونی، ازجمله قانون حفاظت از حریم خصوصی آنلاین کودکان (COPPA) و مقررات عمومی حفاظت از داده‌ها (GDPR)، برنامه شما باید اعلام کند که کدام آگهی‌ها باید به‌عنوان آگهی‌های ویژه کودکان در ایالات متحده درنظر گرفته شوند و کدام آگهی‌ها برای کاربرانی که زیر سن قانونی در کشورشان هستند نمایش داده شوند. «مرکز راهنمایی AdMob» توضیح می‌دهد که چه زمانی باید درخواست‌های آگهی‌تان را برای رفتار کودک‌محور و چه زمانی باید آن‌ها را برای رفتار زیر سن رضایت برچسب‌گذاری کنید، و همچنین تأثیرات انجام این کار را توضیح می‌دهد.

هنگام ایجاد مشتری صورت‌حساب برنامه خود، درنظر بگیرید که آیا درخواست‌های آگهی پاداش‌دار باید به‌عنوان کودک‌محور درنظر گرفته شوند یا باید به کاربران زیر سن رضایت هدایت شوند. اگر درخواست‌های آگهی باید این محدودیت‌ها را داشته باشند، روش‌های setChildDirected() و setUnderAgeOfConsent() را فراخوانی کنید و مقادیر مناسب را به هر روش منتقل کنید.

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

کاتلین

val billingClient = BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build()

جاوا

BillingClient billingClient =
    BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build();

بار کردن آگهی‌های ویدیویی

قبل‌از اینکه به کاربرتان گزینه‌ای برای تماشای تبلیغ ویدیویی به‌منظور دریافت محصول پاداش‌دار نشان دهید، باید ویدیو را بار کنید. برای انجام این کار، یک شیء RewardLoadParams ایجاد کنید و آن را با شیء SkuDetails که محصول پاداش‌دار را نشان می‌دهد مرتبط کنید. سپس، روش loadRewardedSku() مشتری طرف حساب خود را فراخوانی کنید و شیء RewardLoadParams و شیء RewardResponseListener را به آن ارسال کنید.

وقتی بارگیری ویدیو تمام شد، شنونده RewardResponseListener مطلع می‌شود. اگر ویدیو دردسترس نباشد یا خطای دیگری، مانند اتمام مهلت سرور، رخ دهد، به شنونده نیز اطلاع داده می‌شود.

برای حفظ عملکرد دستگاه هنگام بار کردن ویدیوهای مرتبط با محصولات پاداش‌دار برنامه، روال‌های مطلوب زیر را درنظر داشته باشید:

  • حداکثر سه واحد نگهداری انبار محصول پاداش‌دار را به‌طور هم‌زمان بار کنید.
  • هرگاه کاربر وارد برنامه‌تان می‌شود، ویدیوها را بار کنید. این مرحله به شما کمک می‌کند بررسی کنید که آیا ویدیوها هنوز بار شده و دردسترس هستند یا نه.
  • هنگام تصمیم‌گیری درباره زمان بار کردن ویدیوها، تعادل بین استفاده از پهنای باند و پاسخ‌دهی برنامه را انتخاب کنید که برای مورد استفاده شما بهترین عملکرد را داشته باشد:

    • ویدیوها را زودتر از زمانی که برای محصول پاداش‌دار مربوطه getSkuDetails() تماس می‌گیرید بار نکنید. برنامه شما بسیار پاسخ‌گو باقی می‌ماند، اما ممکن است داده‌های شبکه را برای بار کردن ویدیویی که کاربر هرگز تماشا نمی‌کند هدر دهید.
    • ویدیو را حداکثر زمانی بار کنید که کاربر به صفحه‌ای که ویدیو باید در آن نمایش داده شود پیمایش می‌کند. در این حالت، برنامه شما به‌ندرت پهنای باند را هدر می‌دهد، اما کاربر ممکن است مجبور شود چند لحظه صبر کند تا دکمه تماشای ویدیو قابل‌کلیک شود.

تکه کد زیر فرایند بار کردن آگهی ویدیویی را که قبل‌از دریافت محصول پاداش‌دار توسط کاربر پخش می‌شود نشان می‌دهد:

کاتلین

if (skuDetails.isRewarded()) {
    val params = RewardLoadParams.Builder()
            .setSkuDetails(skuDetails)
            .build()
    mBillingClient.loadRewardedSku(params.build(),
            object : RewardResponseListener {
        override fun onRewardResponse(@BillingResponse responseCode : Int) {
            if (responseCode == BillingResponse.OK) {
                // Enable the reward product, or make
                // any necessary updates to the UI.
            }
        }
    })
}

جاوا

if (skuDetails.isRewarded()) {
    RewardLoadParams.Builder params = RewardLoadParams.newBuilder();
    params.setSkuDetails(skuDetails);
    mBillingClient.loadRewardedSku(params.build(),
        new RewardResponseListener() {
            @Override
            public void onRewardResponse(int responseCode) {
                if (responseCode == BillingResponse.OK) {
                      // Enable the reward product, or make
                      // any necessary updates to the UI.
                  }
            }
        });
}

خریدهای پاداش‌دار به کاربران ارائه دهید

اگر «کتابخانه خدمات صورت‌حساب Google Play» ویدیو منسوب به محصول پاداش‌دار را باموفقیت بار کند—یعنی اگر RewardResponseListener responseCode BillingResponse.OK را دریافت کند—می‌توانید جریان صورت‌حساب را راه‌اندازی کنید.

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

مصرف کردن خرید

برای اینکه به مشتری صورت‌حساب خود اطلاع دهید که کاربر محصول پاداش‌دار را دریافت و مصرف کرده است، خرید را در شنونده مشتری صورت‌حساب خود در روش onPurchasesUpdated() مدیریت کنید. توجه داشته باشید که خریدهای پاداش‌دار باید مصرف شوند.

محصولات پاداش‌دار خود را آزمایش کنید

برای آزمایش اینکه برنامه‌تان چگونه آگهی‌های ویدیویی را بار می‌کند و محصولات پاداش‌دار را به کاربران ارائه می‌دهد، از آزمونگران دارای پروانه استفاده کنید، که به‌طور پیش‌فرض به‌جای آگهی‌های واقعی آگهی‌های آزمایشی دریافت می‌کنند. برای آشنایی با نحوه راه‌اندازی حساب برای این آزمایش‌کنندگان، به آزمایش کاربر برنامه «خدمات صورت‌حساب Google Play» مراجعه کنید.

روش دیگر آزمایش این است که از شناسه محصول android.test.reward استفاده کنید. این محصول خاص نامی رزروشده در «خدمات صورت‌حساب Google Play» است، بنابراین لازم نیست آن را به فهرست محصولات درون‌برنامه‌ای خود در «کنسول Play» اضافه کنید.

احتیاط: هنگام آزمایش محصولات دارای جایزه برنامه‌تان، از محصولات واقعی استفاده نکنید؛ درغیراین‌صورت، ممکن است حساب شما به‌عنوان حساب هرزنامه یا کلاهبرداری پرچم‌گذاری شود.

بااین‌حال، وقتی آزمایش را تمام کردید، حتماً قبل‌از اینکه برنامه تولیدتان را برای کاربران نهایی پیاده‌سازی کنید، android.test.reward را با شناسه‌های محصول برای محصولات پاداش‌دار واقعی‌تان جایگزین کنید.

نمودار گردش کار محصول پاداش‌دار

نمودار توالی زیر نشان می‌دهد که کاربر، برنامه شما، و «کتابخانه خدمات صورت‌حساب Google Play» چگونه با هم کار می‌کنند تا آگهی ویدیویی را نشان دهند و به کاربر دسترسی به محصول پاداش‌دار را اعطا کنند:

نمودار توالی که پروتکل محصولات پاداش‌دار را نشان می‌دهد
شکل ۱. مراحل تکمیل خرید محصول پاداش‌دار بااستفاده از «خدمات صورت‌حساب Google Play»