รายได้จากโฆษณาในระดับการแสดงผล

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

คู่มือนี้มีไว้เพื่อช่วยคุณติดตั้งใช้งานการบันทึกข้อมูลรายได้จากโฆษณาระดับการแสดงผลในแอป Android

ข้อกำหนดเบื้องต้น

โฆษณาแต่ละรูปแบบมี OnPaidEventListener ในระหว่างวงจรของเหตุการณ์โฆษณา SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google จะตรวจสอบเหตุการณ์การแสดงผลและเรียกใช้แฮนเดิลด้วยมูลค่าที่ได้รับ

โค้ดด้านล่างแสดงวิธีจัดการเหตุการณ์ที่เสียค่าใช้จ่ายสำหรับโฆษณาที่มีการให้รางวัล

Java

import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {
  private RewardedAd rewardedAd;
  private final String TAG = "MainActivity";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    AdRequest adRequest = new AdRequest.Builder().build();

    RewardedAd.load(this, "AD_UNIT_ID",
      adRequest, new RewardedAdLoadCallback(){
        @Override
        public void onAdLoaded(@NonNull RewardedAd ad) {
          rewardedAd = ad;
          // Set paid event listener
          rewardedAd.setOnPaidEventListener(new OnPaidEventListener() {
            @Override
            public void onPaidEvent(AdValue adValue) {
              // TODO: Send the impression-level ad revenue information to your
              //preferred analytics server directly within this callback.

              // Extract the impression-level ad revenue data.
              long valueMicros = adValue.getValueMicros();
              String currencyCode = adValue.getCurrencyCode();
              int precision = adValue.getPrecisionType();

              // Get the ad unit ID.
              String adUnitId = rewardedAd.getAdUnitId();
              
              AdapterResponseInfo loadedAdapterResponseInfo = rewardedAd.getResponseInfo().
                  getLoadedAdapterResponseInfo();
              String adSourceName = loadedAdapterResponseInfo.getAdSourceName();
              String adSourceId = loadedAdapterResponseInfo.getAdSourceId();
              String adSourceInstanceName = loadedAdapterResponseInfo.getAdSourceInstanceName();
              String adSourceInstanceId = loadedAdapterResponseInfo.getAdSourceInstanceId();

              Bundle extras = rewardedAd.getResponseInfo().getResponseExtras();
              String mediationGroupName = extras.getString("mediation_group_name");
              String mediationABTestName = extras.getString("mediation_ab_test_name");
              String mediationABTestVariant = extras.getString("mediation_ab_test_variant");
            }
          });
        }
    });
  }
}

Kotlin

import com.google.android.gms.ads.rewarded.RewardedAd

class MainActivity : AppCompatActivity() {
  private var rewardedAd: RewardedAd? = null
  private final var TAG = "MainActivity"

  override fun onCreate(savedInstanceState: Bundle?) {
    AdRequest adRequest = new AdRequest.Builder().build()

    RewardedAd.load(this, "AD_UNIT_ID",
      adRequest, object: RewardedAdLoadCallback() {
        override fun onAdLoaded(ad: RewardedAd) {
          rewardedAd = ad
          // Set paid event listener
          rewardedAd.onPaidEventListener = OnPaidEventListener { adValue ->
            // TODO: Send the impression-level ad revenue information to your preferred
            // analytics server directly within this callback.

            // Extract the impression-level ad revenue data.
            val valueMicros = adValue.valueMicros
            val currencyCode = adValue.currencyCode
            val precision = adValue.precisionType

            // Get the ad unit ID.
            val adUnitId = rewardedAd.adUnitId

            val loadedAdapterResponseInfo = rewardedAd.responseInfo.loadedAdapterResponse
            val adSourceName = loadedAdapterResponseInfo.adSourceName
            val adSourceId = loadedAdapterResponseInfo.adSourceId
            val adSourceInstanceName = loadedAdapterResponseInfo.adSourceInstanceName
            val adSourceInstanceId = loadedAdapterResponseInfo.adSourceInstanceId
            val extras = rewardedAd.responseInfo.responseExtras
            val mediationGroupName = extras.getString("mediation_group_name")
            val mediationABTestName = extras.getString("mediation_ab_test_name")
            val mediationABTestVariant = extras.getString("mediation_ab_test_variant")
          }
        }
    })
  }
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับแหล่งที่มาของโฆษณาที่ชนะได้ที่ดึงข้อมูลเกี่ยวกับการตอบกลับโฆษณา

การผสานรวม App Attribution Partner (AAP)

สำหรับรายละเอียดทั้งหมดเกี่ยวกับการส่งต่อข้อมูลรายได้จากโฆษณาไปยังแพลตฟอร์มการวิเคราะห์ โปรดดูคู่มือของพาร์ทเนอร์

SDK ของพาร์ทเนอร์
Adjust
AppsFlyer
Singular
Tenjin

แนวทางปฏิบัติแนะนำสำหรับการนำไปใช้

  • ตั้งค่า Listener ทันทีที่คุณสร้างหรือเข้าถึงออบเจ็กต์โฆษณา และก่อนที่จะแสดงโฆษณา วิธีนี้ช่วยให้มั่นใจว่าจะไม่พลาดการเรียกกลับของเหตุการณ์ ที่เสียค่าใช้จ่าย
  • ส่งข้อมูลรายได้จากโฆษณาระดับการแสดงผลไปยังเซิร์ฟเวอร์ Analytics ที่ต้องการทันทีที่มีการเรียกเมธอด onPaidEvent() วิธีนี้จะทำให้คุณไม่ทิ้งโค้ดเรียกกลับโดยไม่ตั้งใจและหลีกเลี่ยงความคลาดเคลื่อนของข้อมูล

AdValue

AdValue คือคลาสที่แสดงมูลค่าเงินที่ได้รับจากโฆษณา ซึ่งรวมถึงรหัสสกุลเงินของค่าและประเภทความถูกต้องของโฆษณาที่เข้ารหัสด้านล่าง

PrecisionType คำอธิบาย
UNKNOWN ค่าโฆษณาที่ไม่รู้จัก ซึ่งระบบจะแสดงผลนี้เมื่อเปิดใช้ Pingback ของ LTV แต่ยังมีข้อมูลไม่เพียงพอ
ESTIMATED มูลค่าโฆษณาโดยประมาณจากข้อมูลรวม
PUBLISHER_PROVIDED ผู้เผยแพร่โฆษณาได้ระบุมูลค่าโฆษณา เช่น CPM ที่กําหนดเอง ในกลุ่มสื่อกลาง
PRECISE ค่าที่แน่นอนที่จ่ายให้กับโฆษณานี้

ในกรณีของสื่อกลาง AdMob จะพยายามระบุค่า ESTIMATED ให้กับแหล่งที่มาของโฆษณาที่ ได้รับการเพิ่มประสิทธิภาพ สำหรับแหล่งที่มาของโฆษณาที่ไม่ได้เพิ่มประสิทธิภาพ หรือในกรณีที่มีข้อมูลที่รวบรวมได้ไม่เพียงพอที่จะรายงานค่าประมาณที่มีความหมาย ระบบจะแสดงค่า PUBLISHER_PROVIDED