Ö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şlayı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 da kullanabilirsiniz. Yalnızca 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ı konusuna bakın.
Uygulama
Ödüllü reklamları entegre etmenin temel adımları şunlardır:
- Reklam yükleyin.
- Geri arama için kaydolun.
- Reklamı gösterin ve ödül etkinliğini yönetin.
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şturup başlatmaktır.
Uygulamanızın C++ koduna şu başlığı ekleyin:
#include "firebase/gma/rewarded_ad.h"
Bir
RewardedAd
nesnesini tanımlama ve örneklendirme:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
AdParent
türünde üst görünümlü yayınınızı kullanarakRewardedAd
örneğini başlatın. Üst görünüm, bir AndroidActivity
için JNIjobject
referansı veya iOSUIView
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);
Geleceği değişken olarak tutmaya alternatif olarak,
RewardedAd
nesnesineInitializeLastResult()
komutunu ç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, bir RewardedAd
nesnesinde LoadAd()
yöntemi kullanılarak tamamlanır. Yükleme yöntemi, RewardedAd
nesnesini başlatmanızı ve reklam birimi kimliğiniz ile 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 çağırmalara kaydolun
Ö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ıyla veya başarısız olduğunda veya 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ü reklamın gösterildikten sonra tekrar gösterilemeyeceği anlamına gelir. En iyi uygulama, FullScreenContentListener
cihazınızın OnAdDismissedFullScreenContent()
yöntemine başka bir ödüllü reklam yüklemektir. Böylece, sonraki ödüllü reklam, önceki 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ü 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 zaman aşımı var mı?
- 10 saniye sonra Google Mobile Ads C++ SDK'sı, 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. - Bazı uyumlulaştırma ağları başlatma geri çağırmasını aldığımda hazır değilse ne olur?
Reklamların, SDK başlatma tamamlandıktan sonra yüklenmesi bir en iyi uygulamadır. Uyumlulaştırma ağı hazır olmasa bile, Google Mobile Ads C++ SDK'sı bu ağdan yine de reklam ister. Dolayısıyla, bir uyumlulaştırma ağı zaman aşımından sonra başlatılmasını tamamlarsa bu oturumda gelecekte reklam isteklerine hizmet vermeye 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 neden reklam istekleri sunmaya 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 kodunu inceleyin.
Ek kaynaklar
GitHub'daki örnek
- Örnek hızlı başlangıç uygulamamızın kaynak kodunu GitHub'da görüntüleyin.