Geçiş reklamları

Geçiş reklamları, kullanıcı kapatana 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 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 devam etme veya reklamı kapatıp uygulamaya geri dönme seçeneğine sahiptir.

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

Ön koşullar

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. Bunu 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:
/6499/example/interstitial

Bu kod, her istek için test reklamları döndürecek şekilde özel olarak yapılandırılmıştır. Bu etiketi; kodlama, test ve hata ayıklama sırasında kendi uygulamalarınızda da kullanabilirsiniz. Uygulamanızı yayınlamadan önce bu kimliği kendi reklam birimi kimliğinizle değiştirdiğinizden emin olun.

Mobile Ads SDK'sının test reklamlarının nasıl çalıştığı 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:

  1. Reklam yükleyin.
  2. Geri aramalar için kaydolun.
  3. Reklamı göstermek ve ödül etkinliğini yönetmek.

Reklam yükle

Reklam yükleme işlemi, GAMInterstitialAd sınıfındaki statik loadWithAdManagerAdUnitID:request:completionHandler: yöntemi kullanılarak gerçekleştirilir. Yükleme yöntemi için reklam birimi kimliğiniz, bir GAMRequest 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 GAMInterstitialAd nesnesi, tamamlama işleyicide parametre olarak sağlanır. Aşağıdaki örnekte, ViewController sınıfınıza nasıl GAMInterstitialAd yükleyeceğiniz gösterilmektedir.

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GAMInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    let request = GAMRequest()
    GAMInterstitialAd.load(withAdManagerAdUnitID: "/6499/example/interstitial",
                                         request: request,
                               completionHandler: { [self] ad, error in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        interstitial = ad
                      }
    )
  }
}

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 arama için kaydol

Sunum etkinlikleriyle ilgili bildirimleri almak için GADFullScreenContentDelegate protokolünü uygulamalı 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

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GAMInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    let request = GAMRequest()
    GAMInterstitialAd.load(withAdManagerAdUnitID: "/6499/example/interstitial",
                                         request: request,
                               completionHandler: { [self] ad, error in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        interstitial = ad
                        interstitial?.fullScreenContentDelegate = self
                      }
    )
  }

  /// 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) 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ının gösterilmesinin ardından tekrar gösterilemeyeceği anlamına gelir. En iyi uygulama, GADFullScreenContentDelegate üzerinde adDidDismissFullScreenContent: yönteminden başka bir geçiş reklamı yüklemektir. Böylece, bir sonraki geçiş reklamı kapatılır kapatılmaz yüklenmeye başlar.

Reklamı görüntüleme

Geçiş reklamları, uygulama akışındaki doğal duraklamalar sırasında gösterilmelidir. Oyunun seviyeleri arasında veya kullanıcı bir görevi tamamladıktan sonra. Bunu UIViewController işlemindeki işlem yöntemlerinden birini kullanarak nasıl yapacağınıza dair bir örneği aşağıda bulabilirsiniz:

Swift

@IBAction func doSomething(_ sender: Any) {
  if interstitial != nil {
    interstitial.present(fromRootViewController: self)
  } else {
    print("Ad wasn't ready")
  }
}

Objective-C

- (IBAction)doSomething:(id)sender {
  ...
  if (self.interstitial) {
    [self.interstitial presentFromRootViewController:self];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

Tekrar reklam almıyorsanız "İstek Hatası: Gösterilecek reklam yok" hata yanıtıyla karşılaşırsanız satır öğenizde doğru boyutu hedefleyen bir reklam öğesinin bulunduğundan emin olun. Geçiş reklamı boyutları, telefonlar için 320x480 ve tabletler için 480x320, tabletler için ise 1024x768 ve 768x1024'tür. Bir cihaz 1024x768 veya 768x1024 boyutuna yetecek kadar büyük değilse 320x480 veya 480x320 boyutuna geri 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 olan uygulamalarda en iyi performansı gösterir. Uygulama içinde bir görev tamamlamak (ör. resim paylaşmak veya oyundaki bir seviyeyi tamamlamak) böyle bir nokta oluşturur. Kullanıcı işlemi ara vermek istediği için, kullanıcının deneyimini kesintiye uğratmadan 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 diğer birçok farklı türde geçiş reklamı bulunur. Uygulamanız bir geçiş reklamı görüntülediğinde, reklamın bunlardan yararlanabilmesi için bazı kaynakların kullanımını da askıya almalıdır. Ö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. Sesleri adDidDismissFullScreenContent: etkinlik işleyicide devam ettirebilirsiniz. Kullanıcı reklamla etkileşimi bitirdiğinde çağrılacaktır. Ayrıca, reklam görüntülenirken yoğun hesaplama görevlerini (oyun döngüsü gibi) geçici olarak durdurabilirsiniz. Bu, kullanıcının yavaş veya yanıt vermeyen grafikler ya da takılma sorunu yaşamasını önler.
Yeterli yükleme süresi tanıyın.
Geçiş reklamlarını uygun zamanda gösterdiğinizden emin olmak kadar kullanıcının bu reklamların yüklenmesini beklemek zorunda kalmamasını sağlamak da önemlidir. Reklamı göstermeyi gerçekleştirmeden önce yüklemek, gösterilme zamanı geldiğinde uygulamanızın tam olarak yüklenmiş bir geçiş reklamının olmasını sağlar.
Kullanıcıyı reklama boğmayın.
Uygulamanızda geçiş reklamlarının sıklığını artırmak geliri artırmanın iyi bir yolu gibi görünse de kullanıcı deneyimini olumsuz yönde etkileyebilir ve tıklama oranlarını düşürebilir. Kullanıcıların uygulamanızı kullanımından keyif almalarına engel olacak kadar sık kesinti yaşamadığı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 neden olabilir. Bunun yerine, reklamı göstermeniz gerekmeden önce önceden yükleyin. Ardından, gösterilmeye hazır olup olmadığını öğrenmek için GAMInterstitialAd üzerinde canPresentFromRootViewController:error: yöntemini kontrol edin.

GitHub ile ilgili örnekler

Sonraki adımlar