Ö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
- Başlarken bölümünü tamamlayın.
- (Yalnızca Android) JNI
jobject
referanslarıyla çalışmaya aşinalık (Android JNI ipuçları sayfasına bakın).
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:
- Reklam yükleyin.
- Geri aramalar için kaydolun.
- 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.
Uygulamanızın C++ koduna şu üstbilgiyi ekleyin:
#include "firebase/gma/rewarded_ad.h"
Bir
RewardedAd
nesnesi bildirme ve örnek oluşturma:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
Üst görünüm yayınınızı
AdParent
türünde kullanarakRewardedAd
örneğini başlatın. Üst öğe görünümü, bir AndroidActivity
öğesine veya iOSUIView
öğesine işaret eden bir JNIjobject
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);
Geleceği değişken olarak tutmaya alternatif olarak,
RewardedAd
nesnesineInitializeLastResult()
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ülenfirebase::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
- Örnek hızlı başlangıç uygulamamızın kaynak kodunu GitHub'da görüntüleyin.