Ödüllü reklamlar, kullanıcıların reklamlar üzerinden dönüşüm elde etme seçeneği satın alabilirsiniz. Bu kılavuz AdMob'daki ödüllü reklamları nasıl entegre edebileceğinizi gösterir bir iOS uygulamasına dönüştürülebilir. 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 üzeri.
- Başlangıç kılavuzunu tamamlayın.
Her zaman test reklamlarıyla test etme
Uygulamalarınızı oluştururken ve test ederken, uygulamalarınızın yanı sıra üretim reklamlarıdır. 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. kod yazma, test etme ve hata ayıklama sırasında kendi uygulamalarınızda kullanabileceğiniz ücretsiz bir araçtır. Sadece uygulamanızı yayınlamadan önce bunu kendi reklam birimi kimliğinizle değiştirdiğinizden emin olun.
Mobile Ads SDK'sının test reklamlarının işleyiş şekli hakkında daha fazla bilgi için Test Reklamlar.
Uygulama
Ödüllü reklamları entegre etmek için başlıca adımlar aşağıdaki gibidir:
- Reklam yükle
- [İsteğe bağlı] SSV geri çağırmalarını doğrulama
- Geri çağırma işlevleri için kaydolun
- Reklamı gösterme ve ödül etkinliğini işleme
Reklam yükle
Reklam yükleme işlemi, GADRewardedAd
sınıfındaki load(adUnitID:request)
yöntemi kullanılarak gerçekleştirilir.
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
private var rewardedAd: GADRewardedAd?
func loadRewardedAd() async {
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)")
}
}
}
SwiftUI
import GoogleMobileAds
class RewardedViewModel: NSObject, ObservableObject, GADFullScreenContentDelegate {
@Published var coins = 0
private var rewardedAd: GADRewardedAd?
func loadAd() async {
do {
rewardedAd = try await GADRewardedAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest())
rewardedAd?.fullScreenContentDelegate = self
} catch {
print("Failed to load rewarded ad 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ında ek veri gerektiren uygulamalar
doğrulama geri çağırmaları,
ödüllü reklamların özel veri özelliği. Ödüllü reklamda ayarlanan herhangi bir dize değeri
nesnesi, SSV geri çağırmasının custom_data
sorgu parametresine iletilir. Yanıt hayır ise
özel veri değeri ayarlanırsa custom_data
sorgu parametresi değeri
mevcut olduğu anlamına gelir.
Aşağıdaki kod örneğinde, ödüllü reklamda özel verilerin nasıl ayarlanacağı gösterilmektedir nesnesini tanımlayın.
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ğırma işlevleri için kaydolun
Sunum etkinlikleriyle ilgili bildirim almak için şunu uygulamanız gerekir:
GADFullScreenContentDelegate
protokolünü ve bunu
Döndürülen reklamın fullScreenContentDelegate
özelliği. İlgili içeriği oluşturmak için kullanılan
GADFullScreenContentDelegate
protokolü, reklamın şu durumlar için geri çağırmaları işler:
ne zaman sunum yaptığını ve ne zaman reddedildiğini belirler. Aşağıdakiler
kodu, 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() async {
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.")
}
}
SwiftUI
fullScreenContentDelegate
mülkünü döndürülen reklama atayın:
rewardedAd?.fullScreenContentDelegate = self
Protokolü uygulayın:
func adDidRecordImpression(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func ad(
_ ad: GADFullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called")
}
func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
// Clear the rewarded ad.
rewardedAd = nil
}
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ü reklamın bir kez
tekrar gösterilemez. En iyi uygulama, başka bir ödüllü reklam yüklemektir
GADFullScreenContentDelegate
üzerinde adDidDismissFullScreenContent:
yönteminde
Böylece bir sonraki ödüllü reklam, önceki reklam yayınlanır yayınlanmaz yüklenmeye başlar.
kapatıldı.
Reklamı gösterin ve ödül etkinliğini yönetin.
Ödüllü reklam kullanıcılara göstermeden önce kullanıcıya Ödül karşılığında ödüllü reklam içeriğini görüntülemek için açık seçim. Ödüllü reklamlar her zaman isteğe bağlı olarak etkinleştirilmelidir.
Reklamınızı sunarken kullanıcıya ödülü sunmak 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.
}
}
SwiftUI
Reklamın ne zaman gösterileceğini belirlemek için görünümdeki kullanıcı arayüzü etkinliklerini dinleyin.
var body: some View {
VStack(spacing: 20) {
Button("Watch video for additional 10 coins") {
viewModel.showAd()
showWatchVideoButton = false
}
Ödüllü reklamı görüntüleme modelinden sunun:
func showAd() {
guard let rewardedAd = rewardedAd else {
return print("Ad wasn't ready.")
}
rewardedAd.present(fromRootViewController: nil) {
let reward = rewardedAd.adReward
print("Reward amount: \(reward.amount)")
self.addCoins(reward.amount.intValue)
}
}
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
ile ilgili ödül bilgilerini alabilir miyim?- Evet,
userDidEarnReward
geri çağırma işlevi tetiklenmeden önce ödül tutarına ihtiyacınız varsaGADRewardedAd
'de, reklam yüklendikten sonra ödül tutarını doğrulamak için kontrol edebileceğiniz biradReward
mülkü vardır. - İlk kullanıma hazırlama çağrısı için zaman aşımı var mı?
- 10 saniye sonra Google Mobile Ads SDK'sı
GADInitializationCompletionHandler
ile Bir uyumlulaştırma ağı henüz etkinleştirmemiş olsa bilestartWithCompletionHandler:
yöntemi başlatma işlemi tamamlandı. - Başlatma geri çağırmasını aldığımda bazı uyumlulaştırma ağları hazır değilse ne olur?
Reklamın
GADInitializationCompletionHandler
Bir uyumlulaştırma ağı hazır olmasa bile Google Mobile Ads SDK'sı hâlâ bu ağdan reklam ister. Bu nedenle, bir uyumlulaştırma ağı zaman aşımından sonra başlatılmayı tamamlarsa söz konusu oturumda gelecekteki reklam isteklerini yine sunabilir.İşlem sırasında tüm bağdaştırıcıların başlatma durumunu yoklamaya devam edebilirsiniz.
GADMobileAds.initializationStatus
numaralı telefonu arayarak uygulama oturumunuz.- Belirli bir uyumlulaştırma ağının neden hazır olmadığını nasıl öğrenebilirim?
Bir
GADAdapterStatus
nesnesinindescription
özelliği, bağdaştırıcı, reklam isteklerine hizmet vermeye hazır değil.userDidEarnRewardHandler
tamamlama işleyicisi her zamanadDidDismissFullScreenContent:
yetki verilen kullanıcı yönteminden önce mi çağrılıyor?Google reklamları için tüm
userDidEarnRewardHandler
aramalarıadDidDismissFullScreenContent:
'den önce gerçekleşir. Şurada sunulan reklamlar için: Üçüncü taraf reklam ağı uyumlulaştırma SDK'nın uygulaması, geri çağırma sırasını belirler. Şu özellikte reklam ağı SDK'ları için: Ödül bilgileri ile tek bir yetki verme yöntemi sağlar. Uyumlulaştırma bağdaştırıcısıadDidDismissFullScreenContent:
öncesindeuserDidEarnRewardHandler
öğesini çağırır.
GitHub'daki örnekler
Ödüllü reklam örneklerini tercih ettiğiniz dilde görüntüleyin:
Sonraki adımlar
Kullanıcı gizliliği hakkında daha fazla bilgi edinin.