Ödüllü reklamlar


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

Müşteri başarı öykülerinden 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şturup test ederken canlı yayınlanan üretim reklamları yerine test reklamlarını kullandığınızdan emin olun. Bu işlemi 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 kimlikler, her istek için test reklamları döndürecek şekilde özel olarak yapılandırılmıştır. Kodlama, test etme ve hata ayıklama sırasında kendi uygulamalarınızda bu kimlikleri kullanabilirsiniz. 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 çalışma şekli hakkında daha fazla bilgi için Test Reklamları başlıklı makaleyi inceleyin.

Uygulama

Ödüllü reklamları entegre etme ile ilgili temel adımlar şunlardır:

  1. Reklam yükleyin.
  2. Geri arama için kaydolun.
  3. Reklamı gösterin ve ödül etkinliğini yönetin.

RewardedAd yapılandırma

Ödüllü reklamlar RewardedAd nesnelerinde gösterilir. 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 bildirip oluşturun:

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

  3. RewardedAd örneğini, üst görünümünüzü AdParent türüne yayınlayarak başlatın. Üst görünüm, bir Android Activity için JNI jobject referansı veya bir 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 tutmak yerine, InitializeLastResult() işlevini RewardedAd nesnesinde çağırarak başlatma işleminin durumunu düzenli olarak kontrol edebilirsiniz. Bu, küresel oyun döngünüzdeki başlatma sürecini takip etmenize yardımcı 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 Futures'ı kullanma başlıklı makaleyi inceleyin.

Reklam yükleme

Reklam yükleme işlemi, RewardedAd nesnesinde LoadAd() yöntemi kullanılarak gerçekleştirilir. Yükleme yöntemi, RewardedAd nesnesini başlatmış olmanızı, reklam birimi kimliğinizi ve bir AdRequest nesnesini kullanmanı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 kodda, RewardedAd başarıyla başlatıldıktan sonra reklamın nasıl yükleneceği gösterilmektedir:

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 kaydolma

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

Aşağıdaki kodda, sınıfın nasıl genişletileceği ve reklama nasıl atanacağı gösterilmektedir:

  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 nedenle, bir ödüllü reklam gösterildikten sonra tekrar gösterilemez. En iyi uygulama olarak, OnAdDismissedFullScreenContent() yönteminde başka bir ödüllü reklam yüklemeniz önerilir. Böylece, önceki reklam kapatılır kapatılmaz bir sonraki ödüllü reklam yüklenmeye başlar.FullScreenContentListener

Reklamı gösterin ve ödül etkinliğini işleyin

Kullanıcılara ödüllü reklam göstermeden önce, ödül karşılığında ödüllü reklam içeriğini görüntüleme konusunda açık bir seçim sunmanız gerekir. Ödüllü reklamlar her zaman isteğe bağlı bir deneyim olmalıdır.

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

Aşağıdaki kodda RewardedAd simgesinin 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 sonra, bir uyumlulaştırma ağı ilk kullanıma hazırlama işlemini tamamlamamış olsa bile Google Mobile Ads C++ SDK'sı Initialize() tarafından döndürülen firebase::Future tamamlar.
Başlatma geri araması aldığımda bazı arabuluculuk ağları hazır değilse ne olur?

SDK'nın ilk kullanıma hazırlama işlemi tamamlandıktan sonra reklamları yüklemek en iyi uygulamadır. Bir uyumlulaştırma ağı hazır olmasa bile Google Mobile Ads C++ SDK'sı bu ağdan reklam isteğinde bulunmaya devam eder. Bu nedenle, bir uyumlulaştırma ağı başlatma işlemini zaman aşımından sonra tamamlarsa söz konusu oturumdaki gelecekteki reklam isteklerine yine de hizmet verebilir.

GetInitializationStatus() işlevini ç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 isteklerine hizmet vermeye hazır olmadığını açıklar. Aracılık 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'daki örnek