یکی از روشهای ارائه محصولات و مزایای درونبرنامهای برای کاربران، ایجاد محصولات جایزهدار یا اقلامی است که کاربران پس از تماشای یک تبلیغ ویدیویی دریافت میکنند. با ارائه محصولات جایزهدار، به کاربران این امکان را میدهید که بدون نیاز به خرید مستقیم، جوایز و مزایای درونبرنامهای را دریافت کنند.
این سند نحوه پیادهسازی قابلیتهای خاص محصولات پاداشدار را توضیح میدهد. بخش نمودار گردش کار این صفحه، این فرآیند را نشان میدهد.
محصولات جایزهدار اپلیکیشن خود را شناسایی کنید
محصولات جایزهدار دارای 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 Billing Library) با موفقیت ویدیوی مرتبط با یک محصول پاداشدار را بارگذاری کند - یعنی اگر RewardResponseListener یک responseCode با مقدار BillingResponse.OK دریافت کند - میتوانید جریان پرداخت را راهاندازی کنید.
شما با فراخوانی launchBillingFlow() شروع به پخش تبلیغات برای یک محصول جایزهدار میکنید، همانطور که برای سایر انواع محصولات درونبرنامهای انجام میدهید. حتی اگر کاربر برای دریافت یک محصول جایزهدار خرید مستقیمی انجام ندهد، شما هنوز باید جریان صورتحساب را فعال کنید تا کاربر بتواند محصول را دریافت و از آن استفاده کند.
خرید را مصرف کنید
برای اطلاعرسانی به کلاینت صورتحساب خود مبنی بر اینکه کاربر یک محصول پاداشدار را دریافت و مصرف کرده است، خرید را در متد onPurchasesUpdated() در شنونده کلاینت صورتحساب خود مدیریت کنید. توجه داشته باشید که خریدهای پاداشدار باید مصرف شوند .
محصولات جایزهدار خود را آزمایش کنید
برای آزمایش نحوهی بارگذاری تبلیغات ویدیویی و ارائه محصولات جایزهدار به کاربران توسط برنامهتان، از آزمایشکنندگان دارای مجوز استفاده کنید که بهطور پیشفرض به جای تبلیغات واقعی، تبلیغات آزمایشی دریافت میکنند. برای یادگیری نحوهی تنظیم حساب برای این آزمایشکنندگان، به بخش «آزمایش کاربر یک برنامهی پرداخت گوگل پلی» مراجعه کنید.
روش دیگر آزمایش این است که از شناسه محصول android.test.reward استفاده کنید. این محصول خاص یک نام رزرو شده در Google Play Billing است، بنابراین نیازی نیست آن را به لیست محصولات درون برنامهای خود در Play Console اضافه کنید.
هشدار: هنگام آزمایش محصولات جایزهدار برنامهتان، از محصولات واقعی استفاده نکنید ؛ در غیر این صورت، ممکن است حساب شما به عنوان حساب اسپم یا جعلی علامتگذاری شود.
با این حال، پس از اتمام آزمایش، قبل از اینکه برنامهی تولیدی خود را برای کاربران نهایی مستقر کنید، مطمئن شوید که android.test.reward با شناسههای محصول برای محصولات پاداشدار واقعی خود جایگزین کردهاید.
نمودار گردش کار محصول پاداش داده شده
نمودار توالی زیر نشان میدهد که چگونه کاربر، برنامه شما و کتابخانه پرداخت گوگل پلی با هم کار میکنند تا یک تبلیغ ویدیویی نمایش داده شود و به کاربر دسترسی به یک محصول جایزهدار اعطا شود: