Ö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: başarılı örnek 1, başarılı örnek 2.
Ön koşullar
- Başlayın bölümünü tamamlayın.
- (Yalnızca Android) JNI
jobjectreferanslarıyla çalışma konusunda bilgi sahibi olma (Android JNI ipuçları bölümüne bakın).
Her zaman test reklamlarıyla test edin
Uygulamalarınızı oluştururken ve test ederken yayındaki, üretim aşamasındaki reklamlar yerine test reklamlarını kullandığınızdan emin olun. Bu koşula uymamanız halinde 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şiklik gösterir:
- 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 bunları kendi uygulamalarınızda kullanabilirsiniz. Uygulamanızı yayınlamadan önce bu kimliği kendi reklam birimi kimliğinizle değiştirmeyi unutmayın.
Mobile Ads SDK'sının test reklamlarının işleyiş şekli hakkında daha fazla bilgi için Test Reklamları bölümüne bakın.
Uygulama
Ödüllü reklamları entegre etmenin temel adımları şunlardır:
- Reklam yükleyin.
- Geri aramalar için kaydolun.
- Reklamı gösterin ve ödüllü etkinliği işleyin.
RewardedAd yapılandırma
Ödüllü reklamlar RewardedAd nesnelerinde 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 aşağıdaki başlığı ekleyin:
#include "firebase/gma/rewarded_ad.h"
Bir
RewardedAdnesnesi tanımlayın ve örneklendirin:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
RewardedAdörneğini, üst görünümünüzüAdParenttürüne dönüştürerek başlatın. Ebeveyn görünümü, bir AndroidActivityiçin JNIjobjectreferansı veya bir iOSUIViewiçin işaretçidir.// 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 bir değişken olarak tutmaya alternatif olarak,
RewardedAdnesnesindeInitializeLastResult()yöntemini çağırarak başlatma işleminin durumunu düzenli olarak kontrol edebilirsiniz. Bu, global oyun döngü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 Yöntem çağrılarının tamamlanma durumunu izlemek için Future'ları kullanma başlıklı makaleyi inceleyin.
Reklam yükleme
Reklam yükleme işlemi, bir 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 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 bir 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 çağırmalar için kaydolma
Ödüllü reklam sunumu ve yaşam döngüsü etkinlikleriyle ilgili bildirimleri 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ıyla veya başarısız bir şekilde sunulduğunda ve kapatıldığında geri çağırmalar 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, bir ödüllü reklam gösterildikten sonra tekrar gösterilemeyeceği anlamına gelir. En iyi uygulama, FullScreenContentListener sınıfınızın OnAdDismissedFullScreenContent() yönteminde başka bir ödüllü reklam yüklemektir. Böylece, önceki ödüllü reklam kapatılır kapatılmaz bir sonraki ödüllü reklam yüklenmeye başlar.
Reklamı gösterme ve ödül etkinliğini işleme
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 kullanıcıya 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ıya ödülü vermek için bir UserEarnedReward nesnesi sağlamanız gerekir.
Aşağıdaki kodda RewardedAd öğesinin nasıl gösterileceği açıklanmaktadır:
// 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ı?
- 10 saniye 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ülenfirebase::Futureiş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ı bu ağdan reklam ister. Dolayısıyla, bir uyumlulaştırma ağı başlatma işlemini zaman aşımından sonra tamamlarsa bu oturumdaki gelecekteki reklam isteklerine yine de hizmet verebilir.
GetInitializationStatus()yöntemini ç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 sunmaya 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'daki örnek
- GitHub'da örnek hızlı başlangıç uygulamamızın kaynak kodunu görüntüleyin.