Ödüllü reklamlar, kullanıcıların uygulama içi ödüller karşılığında etkileşim kurma seçeneğine sahip olduğu reklamlardır. Bu kılavuzda, AdMobödüllü reklamların iOS uygulamasına nasıl entegre edileceği gösterilmektedir. Bazı müşteri başarı öykülerini okuyun: 1. örnek olay, 2. örnek olay.
Ön koşullar
- Google Mobile Ads SDK'sı 8.0.0 veya sonraki sürümler.
- Başlangıç kılavuzunu tamamlayın.
Her zaman test reklamlarıyla test etme
Uygulamalarınızı oluştururken ve test ederken canlı, ü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, iOS ödüllü reklamlara özel test reklam birimi kimliğimizi kullanmaktır:
ca-app-pub-3940256099942544/1712485313
Bu kod, her istek için test reklamı döndürecek şekilde özel olarak yapılandırılmıştır. Kodlama, test etme ve hata ayıklama sırasında bu reklam öğesini kendi uygulamalarınızda kullanabilirsiniz. Uygulamanızı yayınlamadan önce bu kimliği kendi reklam birimi kimliğinizle değiştirdiğinizden emin olmanız 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 bölümüne bakın.
Uygulama
Ödüllü geçiş reklamlarını entegre etmenin başlıca adımları şunlardır:
- Reklam yükle
- [İsteğe bağlı] SSV geri çağırmalarını doğrulama
- Geri çağırmalara kaydol
- Reklamı gösterme ve ödül etkinliğini yönetme
Reklam yükle
Reklam yükleme işlemi, GADRewardedAd
sınıfındaki statik loadWithAdUnitID:request:completionHandler:
yöntemi kullanılarak tamamlanır. Yükleme yöntemi için reklam birimi kimliğiniz, bir GADRequest
nesnesi ve reklam yükleme 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 bir parametre olarak sağlanır. Aşağıdaki örnekte, ViewController
sınıfınızda bir GADRewardedAd
öğesinin nasıl yükleneceği gösterilmektedir.
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
private var rewardedAd: GADRewardedAd?
func loadRewardedAd() {
do {
rewardedAd = try await GADRewardedAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest())
} catch {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
}
}
}
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 ekstra veri gerektiren uygulamalar, ödüllü reklamların özel veri özelliğini kullanmalıdır. Ödüllü reklam nesnesinde ayarlanan herhangi bir dize değeri, SSV geri çağırma işlevinin custom_data
sorgu parametresine iletilir. Herhangi bir ö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 istemeden önce ödüllü reklam nesnesinde özel verilerin nasıl ayarlanacağı gösterilmektedir.
Swift
do {
rewardedAd = try await GADRewardedAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest())
let options = GADServerSideVerificationOptions()
options.customRewardString = "SAMPLE_CUSTOM_DATA_STRING"
rewardedAd.serverSideVerificationOptions = options
} catch {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
}
Objective-C
[GADRewardedAd
loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"
request:[GADRequest request];
completionHandler:^(GADRewardedAd *ad, NSError *error) {
if (error) {
// Handle Error
return;
}
self.rewardedAd = ad;
GADServerSideVerificationOptions *options =
[[GADServerSideVerificationOptions alloc] init];
options.customRewardString = @"SAMPLE_CUSTOM_DATA_STRING";
ad.serverSideVerificationOptions = options;
}];
Geri çağırmalara kaydol
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 başarılı veya başarısız bir şekilde sunulduğunda ve kapatıldığında geri çağırmaları işler. Aşağıdaki kod, protokolün nasıl uygulanacağını ve reklama nasıl atanacağını gösterir:
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController, GADFullScreenContentDelegate {
private var rewardedAd: GADRewardedAd?
func loadRewardedAd() {
do {
rewardedAd = try await GADRewardedAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest())
rewardedAd?.fullScreenContentDelegate = self
} catch {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
}
}
/// 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, ödüllü bir reklamın gösterildikten sonra tekrar gösterilemeyeceği anlamına gelir. En iyi uygulama, GADFullScreenContentDelegate
için adDidDismissFullScreenContent:
yönteminde başka bir ödüllü reklam yüklemektir. Böylece, bir sonraki ödüllü reklam kaldırılır kaldırılmaz yüklenmeye başlar.
Reklamı gösterme ve ödül etkinliğini yönetme
Kullanıcılara ödüllü reklam göstermeden önce, kullanıcıya ödül karşılığında ödüllü reklam içeriğini görüntülemesi için açık bir seçenek sunmalısınız. Ödüllü reklamlar her zaman isteğe bağlı bir deneyim olmalıdır.
Reklamınızı sunarken, kullanıcının ödülünü işlemesi 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() {
guard let rewardedAd = rewardedAd else {
return print("Ad wasn't ready.")
}
// The UIViewController parameter is an optional.
ad.present(fromRootViewController: nil) {
let reward = ad.adReward
print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)")
// TODO: Reward the user.
}
}
Objective-C
- (void)show {
if (self.rewardedAd) {
// The UIViewController parameter is nullable.
[self.rewardedAd presentFromRootViewController:nil
userDidEarnRewardHandler:^{
GADAdReward *reward =
self.rewardedAd.adReward;
// TODO: Reward the user!
}];
} else {
NSLog(@"Ad wasn't ready");
}
}
SSS
GADRewardedAd
için ödül bilgilerini alabilir miyim?- Evet,
userDidEarnReward
geri çağırmasının tetiklenmeden önce ödül tutarına ihtiyacınız varsaGADRewardedAd
'ınadReward
özelliğini kontrol ederek reklam yüklendikten sonra ödül miktarını doğrulayabilirsiniz. - Başlatma çağrısı için zaman aşımı var mı?
- 10 saniye sonra Google Mobile Ads SDK'sı, uyumlulaştırma ağı henüz başlatma işlemini tamamlamamış olsa bile
startWithCompletionHandler:
yöntemi için sağlananGADInitializationCompletionHandler
yöntemini çağırır. - Bazı uyumlulaştırma ağları başlatma geri çağırma işlemini aldığımda hazır değilse ne olur?
GADInitializationCompletionHandler
içinde bir reklam yüklemenizi öneririz. Bir uyumlulaştırma ağı hazır olmasa bile, Google Mobile Ads SDK'sı bu ağdan reklam istemeye devam eder. Dolayısıyla bir uyumlulaştırma ağı, zaman aşımı süresinden sonra ilk kullanıma hazırlamayı bitirirse bu oturumda gelecekteki reklam isteklerinde hizmet vermeye devam edebilir.Uygulama oturumunuz boyunca
GADMobileAds.initializationStatus
yöntemini çağırarak 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 anlayabilirim?
Bir
GADAdapterStatus
nesnesinindescription
özelliği, bağdaştırıcının neden reklam isteklerine hizmet vermeye hazır olmadığını açıklar.userDidEarnRewardHandler
tamamlama işleyicisi her zamanadDidDismissFullScreenContent:
yetki verme yönteminden önce mi çağrılıyor?Google Ads için
userDidEarnRewardHandler
çağrılarının tamamıadDidDismissFullScreenContent:
tarihinden önce yapılır. Uyumlulaştırma ile yayınlanan reklamlar için geri çağırma sırasını üçüncü taraf reklam ağı SDK'sının uygulaması belirler. Ödül bilgileri içeren 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'daki örnekler
- Ödüllü reklam örneği: Swift | Objective-C
Sonraki adımlar
Kullanıcı gizliliği hakkında daha fazla bilgi edinin.