Iklan interstisial adalah iklan layar penuh yang menutupi antarmuka aplikasi hingga ditutup oleh pengguna. Iklan ini biasanya ditampilkan pada titik transisi alami dalam alur aplikasi, seperti di antara aktivitas atau selama waktu jeda antar level dalam game. Saat aplikasi menampilkan iklan interstisial, pengguna memiliki pilihan untuk mengetuk iklan dan melanjutkan ke tujuannya atau menutupnya dan kembali ke aplikasi. Studi kasus.
Panduan ini menunjukkan cara mengintegrasikan iklan interstisial ke aplikasi iOS.
Prasyarat
- Google Mobile Ads SDK 8.0.0 atau yang lebih tinggi.
- Selesaikan Panduan memulai.
Selalu uji dengan iklan percobaan
Saat mem-build 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
API ini telah dikonfigurasi secara khusus agar menampilkan iklan percobaan untuk setiap permintaan, sehingga Anda bebas menggunakannya di aplikasi Anda sendiri saat melakukan coding, menguji, dan men-debug. Pastikan untuk menggantinya dengan ID unit iklan Anda sendiri sebelum memublikasikan aplikasi.
Untuk informasi selengkapnya tentang cara kerja iklan percobaan Mobile Ads SDK, lihat Iklan Percobaan.
Penerapan
Langkah-langkah utama untuk mengintegrasikan iklan interstisial adalah:
- Muat iklan.
- Daftarkan callback.
- Menampilkan iklan.
Memuat iklan
Pemuatan iklan dilakukan menggunakan
metode load(adUnitID:request)
pada
class GAMInterstitialAd
.
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
private var interstitial: GAMInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
Task {
do {
interstitial = try await GAMInterstitialAd.load(
withAdUnitID: "/21775744923/example/interstitial", request: GAMRequest())
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
}
}
SwiftUI
import GoogleMobileAds
class InterstitialViewModel: NSObject, GADFullScreenContentDelegate {
private var interstitialAd: GADInterstitialAd?
func loadAd() async {
do {
interstitialAd = try await GADInterstitialAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
interstitialAd?.fullScreenContentDelegate = self
} 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:@"/21775744923/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;
}];
}
Mendaftar untuk callback
Agar dapat menerima notifikasi untuk peristiwa presentasi, Anda harus menerapkan protokol GADFullScreenContentDelegate
dan menetapkannya ke properti fullScreenContentDelegate
iklan yang ditampilkan. Protokol
GADFullScreenContentDelegate
menangani callback saat iklan
ditampilkan dengan berhasil atau tidak, dan saat iklan ditutup. Kode berikut
menunjukkan cara menerapkan protokol dan menetapkannya ke iklan:
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController, GADFullScreenContentDelegate {
private var interstitial: GAMInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
Task {
do {
interstitial = try await GAMInterstitialAd.load(
withAdUnitID: "/21775744923/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.")
}
}
SwiftUI
Tetapkan properti fullScreenContentDelegate
ke iklan yang ditampilkan:
interstitialAd?.fullScreenContentDelegate = self
Implementasikan protokol:
func adDidRecordImpression(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func ad(
_ ad: GADFullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called")
}
func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitialAd = nil
}
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:@"/21775744923/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
adalah objek sekali pakai. Artinya,
setelah ditampilkan, iklan interstisial tidak dapat ditampilkan lagi. Praktik
terbaik 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. Di antara level game adalah contoh yang baik, atau setelah pengguna menyelesaikan tugas.
Swift
guard let interstitial = interstitial else {
return print("Ad wasn't ready.")
}
// The UIViewController parameter is an optional.
interstitial.present(fromRootViewController: nil)
SwiftUI
Dengarkan peristiwa UI dalam tampilan untuk menentukan kapan harus menampilkan iklan.
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()
}))
Sajikan iklan interstisial dari model tampilan:
func showAd() {
guard let interstitialAd = interstitialAd else {
return print("Ad wasn't ready.")
}
interstitialAd.present(fromRootViewController: nil)
}
Objective-C
if (self.interstitial) {
// The UIViewController parameter is nullable.
[self.interstitial presentFromRootViewController:nil];
} else {
NSLog(@"Ad wasn't ready");
}
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, akan menghasilkan titik tersebut. Karena pengguna mengharapkan jeda dalam tindakan, menayangkan iklan interstisial tanpa mengganggu pengalaman mereka dapat dilakukan dengan mudah. Pastikan Anda mempertimbangkan titik mana dalam alur kerja aplikasi Anda yang akan menampilkan iklan interstisial dan bagaimana pengguna akan meresponsnya.
- Ingat untuk menjeda tindakan saat menampilkan iklan interstisial.
- Ada beberapa jenis iklan interstisial yang berbeda: teks, gambar,
video, dan lainnya. Penting untuk memastikan bahwa saat aplikasi Anda menampilkan
iklan interstisial, aplikasi juga menangguhkan penggunaan beberapa resource untuk memungkinkan iklan
memanfaatkannya. Misalnya, saat Anda melakukan panggilan untuk menampilkan
iklan interstisial, pastikan untuk menjeda output audio apa pun yang dihasilkan oleh aplikasi Anda.
Anda dapat melanjutkan pemutaran suara di
pengendali peristiwa
adDidDismissFullScreenContent:
, yang akan dipanggil saat pengguna selesai berinteraksi dengan iklan. Selain itu, pertimbangkan untuk menghentikan sementara tugas komputasi intens (seperti loop game) saat iklan ditampilkan. Hal ini akan memastikan pengguna tidak mengalami grafis yang lambat atau tidak responsif atau video yang tersendat. - Berikan waktu pemuatan yang cukup.
- Sama pentingnya untuk memastikan Anda menampilkan iklan interstisial pada waktu yang tepat, penting juga untuk memastikan pengguna tidak harus menunggu iklan dimuat. Memuat iklan terlebih dahulu sebelum Anda bermaksud menampilkannya dapat memastikan bahwa aplikasi Anda telah menyiapkan iklan interstisial yang dimuat sepenuhnya saat waktunya tiba untuk menampilkannya.
- Jangan membanjiri pengguna dengan iklan.
- Meskipun meningkatkan frekuensi iklan interstisial di aplikasi Anda mungkin terlihat seperti cara yang bagus untuk meningkatkan pendapatan, hal ini juga dapat menurunkan pengalaman pengguna dan menurunkan rasio klik-tayang. Pastikan pengguna tidak terlalu sering terganggu sehingga mereka tidak lagi dapat menikmati penggunaan aplikasi Anda.
- Jangan gunakan callback penyelesaian pemuatan untuk menampilkan interstisial.
- Hal ini dapat menyebabkan pengalaman pengguna yang buruk. Sebagai gantinya, muat iklan di awal sebelum Anda
perlu menampilkannya. Kemudian, periksa metode
canPresentFromRootViewController:error:
diGAMInterstitialAd
untuk mengetahui apakah metode tersebut siap ditampilkan.
Contoh di GitHub
Lihat contoh iklan interstisial lengkap dalam bahasa yang Anda inginkan:
Langkah berikutnya
- Pelajari lebih lanjut penargetan iklan dan panduan iklan interstisial.
- Pelajari privasi pengguna lebih lanjut.