Ö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: 1. örnek olay, 2. örnek olay.
Ön koşullar
- Başlayın bölümünü tamamlayın.
- (Yalnızca Android) JNI
jobjectreferanslarıyla çalışma konusunda deneyimli olmak (bkz. Android JNI ipuçları).
Her zaman test reklamlarıyla test yapın
Uygulamalarınızı oluşturup test ederken canlı ve üretim reklamları yerine test reklamlarını kullandığınızdan emin olun. Bu işlemi yapmazsanız hesabınız askıya alınabilir.
Test reklamlarını yüklemenin en kolay yolu, ödüllü reklamlar için cihaz platformuna göre değişen özel test reklam birimi kimliğimizi kullanmaktır:
- 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 ve kodlama, test etme ve hata ayıklama sırasında kendi uygulamalarınızda kullanabilirsiniz. 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ı başlıklı makaleye 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ül etkinliğini yönetin.
RewardedAd yapılandırma
Ödüllü reklamlar RewardedAd nesnelerinde gösterilir. 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 üstbilgiyi ekleyin:
#include "firebase/gma/rewarded_ad.h"
Bir
RewardedAdnesnesi tanımlayıp örneklendirin:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
RewardedAdörneğini, ebeveyn görünümünüzüAdParenttürüne dönüştürerek ilk kullanıma hazırlayın. Ebeveyn görünümü, Androidjobjectiçin bir JNIActivityreferansı veya iOSUIViewiçin bir 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 değişken olarak tutmak yerine,
InitializeLastResult()işleviniRewardedAdnesnesinde çağırarak başlatma işleminin durumunu düzenli olarak kontrol edebilirsiniz. Bu, küresel oyun döngünüzdeki başlatma sürecini takip etmenize yardımcı 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 Futures'ı kullanma başlıklı makaleyi inceleyin.
Reklam yükleme
Reklam yükleme işlemi, 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 nesnenizi gerektirir. Yükleme işleminin durumunu ve sonucunu izlemek için kullanabileceğiniz bir A
firebase::Future döndürülür.
Aşağıdaki kodda, RewardedAd başarıyla başlatıldıktan sonra 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 arama için kaydolma
Ödüllü reklam sunumu ve yaşam döngüsü etkinlikleriyle ilgili bildirimler almak için FullScreenContentListener sınıfını genişletmeniz gerekir. Özel FullScreenContentListener alt sınıfınız RewardedAd::SetFullScreenContentListener() yöntemiyle kaydedilebilir. Reklam başarıyla veya başarısız bir şekilde sunulduğunda ve kapatıldığında geri çağırma işlemleri 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 nedenle, ödüllü reklam gösterildikten sonra tekrar gösterilemez. En iyi uygulama, OnAdDismissedFullScreenContent() yönteminde
FullScreenContentListener başka bir ödüllü reklam
yüklemektir. Böylece, önceki reklam kapatılır
kapatılmaz sonraki ödüllü reklam yüklenmeye başlar.
Reklamı gösterin ve ödül etkinliğini işleyin.
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 açık bir seçim 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ö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 sonra, bir uyumlulaştırma ağı henüz başlatma işlemini tamamlamamış olsa bile Google Mobile Ads C++ SDK'sı,
Initialize()tarafından döndürülenfirebase::Futuretamamlar. - Başlatma geri araması aldığımda bazı uyumlulaştırma ağları hazır değilse ne olur?
En iyi uygulama, SDK başlatma işlemi tamamlandıktan sonra reklamları yüklemektir. Bir uyumlulaştırma ağı hazır olmasa bile Google Mobile Ads C++ SDK'sı bu ağdan reklam isteğinde bulunmaya devam eder. Bu nedenle, bir uyumlulaştırma ağı başlatma işlemini zaman aşımından sonra tamamlarsa söz konusu oturumdaki gelecekteki reklam isteklerine yine de hizmet verebilir.
GetInitializationStatus()işlevini ç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 reklam isteklerine hizmet vermeye neden hazır olmadığını açıklar. Aracılık 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
- Örnek hızlı başlangıç uygulamamızın kaynak kodunu GitHub'da görüntüleyin.