درآمد تبلیغات در سطح نمایش

پلتفرم را انتخاب کنید: Android iOS Unity

وقتی نمایشی رخ می‌دهد، Google Mobile Ads SDK با مدیریت رویداد پولی همراه با داده‌های درآمد مرتبط آن تماس می‌گیرد. با پیاده‌سازی این کنترل‌کننده، می‌توانید از داده‌ها برای محاسبه ارزش طول عمر کاربر استفاده کنید یا داده‌ها را در پایین‌دست به سایر سیستم‌های مرتبط ارسال کنید.

این راهنما برای کمک به شما در پیاده سازی داده های LTV در برنامه iOS خود طراحی شده است.

پیش نیازها

یک کنترل کننده رویداد پولی را پیاده سازی کنید

هر قالب تبلیغاتی دارای ویژگی paidEventHandler از نوع GADPaidEventHandler است. در طول چرخه حیات یک رویداد تبلیغاتی، Google Mobile Ads SDK رویدادهای نمایش را نظارت می‌کند و کنترل‌کننده را با ارزش کسب‌شده فراخوانی می‌کند.

سویفت

class ViewController: UIViewController, FullScreenContentDelegate {
  var rewardedAd: RewardedAd?
  func requestRewardedAd() {
    RewardedAd.load(
      with: "AD_UNIT_ID", request: Request()
    ) { (ad, error) in
      if let error = error {
        print("Rewarded ad failed to load with error: \(error.localizedDescription)")
        return
      }
      if let ad = ad {
        self.rewardedAd = ad
        self.rewardedAd?.paidEventHandler = { adValue in
          // TODO: Send the impression-level ad revenue information to your preferred analytics
          // server directly within this callback.

          // Extract the impression-level ad revenue data.
          let value = adValue.value
          let precision = adValue.precision
          let currencyCode = adValue.currencyCode

          // Get the ad unit ID.
          let adUnitId = ad.adUnitID

          let responseInfo = ad.responseInfo
          let loadedAdNetworkResponseInfo = responseInfo?.loadedAdNetworkResponseInfo
          let adSourceId = loadedAdNetworkResponseInfo?.adSourceID
          let adSourceInstanceId = loadedAdNetworkResponseInfo?.adSourceInstanceID
          let adSourceInstanceName = loadedAdNetworkResponseInfo?.adSourceInstanceName
          let adSourceName = loadedAdNetworkResponseInfo?.adSourceName
          let mediationGroupName = responseInfo?.extras["mediation_group_name"]
          let mediationABTestName = responseInfo?.extras["mediation_ab_test_name"]
          let mediationABTestVariant = responseInfo?.extras["mediation_ab_test_variant"]
        }
      }
    }
  }
}

هدف-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()
@property(nonatomic, strong) GADRewardedAd *rewardedAd;
@end

@implementation ViewController
- (void)requestRewardedAd {
  __weak ViewController *weakSelf = self;

  GADRequest *request = [GADRequest request];
  [GADRewardedAd
   loadWithAdUnitID:@"AD_UNIT_ID"
   request:request
   completionHandler:^(GADRewardedAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
      return;
    }
    self.rewardedAd = ad;
    self.rewardedAd.paidEventHandler = ^void(GADAdValue *_Nonnull value){
      ViewController *strongSelf = weakSelf;
      // TODO: Send the impression-level ad revenue information to your preferred analytics
      // server directly within this callback.

      // Extract the impression-level ad revenue data.
      NSDecimalNumber *value; = value.value;
      NSString *currencyCode = value.currencyCode;
      GADAdValuePrecision precision = value.precision;

      // Get the ad unit ID.
      NSString *adUnitId = strongSelf.rewardedAd.adUnitID;

      GADAdNetworkResponseInfo *loadedAdNetworkResponseInfo =
          strongSelf.rewardedAd.responseInfo.loadedAdNetworkResponseInfo;
      NSString *adSourceName = loadedAdNetworkResponseInfo.adSourceName;
      NSString *adSourceID = loadedAdNetworkResponseInfo.adSourceID;
      NSString *adSourceInstanceName = loadedAdNetworkResponseInfo.adSourceInstanceName;
      NSString *adSourceInstanceID = loadedAdNetworkResponseInfo.adSourceInstanceID;
      NSDictionary<NSString *, id> *extras = strongSelf.rewardedAd.responseInfo.extrasDictionary;
      NSString *mediationGroupName = extras["mediation_group_name"];
      NSString *mediationABTestName = extras["mediation_ab_test_name"];
      NSString *mediationABTestVariant = extras["mediation_ab_test_variant"];
    };
  ]};
}

نام منبع آگهی رویداد سفارشی را شناسایی کنید

برای منابع تبلیغات رویداد سفارشی، ویژگی adSourceName نام منبع تبلیغ Custom event را به شما می دهد. اگر از چندین رویداد سفارشی استفاده می‌کنید، نام منبع آگهی به اندازه کافی برای تمایز بین چندین رویداد سفارشی مشخص نیست. برای مکان یابی یک رویداد سفارشی خاص، مراحل زیر را انجام دهید:

  1. ویژگی adNetworkClassName را دریافت کنید.
  2. یک نام منبع آگهی منحصر به فرد تنظیم کنید.

مثال زیر یک نام منبع آگهی منحصر به فرد را برای یک رویداد سفارشی تنظیم می کند:

سویفت

func uniqueAdSourceName(for loadedAdNetworkResponseInfo: AdNetworkResponseInfo) -> String {
  var adSourceName: String = loadedAdNetworkResponseInfo.adSourceName ?? ""
  if adSourceName == "Custom Event" {
    if loadedAdNetworkResponseInfo.adNetworkClassName
      == "MediationExample.SampleCustomEventSwift"
    {
      adSourceName = "Sample Ad Network (Custom Event)"
    }
  }
  return adSourceName
}

هدف-C

- (NSString *)uniqueAdSourceNameForAdNetworkResponseInfo:
    (GADAdNetworkResponseInfo *)loadedAdNetworkResponseInfo {
  NSString *adSourceName = loadedAdNetworkResponseInfo.adSourceName;
  if ([adSourceName isEqualToString:@"Custom Event"]) {
    if ([loadedAdNetworkResponseInfo.adNetworkClassName isEqualToString:@"SampleCustomEvent"]) {
      adSourceName = @"Sample Ad Network (Custom Event)";
    }
  }
  return adSourceName;
}

برای اطلاعات بیشتر در مورد منبع آگهی برنده، به بازیابی اطلاعات درباره پاسخ آگهی مراجعه کنید.

ادغام با App Attribution Partners (AAP)

برای جزئیات کامل در مورد ارسال اطلاعات درآمد تبلیغات به پلتفرم های تحلیلی، به راهنمای شریک مراجعه کنید:

شریک SDK
تنظیم کنید
AppsFlyer
مفرد
تنجین

بهترین شیوه های پیاده سازی

  • بلافاصله پس از ایجاد یا دسترسی به شیء تبلیغ، و قطعاً قبل از نمایش آگهی، کنترل کننده را تنظیم کنید. این باعث می‌شود که هیچ‌یک از تماس‌های رویداد پولی را از دست ندهید.
  • بلافاصله در زمان فراخوانی روش paidEventHandler ، اطلاعات رویداد پولی را به سرور تجزیه و تحلیل ترجیحی خود ارسال کنید. این اطمینان حاصل می کند که به طور تصادفی هیچ تماسی را رها نمی کنید و از اختلاف داده ها جلوگیری می کند.

GADAdValue

GADAdValue کلاسی است که ارزش پولی به دست آمده برای یک آگهی را نشان می دهد، از جمله کد ارز ارزش و نوع دقیق آن که به صورت زیر کدگذاری شده است.

GADAdValuePrecision توضیحات
GADAdValuePrecisionUnknown یک ارزش تبلیغاتی که ناشناخته است. وقتی پینگ بک LTV فعال باشد اما داده کافی در دسترس نباشد، این مورد برگردانده می شود.
GADAdValuePrecisionEstimated یک ارزش تبلیغاتی که از داده‌های جمع‌آوری شده تخمین زده می‌شود.
GADAdValuePrecisionPublisherProvided یک ناشر ارزش تبلیغاتی مانند CPM های دستی در یک گروه میانجی ارائه کرد.
GADAdValuePrecisionPrecise ارزش دقیق پرداخت شده برای این آگهی.

نتایج را از منابع آگهی مناقصه آزمایش کنید

پس از اینکه یک رویداد درآمد تبلیغات در سطح نمایش برای منبع آگهی مناقصه از طریق یک درخواست آزمایشی رخ داد، فقط مقادیر زیر را دریافت می‌کنید:

  • GADAdValuePrecisionUnknown : نوع دقت را نشان می دهد.
  • 0 : ارزش تبلیغ را نشان می دهد.

قبلاً، ممکن است نوع دقیق را به عنوان مقداری غیر از GADAdValuePrecisionUnknown و مقدار تبلیغاتی بیش از 0 مشاهده کرده باشید.

برای جزئیات ارسال درخواست آگهی آزمایشی، به فعال کردن دستگاه‌های آزمایشی مراجعه کنید.