Geçiş reklamları, kullanıcı tarafından kapatılana kadar bir uygulamanın arayüzünü kaplayan tam ekran reklamlardır. Genellikle bir uygulamanın akışındaki doğal geçiş noktalarında (ör. etkinlikler veya bir oyundaki seviyeler arasındaki duraklama sırasında) gösterilir. Bir uygulama geçiş reklamı gösterdiğinde kullanıcı, reklama dokunup hedefine gitmeyi veya reklamı kapatıp uygulamaya dönmeyi seçebilir. Case study.
Bu kılavuzda, geçiş reklamlarını iOS uygulamasına nasıl entegre edeceğiniz gösterilmektedir.
Ön koşullar
Devam etmeden önce Google Mobile Ads SDK'ı kurun.
Her zaman test reklamlarıyla test yapın
Uygulamalarınızı oluşturup test ederken canlı ve ü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, iOS geçiş reklamları için özel test reklam birimi kimliğimizi kullanmaktır:
ca-app-pub-3940256099942544/4411468910
Bu kimlik, 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 kendi uygulamalarınızda bu kimliği kullanabilirsiniz. Uygulamanızı yayınlamadan önce bu kimliği kendi reklam birimi kimliğinizle değiştirdiğinizden emin olun.
Google Mobile Ads SDK test reklamları hakkında ayrıntılı bilgi için Test reklamlarını etkinleştirme başlıklı makaleyi inceleyin.
Uygulama
Geçiş reklamlarını entegre etmeyle ilgili başlıca adımlar şunlardır:
- Reklam yükleyin.
- Geri aramalar için kaydolun.
- Reklamı gösterin.
Reklam yükleme
Reklam yükleme işlemi, GADInterstitialAd sınıfındaki load(adUnitID:request) yöntemi kullanılarak gerçekleştirilir.
Swift
fileprivate func loadInterstitial() async {
do {
interstitial = try await InterstitialAd.load(
with: "ca-app-pub-3940256099942544/4411468910", request: Request())
interstitial?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
SwiftUI
import GoogleMobileAds
class InterstitialViewModel: NSObject, FullScreenContentDelegate {
private var interstitialAd: InterstitialAd?
func loadAd() async {
do {
interstitialAd = try await InterstitialAd.load(
with: "ca-app-pub-3940256099942544/4411468910", request: Request())
interstitialAd?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
Objective-C
[GADInterstitialAd
loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
request:[GADRequest request]
completionHandler:^(GADInterstitialAd *ad, NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
return;
}
self.interstitial = ad;
self.interstitial.fullScreenContentDelegate = self;
}];
Geri arama için kaydolma
Sunum etkinlikleriyle ilgili bildirim almak için döndürülen reklamın GADFullScreenContentDelegate özelliğine fullScreenContentDelegate değerini atamanız gerekir:
Swift
interstitial?.fullScreenContentDelegate = self
SwiftUI
interstitialAd?.fullScreenContentDelegate = self
Objective-C
self.interstitial.fullScreenContentDelegate = self;
GADFullScreenContentDelegate protokolü, reklamın başarıyla veya başarısızlıkla sunulduğu ve kapatıldığı zamanlardaki geri çağırmaları işler. Aşağıdaki kodda protokolün nasıl uygulanacağı gösterilmektedir:
Swift
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("\(#function) called with error: \(error.localizedDescription)")
// Clear the interstitial ad.
interstitial = nil
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitial = nil
}
SwiftUI
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(
_ ad: FullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called")
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitialAd = nil
}
Objective-C
- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)ad:(id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(NSError *)error {
NSLog(@"%s called with error: %@", __PRETTY_FUNCTION__, error.localizedDescription);
// Clear the interstitial ad.
self.interstitial = nil;
}
- (void)adWillPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adWillDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
// Clear the interstitial ad.
self.interstitial = nil;
}
GADInterstitialAd tek kullanımlık bir nesnedir. Bu nedenle, bir geçiş reklamı gösterildikten sonra tekrar gösterilemez. En iyi uygulama, adDidDismissFullScreenContent:GADFullScreenContentDelegate yönteminde başka bir geçiş reklamı yüklemektir. Böylece, önceki geçiş reklamı kapatılır kapatılmaz sonraki geçiş reklamı yüklenmeye başlar.
Reklamı görüntüleme
Geçiş reklamları, uygulamanın akışındaki doğal duraklamalar sırasında gösterilmelidir. Örneğin, bir oyunun seviyeleri arasında veya kullanıcı bir görevi tamamladıktan sonra.
Swift
ad.present(from: self!)
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 {
// ...
}
.onChange(of: countdownTimer.isComplete) { newValue in
showGameOverAlert = newValue
}
.alert(isPresented: $showGameOverAlert) {
Alert(
title: Text("Game Over"),
message: Text("You lasted \(countdownTimer.countdownTime) seconds"),
dismissButton: .cancel(
Text("OK"),
action: {
viewModel.showAd()
}))
Görünüm modelinden geçiş reklamını sunun:
func showAd() {
guard let interstitialAd = interstitialAd else {
return print("Ad wasn't ready.")
}
interstitialAd.present(from: nil)
}
Objective-C
[self.interstitial presentFromRootViewController:self];
En iyi uygulamalar
- Geçiş reklamlarının uygulamanız için doğru reklam türü olup olmadığını değerlendirin.
- Geçiş reklamları, doğal geçiş noktaları olan uygulamalarda en iyi performansı gösterir. Uygulama içinde resim paylaşma veya oyun seviyesini bitirme gibi bir görevin tamamlanması, bu tür bir nokta oluşturur. Kullanıcı, işlemde bir ara verilmesini beklediği için deneyimini kesintiye uğratmadan kolayca bir geçiş reklamı sunabilirsiniz. Uygulamanızın iş akışında hangi noktalarda geçiş reklamları göstereceğinizi ve kullanıcının nasıl yanıt vereceğini göz önünde bulundurduğunuzdan emin olun.
- Geçiş reklamı gösterirken işlemi duraklatmayı unutmayın.
- Metin, resim ve video gibi çeşitli geçiş reklamı türleri vardır. Uygulamanız bir geçiş reklamı gösterdiğinde, reklamın bu kaynaklardan yararlanabilmesi için bazı kaynakların kullanımını da askıya aldığından emin olmanız önemlidir. Örneğin, bir geçiş reklamı gösterme çağrısı yaptığınızda uygulamanız tarafından üretilen tüm ses çıkışlarını duraklattığınızdan emin olun. Kullanıcı reklamla etkileşimi tamamladığında çağrılacak olan
adDidDismissFullScreenContent:etkinlik işleyicisinde sesleri çalmaya devam edebilirsiniz. Ayrıca, reklam gösterilirken yoğun hesaplama görevlerini (ör. oyun döngüsü) geçici olarak durdurmayı da düşünebilirsiniz. Bu sayede kullanıcının yavaş veya yanıt vermeyen grafikler ya da kesintili videolarla karşılaşması önlenir. - Yeterli yükleme süresi tanıyın.
- Geçiş reklamlarını uygun bir zamanda gösterdiğinizden emin olmanız gerektiği gibi, kullanıcının bu reklamların yüklenmesini beklemesi gerekmediğinden de emin olmanız gerekir. Reklamı göstermeyi planlamadan önce önceden yüklemek, uygulamanızın bir geçiş reklamı gösterme zamanı geldiğinde tamamen yüklenmiş bir geçiş reklamına hazır olmasını sağlayabilir.
- Kullanıcıyı reklamlarla boğmayın.
- Uygulamanızdaki geçiş reklamlarının sıklığını artırmak gelirinizi artırmanın muhteşem bir yolu gibi görünse de kullanıcı deneyimini kötüleştirebilir ve tıklama oranlarını düşürebilir. Kullanıcıların, uygulamanızı kullanmaktan keyif almalarını engelleyecek kadar sık kesintiye uğramadığından emin olun.
- Geçiş reklamını göstermek için yükleme tamamlama geri çağırmasını kullanmayın.
- Bu durum, kullanıcı deneyiminin kötüleşmesine neden olabilir. Bunun yerine, reklamı göstermeniz gerekmeden önce önceden yükleyin. Ardından, gösterilmeye hazır olup olmadığını öğrenmek için
canPresentFromRootViewController:error:yönteminiGADInterstitialAdbölümünde kontrol edin.
Ek kaynaklar
GitHub'daki örnekler
Tam geçiş reklamı örneklerini tercih ettiğiniz dilde görüntüleyin:
Mobil Reklam Garajı video eğitimleri
Başarı öyküleri
Sonraki adımlar
- Henüz yapmadıysanız AdMob kullanıcı arayüzünde kendi geçiş reklamı biriminizi oluşturun.
- Reklam hedefleme ve geçiş reklamı kuralları hakkında daha fazla bilgi edinin.
- Kullanıcı gizliliği hakkında daha fazla bilgi edinin.