Ödüllü reklamlar

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Ödüllü reklamlar, kullanıcıların uygulama içi ödüller karşılığında etkileşimde bulunma seçeneği olan reklamlardır. Bu kılavuzda, ödüllü reklamları iOS uygulamasına nasıl entegre edeceğiniz açıklanmaktadır. AdMob Bazı müşteri başarı öykülerini okuyun: örnek olay 1, örnek olay 2.

Ön koşullar

Her zaman test reklamlarıyla test yapın

Uygulamalarınızı oluştururken ve test ederken yayında, üretim amaçlı reklamlar yerine test reklamları kullandığınızdan emin olun. Aksi takdirde, hesabınız askıya alınabilir.

Test reklamlarını yüklemenin en kolay yolu, iOS ödüllü reklamlar için özel test reklam birimi kimliğimizi kullanmaktır:

ca-app-pub-3940256099942544/1712485313

Her istek için test reklamları döndürecek şekilde özel olarak yapılandırılmıştır. Kodlama, test ve hata ayıklama sırasında bu özelliği kendi uygulamalarınızda kullanabilirsiniz. Uygulamanızı yayınlamadan önce kendi reklam birimi kimliğinizle değiştirmeniz yeterlidir.

Mobile Ads SDK'sının test reklamlarının işleyiş şekli hakkında daha fazla bilgi edinmek için Test Reklamları bölümünü inceleyin.

Uygulama

Ödüllü geçiş reklamlarını entegre etmek için uygulanması gereken temel adımlar şunlardır:

  • Reklam yükle
  • [İsteğe bağlı] SSV geri çağırmalarını doğrulama
  • Geri çağırmalar için kaydolun
  • Reklamı görüntüleme ve ödül etkinliğini yönetme

Reklam yükle

Reklam yüklenmesi GADRewardedAd sınıfındaki statik loadWithAdUnitID:request:completionHandler: yöntemi kullanılarak gerçekleştirilir. Yükleme yöntemi için reklam birimi kimliğiniz, bir GADRequest nesnesi ve reklam başarıyla yüklendiğinde veya başarısız olduğunda çağrılan bir tamamlama işleyicisi gerekir. Yüklenen GADRewardedAd nesnesi, tamamlama işleyicide parametre olarak sağlanır. Aşağıdaki örnekte, ViewController sınıfında GADRewardedAd nasıl yüklenir?

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var rewardedAd: GADRewardedAd?

  func loadRewardedAd() {
    let request = GADRequest()
    GADRewardedAd.load(withAdUnitID:"ca-app-pub-3940256099942544/1712485313",
                       request: request,
                       completionHandler: { [self] ad, error in
      if let error = error {
        print("Failed to load rewarded ad with error: \(error.localizedDescription)")
        return
      }
      rewardedAd = ad
      print("Rewarded ad loaded.")
    }
    )
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADRewardedAd *rewardedAd;

@end

@implementation ViewController
- (void)loadRewardedAd {
  GADRequest *request = [GADRequest request];
  [GADRewardedAd
       loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"
                request:request
      completionHandler:^(GADRewardedAd *ad, NSError *error) {
        if (error) {
          NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
          return;
        }
        self.rewardedAd = ad;
        NSLog(@"Rewarded ad loaded.");
      }];
}

[İsteğe bağlı] Sunucu tarafı doğrulama (SSV) geri çağırmalarını doğrulama

Sunucu tarafı doğrulama geri çağırmalarında ek veri gerektiren uygulamalar, ödüllü reklamların özel veri özelliğini kullanmalıdır. Ödüllü reklam nesnesinde ayarlanan dize değerleri, SSV geri çağırmasının custom_data sorgu parametresine iletilir. Özel veri değeri ayarlanmazsa custom_data sorgu parametresi değeri SSV geri çağırmasında yer almaz.

Aşağıdaki kod örneği, reklam istemeden önce ödüllü bir reklam nesnesinde özel verilerin nasıl ayarlanacağını gösterir.

Swift

GADRewardedInterstitialAd.load(withAdUnitID:"ca-app-pub-3940256099942544/1712485313",
                       request: request,
                       completionHandler: { [self] ad, error in
      if let error != error {
      rewardedInterstitialAd = ad
      let options = GADServerSideVerificationOptions()
      options.customRewardString = "SAMPLE_CUSTOM_DATA_STRING"
      rewardedInterstitialAd.serverSideVerificationOptions = options
    }

Objective-C

GADRequest *request = [GADRequest request];
[GADRewardedInterstitialAd
     loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"
              request:request
    completionHandler:^(GADRewardedInterstitialAd *ad, NSError *error) {
      if (error) {
        // Handle Error
        return;
      }
      self.rewardedInterstitialAd = ad;
      GADServerSideVerificationOptions *options =
          [[GADServerSideVerificationOptions alloc] init];
      options.customRewardString = @"SAMPLE_CUSTOM_DATA_STRING";
      ad.serverSideVerificationOptions = options;
    }];

Geri çağırmalar için kaydolun

Sunu etkinlikleriyle ilgili bildirim almak için GADFullScreenContentDelegate protokolünü uygulamanız ve döndürülen reklamın fullScreenContentDelegate özelliğine atamanız gerekir. GADFullScreenContentDelegate protokolü, reklamın başarılı veya başarısız olduğuna ve kapatıldığına dair geri çağırmaları işler. Aşağıdaki kod, protokolün nasıl uygulanacağını ve reklama nasıl atanacağını göstermektedir:

Swift

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var rewardedAd: GADRewardedAd?

  func loadRewardedAd() {
    let request = GADRequest()
    GADRewarded.load(withAdUnitID:"ca-app-pub-3940256099942544/1712485313",
                     request: request,
                     completionHandler: { [self] ad, error in
      if let error = error {
        print("Failed to load rewarded ad with error: \(error.localizedDescription)")
        return
      }
      rewardedAd = ad
      print("Rewarded ad loaded.")
      rewardedAd?.fullScreenContentDelegate = self
    }
    )
  }

  /// Tells the delegate that the ad failed to present full screen content.
  func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
    print("Ad did fail to present full screen content.")
  }

  /// Tells the delegate that the ad will present full screen content.
  func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad will present full screen content.")
  }

  /// Tells the delegate that the ad dismissed full screen content.
  func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad did dismiss full screen content.")
  }
}

Objective-C

@interface ViewController ()<GADFullScreenContentDelegate>

@property(nonatomic, strong) GADRewardedAd *rewardedAd;

@end

@implementation ViewController
- (void)loadRewardedAd {
  GADRequest *request = [GADRequest request];
  [GADRewardedAd
       loadWithAdUnitID:@"ca-app-pub-3940256099942544/4806952744"
                request:request
      completionHandler:^(GADRewardedAd *ad, NSError *error) {
        if (error) {
          NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
          return;
        }
        self.rewardedAd = ad;
        NSLog(@"Rewarded ad loaded.");
        self.rewardedAd.fullScreenContentDelegate = self;
      }];
}

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
    didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
    NSLog(@"Ad did fail to present full screen content.");
}

/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad will present full screen content.");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad did dismiss full screen content.");
}

GADRewardedAd tek kullanımlık bir nesnedir. Bu durumda, ödüllü bir reklam bir kez gösterildikten sonra tekrar gösterilemez. En iyi uygulama, GADFullScreenContentDelegate yönteminde adDidDismissFullScreenContent: yönteminde başka bir ödüllü reklam yüklemektir. Böylece, bir sonraki ödüllü reklam, önceki reklam kapatılır kapatılmaz yüklenmeye başlar.

Reklamı görüntüleme ve ödül etkinliğini yönetme

Kullanıcılara ödüllü reklam göstermeden önce, ödül karşılığında ödüllü reklam içeriğini görüntülemek için kullanıcıya uygunsuz bir seçenek sunmanız gerekir. Ödüllü reklamlar her zaman etkinleştirilmelidir.

Reklamınızı gösterirken, kullanıcıya verilen ödülü işlemek için bir GADUserDidEarnRewardHandler nesnesi sağlamanız gerekir.

Aşağıdaki kod, ödüllü reklam görüntülemek için en iyi yöntemi sunar.

Swift

func show() {
  if let ad = rewardedAd {
    ad.present(fromRootViewController: self) {
      let reward = ad.adReward
      print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)")
      // TODO: Reward the user.
    }
  } else {
    print("Ad wasn't ready")
  }
}

Objective-C

- (void)show {
  ...
  if (self.rewardedAd) {
    [self.rewardedAd presentFromRootViewController:self
                                  userDidEarnRewardHandler:^{
                                  GADAdReward *reward =
                                      self.rewardedAd.adReward;
                                  // TODO: Reward the user!
                                }];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

SSS

GADRewardedAd için ödül ayrıntılarını alabilir miyim?
Evet, geri çağırmanın tetiklenmesi için ödül tutarına ihtiyacınız varsa GADRewardedAd adlı yayıncının, adReward mülkü vardır. Bu özelliği kullanarak reklam yüklendikten sonra ödül tutarını doğrulayabilirsiniz.
Başlatma çağrısı için zaman aşımı var mı?
10 saniye sonra Google Mobile Ads SDK'sı, bir uyumlulaştırma ağının başlatması henüz tamamlanmamış olsa bile startWithCompletionHandler: yöntemine sağlanan GADInitializationCompletionHandler yöntemini çağırır.
İlk uyumlulaştırma geri çağırması aldığımda bazı uyumlulaştırma ağları hazır değilse ne olur?

GADInitializationCompletionHandler içinde reklam yüklemenizi öneririz. Uyumlulaştırma ağı hazır olmasa bile Google Mobile Ads SDK'sı bu ağdan reklam ister. Bu nedenle, bir uyumlulaştırma ağı zaman aşımından sonra da başlatmayı bitirse bile bu oturumda gelecekteki reklam isteklerini yayınlayabilir.

GADMobileAds.initializationStatus çağırarak uygulama oturumunuz süresince tüm bağdaştırıcıların başlatma durumunu sorgulamaya devam edebilirsiniz.

Belirli bir uyumlulaştırma ağının neden hazır olmadığını nasıl öğrenebilirim?

GADAdapterStatus nesnesinin description özelliği, bir uyarlanabilirin reklam istekleri sunmaya neden hazır olmadığını açıklar.

userDidEarnRewardHandler tamamlama işleyicisi her zaman adDidDismissFullScreenContent: yetki verme yönteminden önce mi aranır?

Google reklamları söz konusu olduğunda userDidEarnRewardHandler çağrılarının tümü adDidDismissFullScreenContent: tarihinden önce yapılır. Uyumlulaştırma yoluyla yayınlanan reklamlar için üçüncü taraf reklam ağı SDK'sının uygulaması, geri çağırma sırasını belirler. Ödül bilgileriyle birlikte tek bir yetki verme yöntemi sağlayan reklam ağı SDK'ları için uyumlulaştırma bağdaştırıcısı adDidDismissFullScreenContent: öncesinde userDidEarnRewardHandler çağırır.

GitHub ile ilgili örnekler