اضافه کردن ویژگی های خاص محصول پاداش

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

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

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

محصولات دارای پاداش دارای 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 مطلع می شود. همچنین در صورت در دسترس نبودن ویدیو یا بروز خطای دیگری، مانند مهلت زمانی سرور، به شنونده اطلاع داده می شود.

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

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

    • در اولین فرصت، پس از تماس با 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 با هم کار می‌کنند تا یک تبلیغ ویدیویی را نشان دهند و به کاربر اجازه دسترسی به محصول پاداش داده شده را بدهند:

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