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

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

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

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

ผลิตภัณฑ์ที่เป็นรางวัลมี 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 ทำงานร่วมกันเพื่อแสดงโฆษณาวิดีโอและให้สิทธิ์เข้าถึงของรางวัลแก่ผู้ใช้

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