Ö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
jobject
referanslarıyla çalışma konusunda deneyimli olmanız (bkz. Android JNI ipuçları).
Her zaman test reklamlarıyla test yapın
Uygulamalarınızı oluşturup test ederken canlı yayınlanan ü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 ö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 kimlikler, 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 sırasında kendi uygulamalarınızda bu kimlikleri 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 çalışma şekli hakkında daha fazla bilgi için Test Reklamları başlıklı makaleyi inceleyin.
Uygulama
Ödüllü reklamları entegre etme ile ilgili 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ı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 başlığı ekleyin:
#include "firebase/gma/rewarded_ad.h"
Bir
RewardedAd
nesnesi bildirip oluşturun:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
RewardedAd
örneğini, üst görünümünüzüAdParent
türüne yayınlayarak başlatın. Üst görünüm, bir AndroidActivity
için JNIjobject
referansı veya bir 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 tutmak yerine,
InitializeLastResult()
işleviniRewardedAd
nesnesinde ç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
nesnesini kullanmanı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 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, bir ödüllü reklam gösterildikten sonra tekrar gösterilemez. En iyi uygulama olarak, OnAdDismissedFullScreenContent()
yönteminde başka bir ödüllü reklam yüklemeniz önerilir. Böylece, önceki reklam kapatılır kapatılmaz bir sonraki ödüllü reklam yüklenmeye başlar.FullScreenContentListener
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
simgesinin 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ğı ilk kullanıma hazırlama işlemini tamamlamamış olsa bile Google Mobile Ads C++ SDK'sı
Initialize()
tarafından döndürülenfirebase::Future
tamamlar. - Başlatma geri araması aldığımda bazı arabuluculuk ağları hazır değilse ne olur?
SDK'nın ilk kullanıma hazırlama işlemi tamamlandıktan sonra reklamları yüklemek en iyi uygulamadır. 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 neden reklam isteklerine hizmet vermeye 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.