Iklan interstisial

Iklan interstisial adalah iklan layar penuh yang menutupi antarmuka aplikasi hingga pengguna menutupnya. Iklan ini biasanya ditampilkan di titik transisi alami dalam alur aplikasi, seperti di antara aktivitas atau selama waktu jeda antarlevel dalam game. Saat aplikasi menampilkan iklan interstisial, pengguna dapat memilih untuk mengetuk iklan dan melanjutkan ke tujuannya atau menutupnya dan kembali ke aplikasi. Studi kasus.

Panduan ini menunjukkan cara mengintegrasikan iklan interstisial ke dalam aplikasi iOS.

Prasyarat

Sebelum melanjutkan, siapkan Google Mobile Ads SDK.

Selalu melakukan pengujian dengan iklan percobaan

Saat membangun dan menguji aplikasi, pastikan Anda menggunakan iklan percobaan, bukan iklan produksi langsung. Jika Anda tidak melakukannya, akun Anda dapat ditangguhkan.

Cara termudah untuk memuat iklan percobaan adalah dengan menggunakan ID unit iklan percobaan khusus kami untuk interstisial iOS:
/21775744923/example/interstitial

Iklan ini telah dikonfigurasi secara khusus agar menampilkan iklan percobaan untuk setiap permintaan, dan Anda dapat menggunakannya di aplikasi Anda sendiri saat melakukan coding, pengujian, dan proses debug. Pastikan Anda menggantinya dengan ID unit iklan Anda sendiri sebelum memublikasikan aplikasi.

Untuk mengetahui detail iklan percobaan Google Mobile Ads SDK, lihat Mengaktifkan iklan percobaan.

Penerapan

Langkah-langkah utama untuk mengintegrasikan iklan interstisial adalah:

  1. Memuat iklan.
  2. Mendaftarkan callback.
  3. Menampilkan iklan.

Memuat iklan

Pemuatan iklan dilakukan menggunakan metode load(adUnitID:request) pada class GAMInterstitialAd.

Swift

fileprivate func loadInterstitial() async {
  do {
    interstitial = try await AdManagerInterstitialAd.load(
      with: "/21775744923/example/interstitial", request: AdManagerRequest())
    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

[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
                                     request:[GAMRequest 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;
                           }];

Mendaftarkan callback

Untuk menerima notifikasi peristiwa presentasi, Anda harus menetapkan GADFullScreenContentDelegate ke properti fullScreenContentDelegate iklan yang ditampilkan:

Swift

interstitial?.fullScreenContentDelegate = self

SwiftUI

interstitialAd?.fullScreenContentDelegate = self

Objective-C

self.interstitial.fullScreenContentDelegate = self;

Protokol GADFullScreenContentDelegate menangani callback saat iklan ditampilkan dengan berhasil atau gagal, dan saat iklan ditutup. Kode berikut menunjukkan cara mengimplementasikan protokol:

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;
}

GAMInterstitialAd adalah objek sekali pakai. Artinya, setelah iklan interstisial ditampilkan, iklan tersebut tidak dapat ditampilkan lagi. Praktik terbaiknya adalah memuat iklan interstisial lain dalam metode adDidDismissFullScreenContent: di GADFullScreenContentDelegate sehingga iklan interstisial berikutnya mulai dimuat segera setelah iklan sebelumnya ditutup.

Menampilkan iklan

Iklan interstisial harus ditampilkan selama jeda alami dalam alur aplikasi. Antara level game adalah contoh yang baik, atau setelah pengguna menyelesaikan tugas.

Swift

ad.present(from: self!)

SwiftUI

Dengarkan peristiwa UI dalam tampilan untuk menentukan kapan iklan akan ditampilkan.

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()
        }))

Tampilkan iklan interstisial dari model tampilan:

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

  interstitialAd.present(from: nil)
}

Objective-C

[self.interstitial presentFromRootViewController:self];

Praktik terbaik

Pertimbangkan apakah iklan interstisial adalah jenis iklan yang tepat untuk aplikasi Anda.
Iklan interstisial berfungsi paling baik di aplikasi dengan titik transisi alami. Akhir tugas dalam aplikasi, seperti membagikan gambar atau menyelesaikan level game, menghasilkan titik semacam itu. Karena pengguna mengharapkan jeda dalam tindakan, iklan interstisial dapat ditampilkan dengan mudah tanpa mengganggu pengalaman mereka. Pastikan Anda mempertimbangkan pada titik mana dalam alur kerja aplikasi Anda akan menampilkan iklan interstisial dan bagaimana kemungkinan respons pengguna.
Ingatlah untuk menjeda tindakan saat menampilkan iklan interstisial.
Ada berbagai jenis iklan interstisial: teks, gambar, video, dan lainnya. Penting untuk memastikan ketika aplikasi Anda menampilkan iklan interstisial, aplikasi juga menghentikan penggunaan beberapa resource agar iklan bisa memanfaatkan resource tersebut. Misalnya, saat Anda melakukan panggilan untuk menampilkan iklan interstisial, pastikan untuk menjeda output audio yang dihasilkan oleh aplikasi Anda. Anda dapat melanjutkan pemutaran suara di adDidDismissFullScreenContent: pengendali peristiwa, yang akan dipanggil saat pengguna selesai berinteraksi dengan iklan. Selain itu, pertimbangkan untuk menghentikan sementara tugas komputasi yang intens (seperti loop game) saat iklan ditampilkan. Hal ini akan memastikan pengguna tidak mengalami grafik yang lambat atau tidak responsif atau video yang tersendat-sendat.
Berikan waktu pemuatan yang memadai.
Sama seperti pentingnya memastikan Anda menampilkan iklan interstisial pada waktu yang tepat, penting juga untuk memastikan pengguna tidak perlu menunggu iklan dimuat. Memuat iklan terlebih dahulu sebelum Anda berencana menayangkannya dapat memastikan aplikasi Anda memiliki iklan interstisial yang dimuat sepenuhnya dan siap saat waktunya menampilkan iklan.
Jangan tampilkan iklan terlalu sering kepada pengguna.
Meskipun peningkatan frekuensi iklan interstisial di aplikasi mungkin dianggap bisa meningkatkan pendapatan, langkah ini juga dapat mengganggu pengalaman pengguna dan menurunkan rasio klik-tayang. Pastikan pengguna tidak terlalu sering terganggu, sehingga mereka tidak dapat lagi menggunakan aplikasi Anda dengan nyaman.
Jangan gunakan callback penyelesaian pemuatan untuk menampilkan interstisial.
Hal ini dapat menyebabkan pengalaman pengguna yang buruk. Sebagai gantinya, muat iklan terlebih dahulu sebelum Anda perlu menayangkannya. Kemudian, periksa metode canPresentFromRootViewController:error: di GAMInterstitialAd untuk mengetahui apakah iklan siap ditampilkan.

Contoh di GitHub

Lihat contoh iklan interstisial lengkap dalam bahasa pilihan Anda:

Langkah berikutnya