วิธีหนึ่งในการปลดล็อกไอเทมที่ซื้อในแอปและสิทธิประโยชน์สำหรับผู้ใช้คือการสร้าง ผลิตภัณฑ์ที่เป็นรางวัล หรือไอเทมที่ผู้ใช้จะได้รับหลังจากดูวิดีโอ โฆษณา การมอบผลิตภัณฑ์ที่เป็นรางวัลจะช่วยให้ผู้ใช้ได้รับรางวัลและสิทธิประโยชน์ในแอปโดยไม่ต้องซื้อโดยตรง
เอกสารนี้จะอธิบายวิธีใช้งานฟังก์ชันเฉพาะสำหรับผลิตภัณฑ์ที่เป็นรางวัล ส่วนแผนผังเวิร์กโฟลว์ของหน้านี้ จะแสดงกระบวนการ
ระบุผลิตภัณฑ์ที่เป็นรางวัลของแอป
ผลิตภัณฑ์ที่เป็นรางวัลมี
SkuType เป็น
INAPP
ผลิตภัณฑ์ต้องถูกใช้เพื่อให้ผู้ใช้ดูโฆษณาหลายรายการและรับรางวัลหลายรายการได้
คุณต้องได้รับ
SkuDetailsของ
ของรางวัลก่อนจึงจะเสนอของรางวัลให้ผู้ใช้ได้ โดยเรียก
querySkuDetailsAsync()
ด้วย SkuType.INAPP เป็นประเภทสินค้า
ประกาศโฆษณาที่เหมาะสมกับวัย
แอปของคุณควรประกาศว่าโฆษณาใดควรได้รับการพิจารณาว่าเป็นโฆษณาที่กำหนดเป้าหมายเป็นเด็กในสหรัฐอเมริกา และโฆษณาใดกำหนดเป้าหมายเป็นผู้ใช้ที่มีอายุต่ำกว่าอายุที่ให้ความยินยอมได้ในประเทศของผู้ใช้ เพื่อช่วยให้ปฏิบัติตามภาระผูกพันทางกฎหมายที่เกี่ยวข้องกับเด็กและ ผู้ใช้ที่มีอายุต่ำกว่าเกณฑ์ รวมถึง กฎหมายว่าด้วยความคุ้มครองข้อมูลส่วนบุคคลทางอินเทอร์เน็ตของเด็ก (COPPA) และ กฎระเบียบให้ความคุ้มครองข้อมูลส่วนบุคคลของผู้บริโภค (GDPR), แอปของคุณควรประกาศว่าโฆษณาใดควรได้รับการพิจารณาว่าเป็นโฆษณาที่กำหนดเป้าหมายเป็นเด็กในสหรัฐอเมริกา และโฆษณาใดกำหนดเป้าหมายเป็นผู้ใช้ที่มีอายุต่ำกว่า อายุที่ให้ความยินยอมได้ใน ประเทศของผู้ใช้ ศูนย์ช่วยเหลือของ AdMob จะอธิบายว่าเมื่อใดที่คุณควรติดแท็กคำขอโฆษณาเพื่อใช้การดูแลให้เหมาะสมกับเด็ก และเมื่อใดที่คุณควร ติดแท็กคำขอโฆษณาเพื่อใช้การดูแลให้เหมาะสมกับผู้ใช้ที่มีอายุต่ำกว่าอายุที่ให้ความยินยอมได้ รวมถึง ผลกระทบของการดำเนินการดังกล่าว
เมื่อสร้างไคลเอ็นต์การเรียกเก็บเงินของแอป ให้พิจารณาว่าคำขอโฆษณาที่มีการให้รางวัลควรได้รับการพิจารณาว่าเป็นโฆษณาที่มีเด็กเป็นกลุ่มเป้าหมาย หรือควรกำหนดเป้าหมายเป็นผู้ใช้ที่มีอายุต่ำกว่าอายุที่ให้ความยินยอมได้ หากคำขอโฆษณาควรมีข้อจำกัดเหล่านี้ ให้เรียกเมธอด
setChildDirected()
และ
setUnderAgeOfConsent()
โดยส่งค่าที่เหมาะสมไปยังแต่ละเมธอด
ข้อมูลโค้ดต่อไปนี้แสดงวิธีประกาศว่าโฆษณาวิดีโอควรเหมาะสำหรับเด็กหรือผู้ใช้ที่มีอายุต่ำกว่าอายุที่ให้ความยินยอมได้
Kotlin
val billingClient = BillingClient.newBuilder(context) .setListener(this) .setChildDirected(ChildDirected.CHILD_DIRECTED) .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT) .build()
Java
BillingClient billingClient = BillingClient.newBuilder(context) .setListener(this) .setChildDirected(ChildDirected.CHILD_DIRECTED) .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT) .build();
โหลดโฆษณาวิดีโอ
คุณต้องโหลดวิดีโอก่อนจึงจะแสดงตัวเลือกให้ผู้ใช้ดูโฆษณาวิดีโอเพื่อรับของรางวัลได้ โดยสร้างออบเจ็กต์
RewardLoadParams แล้วเชื่อมโยงกับออบเจ็กต์ SkuDetails ที่
แสดงของรางวัล จากนั้นเรียกเมธอด
loadRewardedSku()
ของไคลเอ็นต์การเรียกเก็บเงิน โดยส่งออบเจ็กต์ RewardLoadParams และออบเจ็กต์
RewardResponseListener
ระบบจะแจ้งให้ Listener RewardResponseListener ทราบเมื่อวิดีโอโหลดเสร็จแล้ว นอกจากนี้ ระบบจะแจ้งให้ Listener ทราบหากวิดีโอไม่พร้อมใช้งานหรือเกิดข้อผิดพลาดอื่นๆ เช่น เซิร์ฟเวอร์หมดเวลา
โปรดคำนึงถึงแนวทางปฏิบัติแนะนำต่อไปนี้เพื่อรักษาประสิทธิภาพของอุปกรณ์เมื่อโหลดวิดีโอที่เชื่อมโยงกับผลิตภัณฑ์ที่เป็นรางวัลของแอป
- โหลด SKU ของรางวัลไม่เกิน 3 รายการพร้อมกัน
- พยายามโหลดวิดีโอทุกครั้งที่ผู้ใช้เข้าแอป ขั้นตอนนี้จะช่วยให้คุณตรวจสอบได้ว่าวิดีโอยังคงโหลดและพร้อมใช้งานอยู่หรือไม่
เมื่อตัดสินใจว่าจะโหลดวิดีโอเมื่อใด ให้เลือกความสมดุลระหว่างการใช้แบนด์วิดท์และการตอบสนองของแอปที่เหมาะกับกรณีการใช้งานของคุณมากที่สุด
- โหลดวิดีโอหลังจากเรียก
getSkuDetails()สำหรับของรางวัลที่เชื่อมโยงแล้ว แอปของคุณจะยังคงตอบสนองได้ดีมาก แต่คุณอาจเสียข้อมูลเครือข่ายไปกับการโหลดวิดีโอที่ผู้ใช้ไม่เคยดู - โหลดวิดีโอเมื่อผู้ใช้นำทางไปยังหน้าที่ควรแสดงวิดีโอ ในกรณีนี้ แอปของคุณจะใช้แบนด์วิดท์น้อยมาก แต่ผู้ใช้อาจต้องรอสักครู่ก่อนที่ปุ่มสำหรับดูวิดีโอจะคลิกได้
- โหลดวิดีโอหลังจากเรียก
ข้อมูลโค้ดต่อไปนี้แสดงกระบวนการโหลดโฆษณาวิดีโอที่จะเล่นก่อนที่ผู้ใช้จะได้รับของรางวัล
Kotlin
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. } } }) }
Java
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()
ของ Listener ไคลเอ็นต์การเรียกเก็บเงิน โปรดทราบว่าต้องใช้การซื้อที่เป็นรางวัล
ทดสอบผลิตภัณฑ์ที่เป็นรางวัล
หากต้องการทดสอบวิธีที่แอปโหลดโฆษณาวิดีโอและมอบผลิตภัณฑ์ที่เป็นรางวัลให้ผู้ใช้ ให้ใช้ ผู้ทดสอบที่มีสิทธิ์ ซึ่งจะได้รับโฆษณาทดสอบแทนโฆษณาจริง โดยค่าเริ่มต้น ดูวิธีตั้งค่าบัญชีสำหรับผู้ทดสอบเหล่านี้ได้ที่ทดสอบแอปการเรียกเก็บเงินของ Google Play โดยผู้ใช้
อีกวิธีหนึ่งในการทดสอบคือการใช้รหัสผลิตภัณฑ์ android.test.reward ผลิตภัณฑ์นี้เป็นชื่อที่สงวนไว้ใน Google Play Billing ดังนั้นคุณจึงไม่จำเป็นต้องเพิ่มผลิตภัณฑ์นี้ลงในรายการไอเทมที่ซื้อในแอปใน Play Console
ข้อควรระวัง: เมื่อทดสอบผลิตภัณฑ์ที่เป็นรางวัลของแอป อย่าใช้ ผลิตภัณฑ์จริง ไม่เช่นนั้นระบบอาจติดค่าสถานะบัญชีของคุณว่าเป็นบัญชีสแปมหรือ บัญชีฉ้อโกง
อย่างไรก็ตาม เมื่อทดสอบเสร็จแล้ว ให้ตรวจสอบว่าคุณได้แทนที่
android.test.reward ด้วยรหัสผลิตภัณฑ์สำหรับผลิตภัณฑ์ที่เป็นรางวัลจริง
ก่อนที่จะติดตั้งใช้งานแอปเวอร์ชันที่ใช้งานจริงให้กับผู้ใช้
แผนผังเวิร์กโฟลว์ของของรางวัล
แผนผังลำดับต่อไปนี้แสดงวิธีที่ผู้ใช้ แอป และ Google Play Billing Library ทำงานร่วมกันเพื่อแสดงโฆษณาวิดีโอและให้สิทธิ์เข้าถึงของรางวัลแก่ผู้ใช้