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

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

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

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

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

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

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

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

ผู้ฟัง RewardResponseListener จะได้รับการแจ้งเตือนเมื่อวิดีโอเล่นจบ กำลังโหลด ผู้ฟังจะได้รับแจ้งด้วยหากวิดีโอไม่พร้อมใช้งานหรือหากวิดีโออื่น เช่น เซิร์ฟเวอร์หมดเวลา

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

  • โหลด SKU ผลิตภัณฑ์ที่ได้รับรางวัลได้สูงสุด 3 รายการต่อครั้ง
  • พยายามโหลดวิดีโอเมื่อใดก็ตามที่ผู้ใช้เข้าสู่แอปของคุณ ขั้นตอนนี้ช่วย คุณตรวจสอบว่าวิดีโอยังโหลดอยู่และใช้งานได้หรือไม่
  • เมื่อตัดสินใจว่าจะโหลดวิดีโอเมื่อใด โปรดเลือกความสมดุลระหว่างแบนด์วิดท์ การใช้งานและการตอบสนองของแอปที่เหมาะกับ Use Case ของคุณที่สุด

    • อย่างเร็วที่สุด ให้โหลดวิดีโอหลังจากที่คุณโทรหา 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() เช่นเดียวกับในแอปประเภทอื่นๆ ทั้งหมด ผลิตภัณฑ์ แม้ว่า ผู้ใช้ไม่ได้ทำการซื้อโดยตรงเพื่อรับผลิตภัณฑ์ที่ได้รับรางวัล แต่คุณยังคง ต้องเปิดใช้ขั้นตอนการเรียกเก็บเงินเพื่อให้ผู้ใช้สามารถรับและใช้ ผลิตภัณฑ์

ทำการซื้อ

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

ทดสอบผลิตภัณฑ์ที่เป็นรางวัล

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

การทดสอบอีกวิธีคือให้คุณใช้ผลิตภัณฑ์ android.test.reward ID ผลิตภัณฑ์เฉพาะนี้เป็นชื่อที่สงวนไว้ใน Google Play Billing ดังนั้น คุณไม่ต้องเพิ่มลงในรายการไอเทมที่ซื้อในแอปใน Play Console

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

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

แผนภาพเวิร์กโฟลว์ของผลิตภัณฑ์ที่ได้รับรางวัล

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

วันที่ แผนภาพลำดับที่แสดงโปรโตคอลผลิตภัณฑ์ที่ได้รับรางวัล
รูปที่ 1 ขั้นตอนในการซื้อผลิตภัณฑ์ที่ได้รับรางวัลให้เสร็จสมบูรณ์ ด้วย Google Play Billing