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

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

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

ระบุไอเทมที่ซื้อในแอปซึ่งให้รางวัล

ผลิตภัณฑ์ที่เป็นรางวัลมี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

ผู้ฟัง 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()ของโปรแกรมรับฟังลูกค้าสำหรับการเรียกเก็บเงิน โปรดทราบว่าการซื้อที่มีการให้รางวัลต้องใช้งาน

ทดสอบไอเทมที่ซื้อแล้วรับรางวัล

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

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

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

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

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

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

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