Geçiş reklamları

Geçiş reklamları, kullanıcı tarafından kapatılana kadar 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 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 dönme arasında seçim yapabilir.

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. Aksi takdirde hesabınız askıya alınabilir.

Test reklamlarını yüklemenin en kolay yolu, iOS geçiş reklamlarına özel test reklam birimi kimliğimizi kullanmaktır:
/6499/example/interstitial

Bu kod, 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 reklam öğesini kendi uygulamalarınızda kullanabilirsiniz. Uygulamanızı yayınlamadan önce bu kimliği kendi reklam birimi kimliğinizle değiştirdiğinizden emin olmanız yeterlidir.

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 etmek için ana adımlar şunlardır:

  1. Reklam yükleyin.
  2. Geri çağırmalara 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 tamamlanır. 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 bir parametre olarak sağlanır. Aşağıdaki örnekte, ViewController sınıfınızda bir GAMInterstitialAd öğesinin 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ğırmalara kaydol

Sunu etkinlikleriyle ilgili bildirim almak için GADFullScreenContentDelegate protokolünü uygulamanız 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

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, geçiş reklamının gösterildikten sonra tekrar gösterilemeyeceği anlamına gelir. En iyi uygulama, GADFullScreenContentDelegate için adDidDismissFullScreenContent: yöntemine başka bir geçiş reklamı yüklemektir. Böylece, sonraki geçiş reklamı bir sonraki geçiş reklamı kapatılır çıkarı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ındakiler veya kullanıcı bir görevi tamamladıktan sonra gösterilen geçiş reklamları. Bunu UIViewController işlemindeki işlem yöntemlerinden birini kullanarak nasıl yapacağınızı gösteren bir örneği aşağıda bulabilirsiniz:

Swift

@IBAction func doSomething(_ sender: Any) {
  guard let interstitial = interstitial else {
    return print("Ad wasn't ready.")
  }

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

Objective-C

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

"İstek Hatası: Gösterilecek reklam yok" hata yanıtıyla birlikte reklam döndürülmüyorsa 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 ise 1024x768 ve 768x1024'tür. Cihaz, 1024x768 veya 768x1024 boyutuna 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 olan uygulamalarda en iyi sonucu verir. 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şlemde ara beklediğinden, deneyimini kesintiye uğratmadan geçiş reklamı sunmak kolaydır. Uygulamanızın iş akışının hangi noktalarında geçiş reklamlarını görüntüleyeceğinizi ve kullanıcının ne tür tepki verebileceğini göz önünde bulundurmaya dikkat edin.
Geçiş reklamı görüntülerken işlemi duraklatmayı unutmayın.
Metin, resim, video ve daha birçok farklı türde geçiş reklamı bulunur. Uygulamanız geçiş reklamı görüntülediğinde bazı kaynakların kullanımını askıya alarak reklamın bunlardan yararlanabilmesini sağlar. Örneğin, geçiş reklamı görüntüleme çağrısı yaptığınızda uygulamanız tarafından üretilen tüm ses çıkışlarını duraklattığınızdan emin olun. Sesleri, kullanıcı reklamla etkileşimi bitirdiğinde çağrılacak olan adDidDismissFullScreenContent: etkinlik işleyicide oynatmaya devam edebilirsiniz. Ayrıca, reklam gösterilirken 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şamamasını sağlar.
Yeterli yükleme süresi tanıyın.
Geçiş reklamlarını uygun zamanda gösterdiğinizden emin olmanın yanı sıra kullanıcının bu reklamların yüklenmesini beklemek zorunda kalmamasını sağlamanız da önemlidir. Reklamı, göstermek istemediğiniz zaman önceden yüklemeniz, gösterim zamanı geldiğinde uygulamanızın tam olarak yüklenmiş bir geçiş reklamının olmasını sağlar.
Kullanıcıyı reklamlarla doldurmayı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 ve tıklama oranlarını düşürebilir. Kullanıcıların uygulama deneyiminizin keyfini çıkaramayacak 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 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