Ödüllü reklamlar

Ödüllü reklamlar, kullanıcıların uygulama içi ödüller karşılığında onlarla etkileşime geçme seçeneği sunmasını sağlar. Bu kılavuzda, Google Mobile Ads C++ SDK'sı kullanılarak ödüllü reklamları Android ve iOS uygulamalarına nasıl entegre edeceğiniz açıklanmaktadır.

Müşteri başarı öykülerinin bazılarını okuyun: 1. örnek olayı, 2. örnek olay.

Ö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, ödüllü reklamlar için özel test reklam birimi kimliğimizi kullanmaktır. Bu kimlik, cihaz platformuna göre değişiklik gösterir:

  • Android: ca-app-pub-3940256099942544/5224354917
  • iOS: ca-app-pub-3940256099942544/1712485313

Bunlar, 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, reklamları 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ü reklamları entegre etmeyle ilgili temel adımlar şunlardır:

  1. Bir reklam yükleyin.
  2. Geri çağırmalar için kaydolun.
  3. Reklamı gösterin ve ödül etkinliğini ele alın.

RewardedAd yapılandırın

Ödüllü reklamlar RewardedAd nesnelerinde görüntülenir. Bu nedenle, ödüllü reklamları uygulamanıza entegre etmenin ilk adımı RewardedAd örneği oluşturup başlatmaktır.

  1. Uygulamanızın C++ koduna aşağıdaki başlığı ekleyin:

     #include "firebase/gma/rewarded_ad.h"
    

  2. Bir RewardedAd nesnesi tanımlayın ve bu örneği somutlaştırın:

     firebase::gma::RewardedAd* rewarded_ad;
     rewarded_ad = new firebase::gma::RewardedAd();
    

  3. AdParent türündeki ana görüntüleme yayınınızı kullanarak RewardedAd örneğini başlatın. Üst görünüm, Android Activity için JNI jobject referansı veya iOS UIView işaretçisidir.

    // my_ad_parent is a jobject reference to an Android Activity or
    // a pointer to an iOS UIView.
    firebase::gma::AdParent ad_parent =
      static_cast<firebase::gma::AdParent>(my_ad_parent);
    firebase::Future<void> result = rewarded_ad->Initialize(ad_parent);
    
  4. Değişken olarak geleceği saklamaya alternatif olarak RewardedAd nesnesine InitializeLastResult() çağırarak başlatma işleminin durumunu belirli aralıklarla kontrol edebilirsiniz. Bu, küresel oyun döngünüzdeki başlatma sürecini takip etmek için yararlı olabilir.

    // Monitor the status of the future in your game loop:
    firebase::Future<void> result = rewarded_ad->InitializeLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      // Initialization completed.
      if(future.error() == firebase::gma::kAdErrorCodeNone) {
        // Initialization successful.
      } else {
        // An error has occurred.
      }
    } else {
      // Initialization on-going.
    }
    

firebase::Future ile çalışma hakkında daha fazla bilgi için Yöntem çağrılarının tamamlanma durumunu izlemek amacıyla Vadeli İşlemler'i kullanma bölümüne bakın.

Reklam yükle

Reklam bir RewardedAd nesnesindeki LoadAd() yöntemi kullanılarak yüklenir. Yükleme yöntemi için RewardedAd nesnesini başlatmanız ve reklam birimi kimliğiniz ile AdRequest nesnenizin olması gerekir. firebase::Future, yükleme işleminin durumunu ve sonucunu izlemek için kullanabileceğiniz bir değer döndürür.

Aşağıdaki kod, RewardedAd başarıyla başlatıldıktan sonra nasıl reklam yükleneceğini gösterir:

firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = rewarded_ad->LoadAd(rewarded_ad_unit_id, ad_request);

Geri çağırmalar için kaydolun

Ödüllü reklam sunumu ve yaşam döngüsü olaylarıyla ilgili bildirim almak için FullScreenContentListener sınıfını genişletmeniz gerekir. Özel FullScreenContentListener alt sınıfınız RewardedAd::SetFullScreenContentListener() yöntemi aracılığıyla kaydedilebilir ve reklam başarıyla veya başarısız bir şekilde sunulduğunda ve kapatıldığında geri çağırma alır.

Aşağıdaki kod, sınıfın nasıl genişletileceğini ve reklama nasıl atanacağını gösterir:

  class ExampleFullScreenContentListener
      : public firebase::gma::FullScreenContentListener {

   public:
    ExampleFullScreenContentListener() {}

    void OnAdClicked() override {
      // This method is invoked when the user clicks the ad.
    }

    void OnAdDismissedFullScreenContent() override {
     // This method is invoked when the ad dismisses full screen content.
    }

    void OnAdFailedToShowFullScreenContent(const AdError& error) override {
      // This method is invoked when the ad failed to show full screen content.
      // Details about the error are contained within the AdError parameter.
    }

    void OnAdImpression() override {
      // This method is invoked when an impression is recorded for an ad.
    }

    void OnAdShowedFullScreenContent() override {
      // This method is invoked when the ad showed its full screen content.
    }
  };

  ExampleFullScreenContentListener* example_full_screen_content_listener =
    new ExampleFullScreenContentListener();
  rewarded_ad->SetFullScreenContentListener(example_full_screen_content_listener);

RewardedAd tek kullanımlık bir nesnedir. Bu durumda, ödüllü bir reklam bir kez gösterildikten sonra tekrar gösterilemez. En iyi uygulama, FullScreenContentListener ödüllü reklam yönteminizin OnAdDismissedFullScreenContent() yöntemine 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öster ve ödül etkinliğini yönet

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 UserEarnedReward nesnesi sağlamanız gerekir.

Aşağıdaki kod, bir RewardedAd öğesinin nasıl gösterileceğini gösterir:

// A simple listener track UserEarnedReward events.
class ExampleUserEarnedRewardListener :
    public firebase::gma::UserEarnedRewardListener {
 public:
   ExampleUserEarnedRewardListener() { }

  void OnUserEarnedReward(const firebase::gma::AdReward& reward) override {
    // Reward the user!
  }
};

ExampleUserEarnedRewardListener* user_earned_reward_listener =
  new ExampleUserEarnedRewardListener();
firebase::Future<void> result = rewarded_ad->Show(user_earned_reward_listener);

SSS

Başlatma çağrısı için zaman aşımı var mı?
Uyumlulaştırma ağının henüz başlatması olmasa bile Google Mobile Ads C++ SDK'sı 10 saniye sonra Initialize() tarafından döndürülen firebase::Future işlemini tamamlar.
İlk uyumlulaştırma geri çağırması aldığımda bazı uyumlulaştırma ağları hazır değilse ne olur?

SDK başlatma tamamlandıktan sonra reklam yüklemek en iyi yöntemdir. Uyumlulaştırma ağı hazır olmasa bile Google Mobile Ads C++ SDK'sı yine de bu ağdan reklam ister. Bu nedenle, bir uyumlulaştırma ağı zaman aşımından sonra açılmaya başlarsa yine de bu oturumda gelecekteki reklam isteklerini yayınlayabilir.

GetInitializationStatus() ç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?

AdapterStatus.description(), bağdaştırıcının reklam isteklerini sunmaya neden hazır olmadığını açıklar. Günlük kaydı uyumlulaştırma bağdaştırıcısı durumu örneği için GitHub'daki örnek hızlı başlangıç uygulamamızın kaynak koduna bakın.

Ek kaynaklar

GitHub örneği