Ödüllü reklamlar, kullanıcıların uygulama içi ödüller karşılığında etkileşimde bulunma seçeneğine sahip olduğu reklamlardır. Bu kılavuzda, AdMob ödüllü reklamları iOS uygulamasına nasıl entegre edeceğiniz gösterilmektedir. Bazı müşteri başarı öykülerini okuyun: örnek olay 1, örnek olay 2.
Ön koşullar
- Google Mobile Ads SDK'sı 8.0.0 veya üstü.
- Başlangıç kılavuzunu tamamlayın.
Her zaman test reklamlarıyla test et
Uygulamalarınızı oluştururken ve test ederken, üretim aşamasındaki etkin 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, iOS ödüllü reklamlar için özel test reklam birimi kimliğimizi kullanmaktır:
ca-app-pub-3940256099942544/1712485313
Tüm istekler için test reklamları döndürecek şekilde özel olarak tasarlanmıştır. Kodlama, test ve hata ayıklama işlemleri sırasında kodu kendi uygulamalarınızda kullanabilirsiniz. Bunun yerine, uygulamanızı yayınlamadan önce kendi reklam birimi kimliğinizle değiştirmeniz yeterlidir.
Mobile Ads SDK'sının test reklamlarının nasıl çalıştığı hakkında daha fazla bilgi için Reklamları Test Etme konusuna bakın.
Uygulama
Ödüllü geçiş reklamlarını entegre etmek için uygulanması gereken temel adımlar şunlardır:
- Reklam yükle
- [İsteğe bağlı] SSV geri çağırmalarını doğrulama
- Geri çağırmalar için kaydolun
- Reklamı gösterin ve ödül etkinliğini yönetin
Reklam yükle
Reklam yükleme, GADRewardedAd
sınıfındaki statik loadWithAdUnitID:request:completionHandler:
yöntemi kullanılarak gerçekleştirilir. Yükleme yöntemi için reklam birimi kimliğiniz, GADRequest
nesnesi ve reklam yükleme işlemi başarılı veya başarısız olduğunda çağrılan bir tamamlama işleyicisi gerekir. Yüklenen GADRewardedAd
nesnesi, tamamlama işleyicide parametre olarak sağlanır. Aşağıdaki örnekte, ViewController
sınıfında GADRewardedAd
öğesinin nasıl yükleneceği gösterilmektedir.
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController { private var rewardedAd: GADRewardedAd? func loadRewardedAd() { let request = GADRequest() GADRewardedAd.load(withAdUnitID:"ca-app-pub-3940256099942544/1712485313", request: request, completionHandler: { [self] ad, error in if let error = error { print("Failed to load rewarded ad with error: \(error.localizedDescription)") return } rewardedAd = ad print("Rewarded ad loaded.") } ) } }
Objective-C
@import GoogleMobileAds; @import UIKit; @interface ViewController () @property(nonatomic, strong) GADRewardedAd *rewardedAd; @end @implementation ViewController - (void)loadRewardedAd { GADRequest *request = [GADRequest request]; [GADRewardedAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313" request:request completionHandler:^(GADRewardedAd *ad, NSError *error) { if (error) { NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]); return; } self.rewardedAd = ad; NSLog(@"Rewarded ad loaded."); }]; }
[İsteğe bağlı] Sunucu tarafı doğrulama (SSV) geri çağırmalarını doğrulama
Sunucu tarafı doğrulaması geri çağırmalarında ek veri gerektiren uygulamalar, ödüllü reklamların özel veri özelliğini kullanmalıdır. Ödüllü reklam nesnesinde ayarlanan dize değerleri, SSV geri çağırmasının custom_data
sorgu parametresine iletilir. Özel veri değeri ayarlanmazsa custom_data
sorgu parametresi değeri, SSV geri çağırmasında yer almaz.
Aşağıdaki kod örneğinde, reklam isteğinden önce ödüllü reklam nesnesinde özel verilerin nasıl ayarlanacağı gösterilmektedir.
Swift
GADRewardedInterstitialAd.load(withAdUnitID:"ca-app-pub-3940256099942544/1712485313", request: request, completionHandler: { [self] ad, error in if let error != error { rewardedInterstitialAd = ad let options = GADServerSideVerificationOptions() options.customRewardString = "SAMPLE_CUSTOM_DATA_STRING" rewardedInterstitialAd.serverSideVerificationOptions = options }
Objective-C
GADRequest *request = [GADRequest request]; [GADRewardedInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313" request:request completionHandler:^(GADRewardedInterstitialAd *ad, NSError *error) { if (error) { // Handle Error return; } self.rewardedInterstitialAd = ad; GADServerSideVerificationOptions *options = [[GADServerSideVerificationOptions alloc] init]; options.customRewardString = @"SAMPLE_CUSTOM_DATA_STRING"; ad.serverSideVerificationOptions = options; }];
Geri çağırmalar için kaydolun
Sunu etkinliklerine ilişkin bildirim almak için GADFullScreenContentDelegate
protokolünü uygulamanız ve bunu döndürülen reklamın fullScreenContentDelegate
özelliğine atamanız gerekir. GADFullScreenContentDelegate
protokolü, reklamın başarılı veya başarısız olduğu ve kapatıldığı durumlar için geri çağırmaları işler. Aşağıdaki kod, protokolün nasıl uygulanacağını ve reklama nasıl atanacağını gösterir:
Swift
class ViewController: UIViewController, GADFullScreenContentDelegate { private var rewardedAd: GADRewardedAd? func loadRewardedAd() { let request = GADRequest() GADRewarded.load(withAdUnitID:"ca-app-pub-3940256099942544/1712485313", request: request, completionHandler: { [self] ad, error in if let error = error { print("Failed to load rewarded ad with error: \(error.localizedDescription)") return } rewardedAd = ad print("Rewarded ad loaded.") rewardedAd?.fullScreenContentDelegate = self } ) } /// Tells the delegate that the ad failed to present full screen content. func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) { print("Ad did fail to present full screen content.") } /// Tells the delegate that the ad will present full screen content. func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) { print("Ad will present full screen content.") } /// Tells the delegate that the ad dismissed full screen content. func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) { print("Ad did dismiss full screen content.") } }
Objective-C
@interface ViewController ()<GADFullScreenContentDelegate> @property(nonatomic, strong) GADRewardedAd *rewardedAd; @end @implementation ViewController - (void)loadRewardedAd { GADRequest *request = [GADRequest request]; [GADRewardedAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4806952744" request:request completionHandler:^(GADRewardedAd *ad, NSError *error) { if (error) { NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]); return; } self.rewardedAd = ad; NSLog(@"Rewarded ad loaded."); self.rewardedAd.fullScreenContentDelegate = self; }]; } /// Tells the delegate that the ad failed to present full screen content. - (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad didFailToPresentFullScreenContentWithError:(nonnull NSError *)error { NSLog(@"Ad did fail to present full screen content."); } /// Tells the delegate that the ad will present full screen content. - (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad { NSLog(@"Ad will present full screen content."); } /// Tells the delegate that the ad dismissed full screen content. - (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad { NSLog(@"Ad did dismiss full screen content."); }
GADRewardedAd
tek kullanımlık bir nesnedir. Yani, ödüllü bir reklam bir kez gösterildikten sonra tekrar gösterilemez. En iyi uygulama, GADFullScreenContentDelegate
yönteminde adDidDismissFullScreenContent:
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ül karşılığında ödüllü reklam içeriğini görüntülemek için kullanıcıya açık bir seçenek sunmanız gerekir. Ödüllü reklamlar her zaman isteğe bağlı bir deneyim olmalıdır.
Reklamınızı sunarken kullanıcıya yönelik ödülü işlemek için bir GADUserDidEarnRewardHandler
nesnesi sağlamanız gerekir.
Aşağıdaki kod, ödüllü reklamı görüntülemek için en iyi yöntemi sunar.
Swift
func show() { if let ad = rewardedAd { ad.present(fromRootViewController: self) { let reward = ad.adReward print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)") // TODO: Reward the user. } } else { print("Ad wasn't ready") } }
Objective-C
- (void)show { ... if (self.rewardedAd) { [self.rewardedAd presentFromRootViewController:self userDidEarnRewardHandler:^{ GADAdReward *reward = self.rewardedAd.adReward; // TODO: Reward the user! }]; } else { NSLog(@"Ad wasn't ready"); } }
SSS
GADRewardedAd
için ödül ayrıntılarını öğrenebilir miyim?- Evet,
userDidEarnReward
geri çağırması tetiklenmeden önce ödül tutarına ihtiyacınız varsaGADRewardedAd
adlı kullanıcınınadReward
mülkü vardır. Bu mülkü, reklam yüklendikten sonra ödül tutarını doğrulamak için kontrol edebilirsiniz. - Başlatma çağrısı için zaman aşımı var mı?
- 10 saniye sonra Google Mobile Ads SDK'sı bir uyumlulaştırma ağının başlatma işlemini tamamlamamış olsa bile
startWithCompletionHandler:
yöntemine sağlananGADInitializationCompletionHandler
yöntemini çağırır. - Başlatma geri çağırmasını aldığımda bazı uyumlulaştırma ağları hazır değilse ne olur?
GADInitializationCompletionHandler
alanına bir reklam yüklemenizi öneririz. Uyumlulaştırma ağı hazır olmasa bile Google Mobile Ads SDK'sı 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 gelecekte sunulacak reklam isteklerini yayınlamaya devam edebilir.GADMobileAds.initializationStatus
çağırarak uygulama oturumunuz süresince tüm adaptörlerin başlatma durumunu sorgulamaya devam edebilirsiniz.- Belirli bir uyumlulaştırma ağının neden hazır olmadığını nasıl öğrenebilirim?
Bir
GADAdapterStatus
nesnesinindescription
özelliği, bir reklam biriminin neden reklam isteklerine hizmet sunmaya hazır olmadığını açıklar.userDidEarnRewardHandler
tamamlama işleyicisi her zamanadDidDismissFullScreenContent:
yetki verme yönteminden önce mi çağrılır?Google Ads için
userDidEarnRewardHandler
çağrılarının tümüadDidDismissFullScreenContent:
tarihinden önce gerçekleşir. Uyumlulaştırma üzerinden yayınlanan reklamlar için üçüncü taraf reklam ağı SDK'sının uygulaması, geri çağırma sırasını belirler. Ödül bilgileriyle birlikte tek bir yetki verme yöntemi sağlayan reklam ağı SDK'ları için uyumlulaştırma bağdaştırıcısı,adDidDismissFullScreenContent:
tarihinden önceuserDidEarnRewardHandler
yöntemini çağırır.
GitHub ile ilgili örnekler
- Ödüllü reklam örneği: Swift | Objective-C
Sonraki adımlar
Kullanıcı gizliliği hakkında daha fazla bilgi edinin.