Geçiş reklamları

Geçiş reklamları, kullanıcı tarafından kapatılana kadar uygulamanın arayüzünü kaplayan tam ekran reklamlardır. Genellikle bir uygulamanın akışındaki doğal geçiş noktalarında (ör. etkinlikler arasında veya oyunda seviyeler arasındaki duraklamalarda) gösterilirler. Bir uygulamada geçiş reklamı gösterildiğinde kullanıcı, reklama dokunup hedefine devam edebilir veya reklamı kapatıp uygulamaya geri dönebilir.

Bu kılavuzda, geçiş reklamlarını bir iOS uygulamasına nasıl entegre edeceğiniz gösterilmektedir.

Ön koşullar

Her zaman test reklamlarıyla test etme

Uygulamalarınızı oluşturup 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 geçiş reklamları için özel test reklam birimi kimliğimizi kullanmaktır:
/6499/example/interstitial

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 özelliği kendi uygulamalarınızda kullanabilirsiniz. Bunun için uygulamanızı yayınlamadan önce bunu 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ı konusuna bakın.

Uygulama

Geçiş reklamlarını entegre etmek için başlıca adımlar şunlardır:

  1. Bir reklam yükleyin.
  2. Geri çağırma işlevleri için kaydolun.
  3. Reklamı gösterin ve ödül etkinliğini gerçekleştirin.

Reklam yükle

Reklamın yüklenmesi, GAMInterstitialAd sınıfındaki statik loadWithAdManagerAdUnitID:request:completionHandler: yöntemi kullanılarak gerçekleştirilir. Yükleme yöntemi; reklam birimi kimliğinizin, bir GAMRequest nesnesinin ve reklam yükleme başarılı veya başarısız olduğunda çağrılan bir tamamlama işleyiciyi gerektirir. Yüklenen GAMInterstitialAd nesnesi, tamamlama işleyicide parametre olarak sağlanır. Aşağıdaki örnekte, ViewController sınıfınızda GAMInterstitialAd özelliğinin nasıl yükleneceği gösterilmektedir.

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GAMInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()

    do {
      interstitial = try await GAMInterstitialAd.load(
        withAdUnitID: "/6499/example/interstitial", request: GAMRequest())
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GAMInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GAMRequest *request = [GAMRequest request];
  [GAMInterstitialAd loadWithAdManagerAdUnitID:@"/6499/example/interstitial"
                                       request:request
                             completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
  }];
}

Geri çağırma işlevleri için kaydolun

Sunu etkinlikleriyle ilgili bildirim almak için GADFullScreenContentDelegate protokolünü uygulamalı ve döndürülen reklamın fullScreenContentDelegate özelliğine atamalısınız. GADFullScreenContentDelegate protokolü, reklamın başarılı veya başarısız bir şekilde sunulması ve kapatıldığında geri çağırma işlemlerini gerçekleştirir. 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 interstitial: GAMInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()

    do {
      interstitial = try await GAMInterstitialAd.load(
        withAdUnitID: "/6499/example/interstitial", request: GAMRequest())
      interstitial?.fullScreenContentDelegate = self
    } catch {
      print("Failed to load interstitial ad 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

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () <GADFullScreenContentDelegate>

@property(nonatomic, strong) GAMInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GAMRequest *request = [GAMRequest request];
  [GAMInterstitialAd loadWithAdManagerAdUnitID:@"/6499/example/interstitial"
                                       request:request
                             completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
    self.interstitial.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.");
}

GAMInterstitialAd tek kullanımlık bir nesnedir. Bu, bir geçiş reklamı gösterildikten sonra tekrar gösterilmeyeceği anlamına gelir. En iyi uygulama, GADFullScreenContentDelegate adresindeki adDidDismissFullScreenContent: yönteminde başka bir geçiş reklamı yüklemektir. Böylece sonraki geçiş reklamı kapatılır kapatılmaz bir sonraki geçiş reklamı yüklenmeye başlar.

Reklamı görüntüleme

Geçiş reklamları, uygulama akışındaki doğal duraklamalar sırasında gösterilmelidir. Bir oyunun seviyeleri arasında veya kullanıcı bir görevi tamamladıktan sonra iyi bir örnek verilebilir. Aşağıda, bunu UIViewController içindeki işlem yöntemlerinden birinde nasıl yapacağınıza dair bir örnek verilmiştir:

Swift

guard let interstitial = interstitial else {
  return print("Ad wasn't ready.")
}

// The UIViewController parameter is an optional.
interstitial.present(fromRootViewController: nil)

Objective-C

if (self.interstitial) {
  // The UIViewController parameter is nullable.
  [self.interstitial presentFromRootViewController:nil];
} else {
  NSLog(@"Ad wasn't ready");
}

Hiçbir reklam almıyorsanız "İstek Hatası: Gösterilecek reklam yok" hata yanıtıyla, satır öğenizde doğru boyutu hedefleyen bir reklam öğesinin bulunduğundan emin olun. Geçiş reklamı boyutları, telefonlar için 320x480 ve 480x320, tabletler için 1024x768 ve 768x1024'tür. Bir cihaz 1024x768 veya 768x1024'e sığacak kadar büyük değilse 320x480 veya 480x320 boyutuna döner.

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ına sahip uygulamalarda en iyi sonucu verir. Uygulama içinde bir görevin sonuçlanması (ör. resim paylaşma veya oyun seviyesini tamamlama), böyle bir nokta oluşturur. Kullanıcı işlemde ara vermeyi beklediği için kullanıcı deneyimini sekteye uğratmadan bir geçiş reklamı sunmak kolaydır. Uygulamanızın iş akışının hangi noktalarında geçiş reklamları göstereceğinizi ve kullanıcının nasıl yanıt verebileceğini göz önünde bulundurduğunuzdan emin olun.
Bir geçiş reklamı görüntülerken işlemi duraklatmayı unutmayın.
Metin, resim, video ve birkaç farklı geçiş reklamı türü vardır. Uygulamanızda bir geçiş reklamı görüntülendiğinde, reklamın bunlardan yararlanabilmesi için bazı kaynakların kullanımını askıya alması da önemlidir. Örneğin, bir geçiş reklamı göstermek için çağrı yaptığınızda, uygulamanız tarafından üretilen tüm ses çıkışlarını duraklattığınızdan emin olun. Sesleri çalmaya adDidDismissFullScreenContent: etkinlik işleyicide devam edebilirsiniz. Kullanıcı reklamla etkileşimi bitirdiğinde ses çağrılır. Ayrıca, reklam gösterilirken yoğun hesaplama görevlerini (oyun döngüsü gibi) geçici olarak durdurabilirsiniz. Bu sayede kullanıcının yavaş veya yanıt vermeyen grafikler ya da kesintili video deneyimi yaşamaması sağlanır.
Yükleme süresi için yeterli süre tanıyın.
Geçiş reklamlarını uygun bir zamanda görüntülediğinizden emin olmak kadar, kullanıcının bu reklamların yüklenmesini beklemek zorunda kalmamasını sağlamak da önemlidir. Reklamı göstermek istemediğinizden önce reklamı önceden yüklemek, gösterileceği zaman geldiğinde uygulamanızda tamamen yüklenmiş bir geçiş reklamı olmasını sağlayabilir.
Kullanıcıyı reklama 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ı deneyiminin kalitesini düşürebilir ve tıklama oranlarını düşürebilir. Kullanıcıların, uygulamanızın keyfini süremeyecekleri kadar sık kesinti yaşamadıklarından emin olun.
Geçiş reklamını göstermek için yükleme tamamlama geri çağırmasını kullanmayın.
Bu durum, kötü bir kullanıcı deneyimine yol açabilir. Bunun yerine, göstermeniz için reklamı önceden yükleyin. Ardından, gösterilmeye hazır olup olmadığını öğrenmek için GAMInterstitialAd üzerinde canPresentFromRootViewController:error: yöntemini kontrol edin.

GitHub'daki örnekler

Sonraki adımlar