Ödüllü reklamlar, kullanıcıların uygulama içi ödüller karşılığında onlarla etkileşimde bulunma seçeneğine sahip olmasını sağlar. 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 (Android JNI ipuçları bölümüne bakın).
Her zaman test reklamlarıyla test etme
Uygulamalarınızı oluşturup test ederken canlı üretim reklamları yerine test reklamlarını 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 farklılık gösterir:
- Android:
ca-app-pub-3940256099942544/5224354917
- iOS:
ca-app-pub-3940256099942544/1712485313
Özel olarak her istek için test reklamı döndürecek şekilde yapılandırılmışlardır. Kodlama, test etme ve hata ayıklama sırasında bu özelliği kendi uygulamalarınızda kullanabilirsiniz. Sadece uygulamanızı yayınlamadan önce bunu 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ı konusuna bakın.
Uygulama
Ödüllü reklamları entegre etmek için başlıca adımlar şunlardır:
- Bir reklam yükleyin.
- Geri çağırma işlevleri için kaydolun.
- Reklamı gösterin ve ödül etkinliğini gerçekleştirin.
RewardedAd
yapılandırın
Ödüllü reklamlar, RewardedAd
nesne halinde görüntülenir. Bu nedenle, ödüllü reklamları uygulamanıza entegre etmenin ilk adımı bir RewardedAd
örneği oluşturup başlatmaktır.
Aşağıdaki başlığı uygulamanızın C++ koduna ekleyin:
#include "firebase/gma/rewarded_ad.h"
Bir
RewardedAd
nesnesini tanımlayın ve örneklendirin:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
Ana görünümünüzü
AdParent
türüne yayınlayarakRewardedAd
örneğini başlatın. Üst görünüm, bir AndroidActivity
için JNIjobject
referansı 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 tutmaya alternatif olarak,
RewardedAd
nesnesindeInitializeLastResult()
yöntemini çağırarak başlatma işleminin durumunu düzenli aralıklarla kontrol edebilirsiniz. Bu, genel oyun döngünüzdeki başlatma sürecini takip etmek için 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 için Yöntem çağrılarının tamamlanma durumunu izlemek için Vadeli İşlemleri Kullanma bölümüne bakın.
Reklam yükle
Reklam yükleme, RewardedAd
nesnesi üzerinde LoadAd()
yöntemi kullanılarak gerçekleştirilir. Yükleme yöntemi, RewardedAd
nesnesini başlatmanızı ve reklam birimi kimliğiniz ile 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
başarıyla başlatıldıktan sonra 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ğırma işlevleri 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öntemiyle kaydedilebilir ve reklam başarılı veya başarısız olduğunda ya da 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, ödüllü reklamın gösterildikten sonra tekrar gösterilmeyeceği anlamına gelir. En iyi uygulamalardan biri, FullScreenContentListener
uygulamanızın OnAdDismissedFullScreenContent()
yönteminde başka bir ödüllü reklam yüklemektir. Böylece sonraki ödüllü reklam, önceki kapatılır kapatılmaz yüklenmeye başlar.
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ülemesi için açık bir seçenek sunmanız gerekir. Ödüllü reklamlar her zaman etkinleştirilebilen bir deneyim olmalıdır.
Reklamınızı gösterirken kullanıcı için ödülü işleyecek 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
- İlk kullanıma hazırlama çağrısı için zaman aşımı var mı?
- 10 saniye geçtikten 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::Future
iş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ı yine de bu ağdan reklam ister. Dolayısıyla, bir uyumlulaştırma ağı zaman aşımından sonra başlatma işlemini tamamlarsa bu oturumda gelecekteki reklam isteklerine hizmet sunmaya 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 reklam isteklerine hizmet vermek için 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'da örnek
- GitHub'da örneğimizin hızlı başlangıç uygulama kaynak kodunu görüntüleyin.