Ödüllü reklamlar, kullanıcılara uygulama içi ödüller karşılığında reklamlarla etkileşime geçme seçeneği sunar. 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
- Başlayın bölümünü tamamlayın.
- (Yalnızca Android) JNI
jobject
referanslarıyla çalışma hakkında bilgi (bkz. Android JNI ipuçları).
Her zaman test reklamlarıyla test yapın
Uygulamalarınızı oluştururken ve test ederken, uygulamalarınızın yanı sıra üretim reklamlarıdır. Aksi takdirde hesabınız askıya alınabilir.
Test reklamlarını yüklemenin en kolay yolu, aşağıdakiler için özel test reklam birimi kimliğimizi kullanmaktır: cihaz platformuna göre değişen ödüllü reklamlar:
- 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 ve kod yazma, test etme ve hata ayıklama sırasında kendi uygulamalarınızda 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 işleyiş şekli hakkında daha fazla bilgi için Test Reklamları başlıklı makaleyi inceleyin.
Uygulama
Ödüllü reklamları entegre etmenin ana adımları şunlardır:
- Reklam yükleyin.
- Geri arama için kaydolun.
- Reklamı gösterin ve ödül etkinliğini gerçekleştirin.
RewardedAd
yapılandırın
Ödüllü reklamlar RewardedAd
nesnelerinde gösterilir. Bu nedenle, ödüllü reklamları uygulamanıza entegre etmenin ilk adımı bir RewardedAd
örneği oluşturmak ve başlatmaktır.
Aşağıdaki başlığı uygulamanızın C++ koduna ekleyin:
#include "firebase/gma/rewarded_ad.h"
Bir
RewardedAd
nesnesi tanımlayıp örneklendirin:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
Üst görünümünüzü bir
AdParent
türüne yayınlayarakRewardedAd
örneğini başlatın. Üst görünüm, bir Android için JNIjobject
referansıdırActivity
veya bir iOSUIView
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);
Geleceği değişken olarak tutmak yerine, belirli aralıklarla şunu çağırarak başlatma işleminin durumunu kontrol edin:
RewardedAd
nesnesindeInitializeLastResult()
. Bu, genel oyun döngüsü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 bkz.
Metodun tamamlanma durumunu izlemek için Vadeli İşlemleri kullanın
aramaları için de kullanılabilir.
Reklam yükleme
Reklam yükleme, RewardedAd
üzerinde LoadAd()
yöntemi kullanılarak gerçekleştirilir.
nesnesini tanımlayın. Yükleme yöntemi, RewardedAd
nesnesini başlatmanızı, reklam birimi kimliğinizin ve 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
yüklendikten sonra reklamın nasıl yükleneceğini gösterir
başarıyla başlatıldı:
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 kaydolun
Ö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,
RewardedAd::SetFullScreenContentListener()
yöntemini içeren bir e-posta alırsınız ve
reklam başarılı veya başarısız bir şekilde sunulduğunda ve aynı zamanda
kapatıldı.
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, ödüllü bir reklamın bir kez gösterildikten sonra tekrar gösterilemeyeceği anlamına gelir. En iyi uygulama, önceki reklam kapatılır kapatılmaz bir sonraki ödüllü reklamın yüklenmeye başlaması için FullScreenContentListener
yönteminizin OnAdDismissedFullScreenContent()
bölümüne başka bir ödüllü reklam yüklemektir.
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ülemek için açık seçim. Ödüllü reklamlar her zaman isteğe bağlı bir deneyim olmalıdır.
Reklamınızı sunarken kullanıcıya ödülü sunacak 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
- İlklendirme çağrısı için zaman aşımı var mı?
- 10 saniye sonra Google Mobile Ads C++ SDK'sı, bir uyumlulaştırma ağı ilk kullanıma hazırlama işlemini tamamlamamış olsa bile
Initialize()
tarafından döndürülenfirebase::Future
işlevini tamamlar. - İlklendirme geri çağırmasını aldığımda bazı uyumlulaştırma ağları hazır değilse ne olur?
Reklamları, SDK ilk kullanıma hazırlandı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 o ağdan reklam isteyebilir. Bir uyumlulaştırma ağı tamamlanırsa sonra başlatıldıktan sonra, sıradaki reklam isteklerine kabul edilir.
GetInitializationStatus()
işlevini çağırarak uygulama oturumunuz boyunca 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()
, bir bağdaştırıcının reklam isteklerini yerine getirmeye hazır olmama nedenini açıklar. Şu kaynaktaki kaynak koduna bakın: örnek hızlı başlangıç uygulaması Uyumlulaştırma bağdaştırıcısı durumunu günlüğe kaydetme örneği için GitHub'ı ziyaret edin.
Ek kaynaklar
GitHub'daki örnek
- Örnek hızlı başlangıç uygulamamızın kaynak kodunu GitHub'da görüntüleyin.