Ödüllü reklamlar, kullanıcıların uygulama içi ödüller karşılığında onlarla etkileşime geçmelerine imkan sağlar. Bu kılavuz, Google Mobile Ads C++ SDK'sını kullanarak ödüllü reklamları Android ve iOS uygulamalarına nasıl entegre edeceğinizi gösterir.
Bazı müşteri başarı öykülerini okuyun: örnek olay 1, örnek olay 2.
Ön koşullar
- Başlayın işlemini tamamlayın.
- (Yalnızca Android) JNI
jobject
referanslarıyla ilgili bilgi sahibi olma (Android JNI ipuçlarına bakın).
Her zaman test reklamlarıyla test edin
Uygulamalarınızı oluştururken ve test ederken yayında olan ü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ü reklam 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 etme ve hata ayıklama işlemleri sırasında bunları 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üne bakın.
Uygulama
Ödüllü reklamları entegre etme ana adımları şunlardır:
- Bir reklam yükleyin.
- Geri çağırma için kaydolun.
- Reklamı görüntüleyin ve ödül etkinliğini yönetin.
RewardedAd
yapılandırın
Ödüllü reklamlar RewardedAd
nesnesinde gösterilir. Dolayısıyla, ödüllü reklamları uygulamanıza entegre etmenin ilk adımı 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
nesnesi belirleyip beyan edin:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
Üst görünüm yayınınızı
AdParent
türünde kullanarakRewardedAd
örneğini başlatın. Üst görünüm, AndroidActivity
için bir JNIjobject
referansı veya iOSUIView
ile ilgilidir.// 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()
işlevi çağırarak ilk kullanıma hazırlama işleminin durumunu belirli aralıklarla kontrol edebilirsiniz. Bu, genel oyun döngünüzdeki ilk kullanıma hazırlama 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 İşlemler'i kullanma konusuna bakın.
Reklam yükleme
Reklam yükleme işlemi, RewardedAd
nesnesindeki LoadAd()
yöntemi kullanılarak gerçekleştirilir. Yükleme yöntemi için RewardedAd
nesnesini başlatmış olmanız ve reklam birimi kimliğiniz ile bir AdRequest
nesnesinin olması gerekir. Yükleme işleminin durumunu ve sonucunu izlemek için kullanabileceğiniz bir firebase::Future
döndürülür.
RewardedAd
başarıyla başlatıldıktan sonra reklamın nasıl yükleneceğini aşağıdaki kodda görebilirsiniz:
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çin kaydolun
Ödüllü reklam sunumu ve yaşam döngüsü olaylarıyla ilgili bildirim almak için FullScreenContentListener
sınıfını artırmanı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 olarak sunulduğunda ve 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ü bir reklamın bir kez gösterildikten sonra tekrar gösterilmeyeceği anlamına gelir. En iyi uygulama, FullScreenContentListener
ödülünüzün OnAdDismissedFullScreenContent()
yönteminde başka bir ödüllü reklam yüklemektir. Böylece bir sonraki ödüllü reklam, önceki reklam kapatıldığı anda 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ülemeniz için kullanıcıya açık bir seçenek sunmalısınız. Ödüllü reklamlar her zaman isteğe bağlı olmalıdır.
Reklamınızı sunarken, kullanıcının ödülünü işlemek için bir UserEarnedReward
nesnesi sağlamanız gerekir.
Aşağıdaki kod, 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ı?
- 10 saniye sonra Google Mobile Ads C++ SDK'sı, bir uyumlulaştırma ağı ilk kullanıma hazırlamayı henüz tamamlamamış olsa bile
Initialize()
tarafından döndürülenfirebase::Future
işlemini tamamlar. - İlk kullanıma hazırlama geri çağırması aldığımda bazı uyumlulaştırma ağları hazır değilse ne olur?
SDK başlatma işlemi tamamlandıktan sonra reklam yüklemek en iyi uygulamadır. Uyumlulaştırma ağı hazır olmasa bile Google Mobile Ads C++ SDK'sı yine de ağdan reklam ister. Bu nedenle, bir uyumlulaştırma ağı zaman aşımından sonra ilk kez başlatılırsa bu oturumda gelecekte yapılacak reklam isteklerine yine de hizmet verebilir.
GetInitializationStatus()
çağırarak uygulama oturumunuz genelinde tüm bağdaştırıcıların ilk kullanıma hazırlama 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 isteklerine neden hizmet vermeye hazır olmadığını açıklar. Uyumlulaştırma bağdaştırıcısı durumunu günlüğe kaydetme örneğini görmek için GitHub'daki örnek hızlı başlangıç uygulamamızın kaynak koduna bakın.
Ek kaynaklar
GitHub'da örnek
- GitHub'daki örnek hızlı başlangıç uygulamamızın kaynak kodunu görüntüleyin.