Ödüllü reklamlar

Ödüllü reklamlar, kullanıcıların uygulama içi ödüller karşılığında onlarla etkileşimde bulunma seçeneğine sahip olmasını sağlar. Bu kılavuzda, Google Mobile Ads C++ SDK'sı kullanılarak ö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şturup 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 farklılık gösterir:

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

Özel olarak her istek için test reklamı döndürecek şekilde yapılandırılmışlardır. Kodlama, test etme ve hata ayıklama sırasında bu özelliği kendi uygulamalarınızda kullanabilirsiniz. Sadece uygulamanızı yayınlamadan önce bunu kendi reklam birimi kimliğinizle değiştirdiğinizden emin olun.

Mobile Ads SDK'sının test reklamlarının işleyiş şekli hakkında daha fazla bilgi için Test Reklamları konusuna bakın.

Uygulama

Ödüllü reklamları entegre etmek için başlıca adımlar şunlardır:

  1. Bir reklam yükleyin.
  2. Geri çağırma işlevleri için kaydolun.
  3. Reklamı gösterin ve ödül etkinliğini gerçekleştirin.

RewardedAd yapılandırın

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

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

     #include "firebase/gma/rewarded_ad.h"
    

  2. Bir RewardedAd nesnesini tanımlayın ve örneklendirin:

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

  3. Ana görünümünüzü AdParent türüne yayınlayarak RewardedAd örneğini başlatın. Üst görünüm, bir Android Activity için JNI jobject referansı veya bir iOS UIView işaretçisi.

    // 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 aralıklarla kontrol edebilirsiniz. Bu, genel oyun döngünüzdeki başlatma sürecini takip etmek için 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 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, RewardedAd nesnesi üzerinde LoadAd() yöntemi kullanılarak gerçekleştirilir. Yükleme yöntemi, RewardedAd nesnesini başlatmanızı ve reklam birimi kimliğiniz ile bir AdRequest nesnenizin olmasını 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 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 çağırma işlevleri 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öntemiyle kaydedilebilir ve reklam başarılı veya başarısız olduğunda ya da 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, ödüllü reklamın gösterildikten sonra tekrar gösterilmeyeceği anlamına gelir. En iyi uygulamalardan biri, FullScreenContentListener uygulamanızın OnAdDismissedFullScreenContent() yönteminde başka bir ödüllü reklam yüklemektir. Böylece sonraki ödüllü reklam, önceki kapatılır kapatılmaz yüklenmeye başlar.

Reklamı gösterin ve ödül etkinliğini gerçekleştirin

Ödüllü reklam kullanıcılara 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 sunmanız gerekir. Ödüllü reklamlar her zaman etkinleştirilebilen bir deneyim olmalıdır.

Reklamınızı gösterirken kullanıcı için ödülü işleyecek bir UserEarnedReward nesnesi sağlamanız gerekir.

Aşağıdaki kodda, RewardedAd öğesinin nasıl görüntüleneceğ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

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

Reklamları SDK başlatma işlemi tamamlandıktan sonra yüklemek en iyi uygulamadır. Bir uyumlulaştırma ağı hazır olmasa bile Google Mobile Ads C++ SDK'sı yine de bu ağdan reklam ister. Dolayısıyla, bir uyumlulaştırma ağı zaman aşımından sonra başlatma işlemini tamamlarsa bu oturumda gelecekteki reklam isteklerine hizmet sunmaya 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 öğrenebilirim?

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

Ek kaynaklar

GitHub'da örnek