Ödüllü reklamlar

Ödüllü reklamlar, kullanıcılara uygulama içi ödüller karşılığında etkileşimde bulunma seçeneği sunar. Bu kılavuzda, Google Mobile Ads C++ SDK'sını kullanarak ödüllü reklamların Android ve iOS uygulamalarına nasıl entegre edileceği gösterilmektedir.

Bazı müşteri başarı öykülerini okuyun: örnek olay 1, örnek olay 2.

Ön koşullar

Her zaman test reklamlarıyla test etme

Uygulamalarınızı oluştururken ve test ederken canlı, üretim reklamları yerine test reklamlarını 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şir:

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

Bu reklamlar, her istek için test reklamı döndürecek şekilde özel olarak yapılandırılmıştır. Kodlama, test etme ve hata ayıklama sırasında bu reklamları kendi uygulamalarınızda kullanmakta serbestsiniz. Uygulamanızı yayınlamadan önce bu kimliği kendi reklam birimi kimliğinizle değiştirdiğinizden emin olmanız yeterlidir.

Mobile Ads SDK'sının test reklamlarının nasıl çalıştığı hakkında daha fazla bilgi için Test Reklamları bölümüne bakın.

Uygulama

Ödüllü reklamları entegre etmenin temel adımları şunlardır:

  1. Reklam yükleyin.
  2. Geri çağırmalara kaydolun.
  3. Reklamı göstermek ve ödül etkinliğini yönetmek.

RewardedAd yapılandırın

Ödüllü reklamlar RewardedAd nesnede gösterilir. Bu yüzden, ödüllü reklamları uygulamanıza entegre etmenin ilk adımı bir RewardedAd örneği oluşturup başlatmaktır.

  1. Uygulamanızın C++ koduna şu üstbilgiyi ekleyin:

     #include "firebase/gma/rewarded_ad.h"
    

  2. RewardedAd nesnesi tanımlama ve örneklendirme:

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

  3. RewardedAd örneğini, AdParent türünde üst görünüm yayınlamanızı kullanarak başlatın. Üst görünüm, Android Activity için bir 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. Geleceği değişken olarak tutmaya alternatif olarak, RewardedAd nesnesinde InitializeLastResult() yöntemini çağırarak başlatma işleminin durumunu düzenli olarak kontrol edebilirsiniz. Bu, genel oyun döngünüzdeki başlatma sürecini takip ederken faydalı 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 edinmek için Yöntem çağrılarının tamamlanma durumunu izlemek için Vadeli İşlemleri kullanma bölümüne bakın.

Reklam yükle

Reklam yükleme işlemi, bir RewardedAd nesnesi üzerinde LoadAd() yöntemi kullanılarak tamamlanır. Yükleme yöntemi, RewardedAd nesnesini başlatmanızı ve reklam birimi kimliğiniz ile bir AdRequest nesnesine sahip olmanızı gerektirir. Yükleme işleminin durumunu ve sonucunu izlemek için kullanabileceğiniz bir firebase::Future döndürülür.

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

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ğırmalara kaydol

Ödüllü reklam sunumu ve yaşam döngüsü olaylarıyla ilgili bildirim almak için FullScreenContentListener sınıfını uzatmanız gerekir. Özel FullScreenContentListener alt sınıfınız RewardedAd::SetFullScreenContentListener() yöntemiyle kaydedilebilir ve reklam başarıyla veya başarısız olduğunda veya kapatıldığında geri çağırmalar 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, ödüllü bir reklamın gösterildikten sonra tekrar gösterilemeyeceği anlamına gelir. En iyi uygulama, FullScreenContentListener cihazınızın OnAdDismissedFullScreenContent() yöntemine başka bir ödüllü reklam yüklemektir. Böylece, önceki ödüllü reklam kapatılır çıkarılmaz bir sonraki ödüllü reklam yüklenmeye başlar.

Reklamı gösterme ve ödül etkinliğini yönetme

Kullanıcılara ödüllü reklam göstermeden önce, kullanıcıya ödül karşılığında ödüllü reklam içeriğini görüntülemesi için açık bir seçenek sunmalısınız. Ödüllü reklamlar her zaman isteğe bağlı bir deneyim olmalıdır.

Reklamınızı sunarken, kullanıcının ödülünü işlemesi için bir UserEarnedReward nesnesi sağlamanız gerekir.

Aşağıdaki kodda RewardedAd öğesinin nasıl gösterileceği gösterilmektedir:

// 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ı?
10 saniye sonra Google Mobile Ads C++ SDK'sı, uyumlulaştırma ağı henüz başlatma aşamasını tamamlamamış olsa bile Initialize() tarafından döndürülen firebase::Future işlemini tamamlar.
Bazı uyumlulaştırma ağları başlatma geri çağırma işlemini aldığımda hazır değilse ne olur?

Reklamları, SDK başlatma tamamlandıktan sonra yüklemek bir en iyi uygulamadır. Bir uyumlulaştırma ağı hazır olmasa bile, Google Mobile Ads C++ SDK'sı bu ağdan bir reklam istemeye devam eder. Dolayısıyla, bir uyumlulaştırma ağı zaman aşımı süresinden sonra başlatma işlemini bitirirse bu oturumda gelecekteki reklam isteklerine hizmet vermeye devam edebilir.

Uygulama oturumunuz boyunca GetInitializationStatus() yöntemini çağırarak tüm bağdaştırıcıların başlatma durumunu yoklamaya devam edebilirsiniz.

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

AdapterStatus.description(), bir bağdaştırıcının neden reklam istekleri sunmaya hazır olmadığını açıklar. Uyumlulaştırma bağdaştırıcısı durumunu günlüğe kaydetmeyle ilgili bir örnek için GitHub'daki örnek hızlı başlangıç uygulamamızın kaynak koduna bakın.

Ek kaynaklar

GitHub'da örnek