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:
- Memuat iklan.
- Mendaftarkan callback.
- 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:diGAMInterstitialAduntuk mengetahui apakah iklan siap ditampilkan.
Contoh di GitHub
Lihat contoh iklan interstisial lengkap dalam bahasa pilihan Anda:
Langkah berikutnya
- Pelajari lebih lanjut tentang penargetan iklan dan panduan iklan interstisial.
- Pelajari lebih lanjut privasi pengguna.