Ödüllü reklamlar, kullanıcıların uygulama içi ödüller karşılığında etkileşimde bulunma seçeneği olan reklamlardır. Bu kılavuzda, ödüllü reklamları iOS uygulamasına nasıl entegre edeceğiniz açıklanmaktadır. AdMob 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 daha sonraki bir sürüm.
- Başlangıç kılavuzunu inceleyin.
Her zaman test reklamlarıyla test yapın
Uygulamalarınızı oluştururken ve test ederken yayında, üretim amaçlı reklamlar yerine test reklamları 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
Her istek için test reklamları döndürecek şekilde özel olarak yapılandırılmıştır. Kodlama, test ve hata ayıklama sırasında bu özelliği 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ünü inceleyin.
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örüntüleme ve ödül etkinliğini yönetme
Reklam yükle
Reklam yüklenmesi 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, bir GADRequest
nesnesi ve reklam başarıyla yüklendiğinde 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
nasıl yüklenir?
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ğrulama 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ği, reklam istemeden önce ödüllü bir reklam nesnesinde özel verilerin nasıl ayarlanacağını gösterir.
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 etkinlikleriyle ilgili bildirim almak için GADFullScreenContentDelegate
protokolünü uygulamanız ve 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ğuna ve kapatıldığına dair geri çağırmaları işler. Aşağıdaki kod, protokolün nasıl uygulanacağını ve reklama nasıl atanacağını göstermektedir:
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. Bu durumda, ö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ılır kapatılmaz yüklenmeye başlar.
Reklamı görüntüleme ve ödül etkinliğini yönetme
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 uygunsuz bir seçenek sunmanız gerekir. Ödüllü reklamlar her zaman etkinleştirilmelidir.
Reklamınızı gösterirken, kullanıcıya verilen ö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ı alabilir miyim?- Evet, geri çağırmanın tetiklenmesi için ödül tutarına ihtiyacınız varsa
GADRewardedAd
adlı yayıncının,adReward
mülkü vardır. Bu özelliği kullanarak reklam yüklendikten sonra ödül tutarını doğrulayabilirsiniz. - 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şlatması henüz tamamlanmamış olsa bile
startWithCompletionHandler:
yöntemine sağlananGADInitializationCompletionHandler
yöntemini çağırır. - İlk uyumlulaştırma geri çağırması aldığımda bazı uyumlulaştırma ağları hazır değilse ne olur?
GADInitializationCompletionHandler
içinde reklam yüklemenizi öneririz. Uyumlulaştırma ağı hazır olmasa bile Google Mobile Ads SDK'sı bu ağdan reklam ister. Bu nedenle, bir uyumlulaştırma ağı zaman aşımından sonra da başlatmayı bitirse bile bu oturumda gelecekteki reklam isteklerini yayınlayabilir.GADMobileAds.initializationStatus
çağırarak uygulama oturumunuz süresince tüm bağdaştırıcıların başlatma durumunu sorgulamaya devam edebilirsiniz.- Belirli bir uyumlulaştırma ağının neden hazır olmadığını nasıl öğrenebilirim?
GADAdapterStatus
nesnesinindescription
özelliği, bir uyarlanabilirin reklam istekleri sunmaya neden hazır olmadığını açıklar.userDidEarnRewardHandler
tamamlama işleyicisi her zamanadDidDismissFullScreenContent:
yetki verme yönteminden önce mi aranır?Google reklamları söz konusu olduğunda
userDidEarnRewardHandler
çağrılarının tümüadDidDismissFullScreenContent:
tarihinden önce yapılır. Uyumlulaştırma yoluyla 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:
öncesindeuserDidEarnRewardHandler
çağırır.
GitHub ile ilgili örnekler
- Ödüllü reklam örneği: Swift | Objective-C