เพิ่มฟีเจอร์เฉพาะผลิตภัณฑ์ที่ได้รับรางวัล

วิธีหนึ่งในการปลดล็อกไอเทมที่ซื้อในแอปและสิทธิประโยชน์สำหรับผู้ใช้คือการสร้างผลิตภัณฑ์ที่เป็นรางวัลหรือไอเทมที่ผู้ใช้จะได้รับหลังจากดูโฆษณาวิดีโอ การมอบผลิตภัณฑ์ที่มีการให้รางวัลช่วยให้ผู้ใช้ได้รับรางวัลและสิทธิประโยชน์ในแอป โดยไม่ต้องทำการซื้อโดยตรง

เอกสารนี้อธิบายวิธีใช้งานฟังก์ชันเฉพาะสำหรับผลิตภัณฑ์ที่เป็นรางวัล ส่วนแผนภาพเวิร์กโฟลว์ของหน้านี้ แสดงกระบวนการ

ระบุผลิตภัณฑ์ที่เป็นรางวัลของแอป

ผลิตภัณฑ์ที่เป็นรางวัลมี SkuType ของ INAPP ผู้ใช้ต้องใช้ ผลิตภัณฑ์เพื่อให้ดูโฆษณาหลายรายการและรับรางวัลหลายรายการได้

ก่อนที่จะเสนอของรางวัลแก่ผู้ใช้ คุณต้องได้รับ SkuDetails สำหรับ ของรางวัล โดยเรียกใช้ querySkuDetailsAsync() ด้วย SkuType.INAPP เป็นประเภทสินค้า

ประกาศโฆษณาที่เหมาะสมกับอายุ

เพื่อช่วยให้การปฏิบัติตามภาระหน้าที่ตามกฎหมายที่เกี่ยวข้องกับเด็กและผู้ใช้ที่อายุต่ำกว่าเกณฑ์ รวมถึงกฎหมายว่าด้วยความคุ้มครองข้อมูลส่วนบุคคลทางอินเทอร์เน็ตของเด็ก (Children’s Online Privacy Protection Act หรือ COPPA) และกฎระเบียบให้ความคุ้มครองข้อมูลส่วนบุคคลของผู้บริโภค (General Data Protection Regulation หรือ 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 ทราบเมื่อวิดีโอโหลดเสร็จแล้ว นอกจากนี้ ผู้ฟังจะได้รับการแจ้งเตือนหากวิดีโอไม่พร้อมใช้งานหรือเกิดข้อผิดพลาดอื่นๆ เช่น เซิร์ฟเวอร์หมดเวลา

โปรดคำนึงถึงแนวทางปฏิบัติแนะนำต่อไปนี้เพื่อรักษาประสิทธิภาพของอุปกรณ์เมื่อโหลดวิดีโอที่เชื่อมโยงกับผลิตภัณฑ์ที่ให้รางวัลของแอป

  • โหลด 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 คุณจึงไม่จำเป็นต้องเพิ่มผลิตภัณฑ์นี้ลงในรายการไอเทมที่ซื้อในแอปใน Play Console

ข้อควรระวัง: เมื่อทดสอบของรางวัลของแอป อย่าใช้ผลิตภัณฑ์จริง มิฉะนั้นระบบอาจแจ้งว่าบัญชีของคุณเป็นสแปมหรือบัญชีที่ฉ้อโกง

อย่างไรก็ตาม เมื่อทดสอบเสร็จแล้ว โปรดตรวจสอบว่าคุณได้แทนที่ android.test.reward ด้วยรหัสผลิตภัณฑ์สำหรับผลิตภัณฑ์ที่ให้รางวัลจริง ก่อนที่จะนําแอปเวอร์ชันที่ใช้งานจริงไปใช้งานกับผู้ใช้ปลายทาง

แผนภาพเวิร์กโฟลว์ของของรางวัล

แผนภาพลำดับต่อไปนี้แสดงวิธีที่ผู้ใช้ แอปของคุณ และ Google Play Billing Library ทำงานร่วมกันเพื่อแสดงโฆษณาวิดีโอและให้สิทธิ์ผู้ใช้เข้าถึงของรางวัล

แผนภาพลำดับที่แสดงโปรโตคอลของรางวัล
รูปที่ 1 ขั้นตอนการซื้อของรางวัล โดยใช้ Google Play Billing