Ödüllü reklamlar, kullanıcıların uygulama içi ödüller karşılığında onlarla etkileşime geçme seçeneği sunmasını sağlar. Bu kılavuzda, Google Mobile Ads C++ SDK'sı kullanılarak ödüllü reklamları Android ve iOS uygulamalarına nasıl entegre edeceğiniz açıklanmaktadır.
Müşteri başarı öykülerinin bazılarını okuyun: 1. örnek olayı, 2. örnek olay.
Ön koşullar
- Başlayın işlemini tamamlayın.
- (Yalnızca Android) JNI
jobject
referanslarıyla çalışma (Android JNI ipuçlarına bakın).
Her zaman test reklamlarıyla test yapın
Uygulamalarınızı oluştururken ve test ederken yayında, üretim amaçlı reklamlar yerine test reklamları kullandığınızdan emin olun. Aksi takdirde, 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
Bunlar, her istek için test reklamları döndürecek şekilde özel olarak yapılandırılmıştır. Kodlama, test ve hata ayıklama sırasında, reklamları kendi uygulamalarınızda kullanabilirsiniz. Uygulamanızı yayınlamadan önce kendi reklam birimi kimliğinizle değiştirmeniz yeterlidir.
Mobile Ads SDK'sının test reklamlarının işleyiş şekli hakkında daha fazla bilgi edinmek için Test Reklamları bölümünü inceleyin.
Uygulama
Ödüllü reklamları entegre etmeyle ilgili temel adımlar şunlardır:
- Bir reklam yükleyin.
- Geri çağırmalar için kaydolun.
- Reklamı gösterin ve ödül etkinliğini ele alın.
RewardedAd
yapılandırın
Ödüllü reklamlar RewardedAd
nesnelerinde görüntülenir. Bu nedenle, ödüllü reklamları uygulamanıza entegre etmenin ilk adımı 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
RewardedAd
nesnesi tanımlayın ve bu örneği somutlaştırın:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
AdParent
türündeki ana görüntüleme yayınınızı kullanarakRewardedAd
örneğini başlatın. Üst görünüm, 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);
Değişken olarak geleceği saklamaya alternatif olarak
RewardedAd
nesnesineInitializeLastResult()
çağırarak başlatma işleminin durumunu belirli aralıklarla kontrol edebilirsiniz. Bu, küresel 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 amacıyla Vadeli İşlemler'i kullanma bölümüne bakın.
Reklam yükle
Reklam bir RewardedAd
nesnesindeki LoadAd()
yöntemi kullanılarak yüklenir. Yükleme yöntemi için RewardedAd
nesnesini başlatmanız ve reklam birimi kimliğiniz ile AdRequest
nesnenizin olması gerekir. firebase::Future
, yükleme işleminin durumunu ve sonucunu izlemek için kullanabileceğiniz bir değer döndürür.
Aşağıdaki kod, RewardedAd
başarıyla başlatıldıktan sonra nasıl reklam 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ğırmalar için kaydolun
Ödüllü reklam sunumu ve yaşam döngüsü olaylarıyla ilgili bildirim almak için FullScreenContentListener
sınıfını genişletmeniz gerekir. Özel FullScreenContentListener
alt sınıfınız RewardedAd::SetFullScreenContentListener()
yöntemi aracılığıyla kaydedilebilir ve
reklam başarıyla veya başarısız bir şekilde sunulduğunda ve kapatıldığında geri çağırma
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 durumda, ödüllü bir reklam bir kez
gösterildikten sonra tekrar gösterilemez. En iyi uygulama, FullScreenContentListener
ödüllü reklam yönteminizin OnAdDismissedFullScreenContent()
yöntemine başka bir ödüllü reklam yüklemektir. Böylece bir sonraki ödüllü reklam, önceki reklam kapatılır kapatılmaz yüklenmeye başlar.
Reklamı göster ve ödül etkinliğini yönet
Kullanıcılara ödüllü reklam göstermeden önce, ödül karşılığında ödüllü reklam içeriğini görüntülemek için kullanıcıya uygunsuz bir seçenek sunmanız gerekir. Ödüllü reklamlar her zaman etkinleştirilmelidir.
Reklamınızı gösterirken, kullanıcıya verilen ödülü işlemek için bir UserEarnedReward
nesnesi sağlamanız gerekir.
Aşağıdaki kod, bir RewardedAd
öğesinin nasıl gösterileceğ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ı?
- Uyumlulaştırma ağının henüz başlatması olmasa bile Google Mobile Ads C++ SDK'sı 10 saniye sonra
Initialize()
tarafından döndürülenfirebase::Future
işlemini tamamlar. - İlk uyumlulaştırma geri çağırması aldığımda bazı uyumlulaştırma ağları hazır değilse ne olur?
SDK başlatma tamamlandıktan sonra reklam yüklemek en iyi yöntemdir. Uyumlulaştırma ağı hazır olmasa bile Google Mobile Ads C++ SDK'sı yine de bu ağdan reklam ister. Bu nedenle, bir uyumlulaştırma ağı zaman aşımından sonra açılmaya başlarsa yine de bu oturumda gelecekteki reklam isteklerini yayınlayabilir.
GetInitializationStatus()
çağırarak uygulama oturumunuz süresince 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()
, bağdaştırıcının reklam isteklerini sunmaya neden hazır olmadığını açıklar. Günlük kaydı uyumlulaştırma bağdaştırıcısı durumu örneği için GitHub'daki örnek hızlı başlangıç uygulamamızın kaynak koduna bakın.
Ek kaynaklar
GitHub örneği
- GitHub'daki örnek hızlı başlangıç uygulamamızın kaynak kodunu görüntüleyin.