Geçiş reklamları, kullanıcı tarafından kapatılana kadar bir uygulamanın arayüzünü kaplayan tam ekran reklamlardır. Bunlar genellikle bir uygulamanın akışındaki doğal geçiş noktalarında (ör. etkinlikler arasında veya oyun seviyeleri arasındaki duraklatmalar sırasında) gösterilir. Bir uygulama geçiş reklamı gösterdiğinde kullanıcı, reklama dokunup hedefe devam edebilir veya reklamı kapatıp uygulamaya geri dönebilir. Kasus çalışması.
Bu kılavuzda, geçiş reklamlarının iOS uygulamasına nasıl entegre edileceği gösterilmektedir.
Ön koşullar
- Google Mobile Ads SDK'sı 8.0.0 veya daha yeni bir sürüm.
- Başlangıç kılavuzunu tamamlayın.
Her zaman test reklamlarıyla test edin
Uygulamalarınızı oluşturup test ederken canlı üretim reklamları yerine test reklamları kullandığınızdan emin olun. Aksi takdirde hesabınız askıya alınabilir.
Test reklamları yüklemenin en kolay yolu, iOS geçiş reklamları için özel test reklam birimi kimliğimizi kullanmaktır:
ca-app-pub-3940256099942544/4411468910
Her istek için test reklamları döndürecek şekilde özel olarak yapılandırılmıştır. Kodlama, test etme ve hata ayıklama sırasında kendi uygulamalarınızda kullanabilirsiniz. Uygulamanızı yayınlamadan önce bu kimliği 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 için Test Reklamları bölümüne bakın.
Uygulama
Geçiş reklamlarını entegre etmenin ana adımları şunlardır:
- Reklam yükleyin.
- Geri arama 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 kaydolun
Sunum etkinlikleriyle ilgili bildirim almak için döndürülen reklamın GADFullScreenContentDelegate to the
fullScreenContentDelegate` mülkünü 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ız bir şekilde gösterilmesi ve kapatılmasıyla ilgili geri çağırma işlemlerini yönetir. 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, geçiş reklamının bir kez gösterildikten sonra tekrar gösterilemeyeceği anlamına gelir. En iyi uygulama, önceki geçiş reklamı kapatılır kapatılmaz sonraki geçiş reklamının yüklenmeye başlaması için GADFullScreenContentDelegate
'da adDidDismissFullScreenContent:
yönteminde başka bir geçiş reklamı yüklemektir.
Reklamı gösterme
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 gösterilebilir.
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()
}))
Geçiş reklamını görünüm modelinden 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ı düşünün.
- Geçiş reklamları, doğal geçiş noktalarının olduğu uygulamalarda en iyi sonucu verir. Uygulama içinde resim paylaşma veya oyun seviyesini bitirme gibi bir görevin tamamlanması, geçiş noktası olarak değerlendirilebilir. Kullanıcı, oyunda ara verme bekler. Bu nedenle, deneyimini kesintiye uğratmadan geçiş reklamı göstermek kolaydır. Geçiş reklamlarını uygulamanızın iş akışında hangi noktalarda göstereceğinizi ve kullanıcının nasıl yanıt verebileceğini göz önünde bulundurun.
- Geçiş reklamı gösterirken işlemi duraklatmayı unutmayın.
- Metin, resim, video ve daha fazlası gibi birkaç farklı türde geçiş reklamı kullanabilirsiniz. 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 alması önemlidir. Örneğin, 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şimini tamamladığında çağrılacak
adDidDismissFullScreenContent:
etkinlik işleyicisinde sesleri oynatmaya devam edebilirsiniz. Ayrıca, reklam gösterilirken yoğun hesaplama görevlerini (ör. oyun döngüsü) geçici olarak duraklatmayı da düşünebilirsiniz. Bu sayede kullanıcı, yavaş veya yanıt vermeyen grafikler ya da takılan videolar yaşamaz. - Yeterli yükleme süresi tanıyın.
- Geçiş reklamlarını uygun bir zamanda göstermenizin önemli olduğu kadar, kullanıcının reklamların yüklenmesini beklemek zorunda kalmaması da önemlidir. Reklamı göstermeden önce önceden yüklemek, uygulamanızda reklamı gösterme zamanı geldiğinde tamamen yüklenmiş bir geçiş reklamının hazır olmasını sağlayabilir.
- Kullanıcıyı reklamlarla boğmayın.
- Uygulamanızda geçiş reklamlarının sıklığını artırmak, geliri artırmanın mükemmel bir yolu gibi görünse de kullanıcı deneyimini olumsuz etkileyebilir ve tıklama oranlarını düşürebilir. Kullanıcıların uygulamanızı kullanmanın keyfini çıkaramayacak kadar sık kesintiye uğramamasını sağlayın.
- Geçiş reklamını göstermek için yükleme tamamlanma geri çağırma işlevini 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
GADInterstitialAd
'dakicanPresentFromRootViewController:error:
yöntemini kontrol edin.
Ek kaynaklar
GitHub'daki örnekler
Geçiş reklamı örneklerini tercih ettiğiniz dilde görüntüleyin:
Mobile Ads Garage 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.