Ödüllü reklamlar

Ödüllü reklamlar, kullanıcılara uygulama içi ödüller karşılığında onlarla 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. Bunu yapmazsanız 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 şablonlar her istek için test reklamı döndürecek şekilde özel olarak yapılandırılmıştır. Kodlama, test ve hata ayıklama sırasında bu kodu kendi uygulamalarınızda kullanmakta serbestsiniz. Uygulamanızı yayınlamadan önce bu kimliği kendi reklam birimi kimliğinizle değiştirdiğinizden emin olun.

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 ana adımları şunlardır:

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

RewardedAd yapılandırın

Ödüllü reklamlar RewardedAd nesnelerde gösterilir. Bu nedenle, ö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. Bir RewardedAd nesnesi bildirme ve örnek oluşturma:

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

  3. Üst görünüm yayınınızı AdParent türünde kullanarak RewardedAd örneğini başlatın. Üst öğe görünümü, bir Android Activity öğesine veya iOS UIView öğesine işaret eden bir JNI jobject referansıdır.

    // 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 nesnesine InitializeLastResult() işlevini çağırarak başlatma işleminin durumunu düzenli olarak kontrol edebilirsiniz. Bu, genel oyun döngünüzdeki başlatma sürecini takip etmek açısından 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 İşlemler'i kullanma bölümüne bakın.

Reklam yükle

Reklam yükleme işlemi, 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ö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 arama için kaydol

Ödüllü reklam sunumu ve yaşam döngüsü olaylarıyla ilgili bildirim almak için FullScreenContentListener sınıfının süresini uzatmanız gerekir. Özel FullScreenContentListener alt sınıfınız RewardedAd::SetFullScreenContentListener() yöntemiyle kaydedilebilir ve reklam başarılı veya başarısız olduğunda ve 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 reklamınızın OnAdDismissedFullScreenContent() yöntemine başka bir ödüllü reklam yüklemektir. Böylece, sonraki ödüllü reklam bir sonraki ödüllü reklam kapatılır kapatılmaz yüklenmeye başlar.

Reklamı gösterin ve ödül etkinliğini yönetin

Kullanıcılara ödüllü reklam göstermeden önce, ödüllü reklam içeriğini ödül karşılığında görüntülemesi için açık bir seçenek sunmanız gerekir. Ö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 kod, bir RewardedAd öğesinin nasıl görüntüleneceğ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 bir zaman aşımı var mı?
Google Mobile Ads C++ SDK'sı 10 saniye sonra, uyumlulaştırma ağının başlatma işlemi hâlâ tamamlanmamış olsa bile Initialize() tarafından döndürülen firebase::Future işlemini tamamlar.
İlk kullanıma hazırlama geri çağırmasını aldığımda bazı uyumlulaştırma ağları 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 yine de bir reklam ister. Dolayısıyla, bir uyumlulaştırma ağı zaman aşımından sonra başlatma işlemini bitirirse bu oturumda gelecekteki reklam isteklerine hizmet vermeye devam edebilir.

GetInitializationStatus() yöntemini çağırarak uygulama oturumunuz boyunca 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 öğrenebilirim?

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'da örnek hızlı başlangıç uygulamamızın kaynak kodunu inceleyin.

Ek kaynaklar

GitHub'da örnek