Iklan reward adalah iklan yang memungkinkan pengguna berinteraksi dengan imbalan reward dalam aplikasi. Panduan ini menunjukkan cara mengintegrasikan iklan reward dari AdMob ke aplikasi iOS. Baca beberapa kisah sukses pelanggan: studi kasus 1, studi kasus 2.
Prasyarat
- Google Mobile Ads SDK 8.0.0 atau yang lebih tinggi.
- Selesaikan Panduan memulai.
Selalu uji dengan iklan percobaan
Saat membuat dan menguji aplikasi, pastikan Anda menggunakan iklan pengujian, bukan iklan produksi aktif. Jika Anda tidak melakukannya, akun Anda dapat ditangguhkan.
Cara termudah untuk memuat iklan pengujian adalah menggunakan ID unit iklan pengujian khusus kami untuk iklan reward iOS:
ca-app-pub-3940256099942544/1712485313
Konfigurasi ini telah dikonfigurasi secara khusus untuk menampilkan iklan pengujian untuk setiap permintaan, dan Anda bebas untuk menggunakannya di aplikasi Anda sendiri saat melakukan coding, menguji, dan men-debug. Cukup pastikan Anda menggantinya dengan ID unit iklan Anda sendiri sebelum memublikasikan aplikasi.
Untuk informasi selengkapnya tentang cara kerja iklan pengujian SDK Iklan Seluler, lihat Iklan Pengujian.
Penerapan
Langkah utama untuk mengintegrasikan iklan interstisial reward adalah sebagai berikut:
- Memuat iklan
- [Opsional] Memvalidasi callback SSV
- Mendaftar untuk callback
- Menampilkan iklan dan menangani peristiwa reward
Memuat iklan
Pemuatan iklan dilakukan menggunakan metode loadWithAdUnitID:request:completionHandler:
statis di class GADRewardedAd
. Metode pemuatan memerlukan ID unit iklan, objek GADRequest
, dan pengendali penyelesaian yang akan dipanggil saat pemuatan iklan berhasil atau gagal. Objek
GADRewardedAd
yang dimuat diberikan sebagai parameter di pengendali
penyelesaian. Contoh di bawah ini menunjukkan cara memuat GADRewardedAd
di
class ViewController
Anda.
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController { private var rewardedAd: GADRewardedAd? func loadRewardedAd() { let request = GADRequest() GADRewardedAd.load(withAdUnitID:"ca-app-pub-3940256099942544/1712485313", request: request, completionHandler: { [self] ad, error in if let error = error { print("Failed to load rewarded ad with error: \(error.localizedDescription)") return } rewardedAd = ad print("Rewarded ad loaded.") } ) } }
Objective-C
@import GoogleMobileAds; @import UIKit; @interface ViewController () @property(nonatomic, strong) GADRewardedAd *rewardedAd; @end @implementation ViewController - (void)loadRewardedAd { GADRequest *request = [GADRequest request]; [GADRewardedAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313" request:request completionHandler:^(GADRewardedAd *ad, NSError *error) { if (error) { NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]); return; } self.rewardedAd = ad; NSLog(@"Rewarded ad loaded."); }]; }
[Opsional] Memvalidasi callback verifikasi sisi server (SSV)
Aplikasi yang memerlukan data tambahan dalam callback verifikasi
sisi server harus menggunakan
fitur data kustom iklan reward. Setiap nilai string yang ditetapkan pada objek iklan reward akan diteruskan ke parameter kueri custom_data
dari callback SSV. Jika tidak ada nilai data kustom yang ditetapkan, parameter value kueri custom_data
tidak akan ada di callback SSV.
Contoh kode berikut menunjukkan cara menetapkan data kustom pada objek iklan reward sebelum meminta iklan.
Swift
GADRewardedInterstitialAd.load(withAdUnitID:"ca-app-pub-3940256099942544/1712485313", request: request, completionHandler: { [self] ad, error in if let error != error { rewardedInterstitialAd = ad let options = GADServerSideVerificationOptions() options.customRewardString = "SAMPLE_CUSTOM_DATA_STRING" rewardedInterstitialAd.serverSideVerificationOptions = options }
Objective-C
GADRequest *request = [GADRequest request]; [GADRewardedInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313" request:request completionHandler:^(GADRewardedInterstitialAd *ad, NSError *error) { if (error) { // Handle Error return; } self.rewardedInterstitialAd = ad; GADServerSideVerificationOptions *options = [[GADServerSideVerificationOptions alloc] init]; options.customRewardString = @"SAMPLE_CUSTOM_DATA_STRING"; ad.serverSideVerificationOptions = options; }];
Mendaftar untuk callback
Agar dapat menerima notifikasi untuk peristiwa presentasi, Anda harus menerapkan protokol GADFullScreenContentDelegate
dan menetapkannya ke properti fullScreenContentDelegate
dari iklan yang ditampilkan. Protokol GADFullScreenContentDelegate
menangani callback saat iklan berhasil ditampilkan atau tidak berhasil, dan saat iklan ditutup. Kode berikut
menunjukkan cara menerapkan protokol dan menetapkannya ke iklan:
Swift
class ViewController: UIViewController, GADFullScreenContentDelegate { private var rewardedAd: GADRewardedAd? func loadRewardedAd() { let request = GADRequest() GADRewarded.load(withAdUnitID:"ca-app-pub-3940256099942544/1712485313", request: request, completionHandler: { [self] ad, error in if let error = error { print("Failed to load rewarded ad with error: \(error.localizedDescription)") return } rewardedAd = ad print("Rewarded ad loaded.") rewardedAd?.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) GADRewardedAd *rewardedAd; @end @implementation ViewController - (void)loadRewardedAd { GADRequest *request = [GADRequest request]; [GADRewardedAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4806952744" request:request completionHandler:^(GADRewardedAd *ad, NSError *error) { if (error) { NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]); return; } self.rewardedAd = ad; NSLog(@"Rewarded ad loaded."); self.rewardedAd.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."); }
GADRewardedAd
adalah objek yang hanya dapat digunakan satu kali. Artinya, setelah iklan reward ditampilkan, iklan tersebut tidak dapat ditampilkan lagi. Praktik terbaiknya adalah memuat iklan reward lain dalam metode adDidDismissFullScreenContent:
di GADFullScreenContentDelegate
agar iklan reward berikutnya mulai dimuat segera setelah iklan reward sebelumnya ditutup.
Menampilkan iklan dan menangani peristiwa reward
Sebelum menampilkan iklan reward kepada pengguna, Anda harus memberikan pilihan eksplisit kepada mereka untuk melihat konten iklan reward dengan imbalan reward. Iklan reward harus selalu menjadi pengalaman keikutsertaan.
Saat menampilkan iklan, Anda harus menyediakan objek GADUserDidEarnRewardHandler
untuk menangani reward bagi pengguna.
Kode berikut menunjukkan metode terbaik untuk menampilkan iklan reward.
Swift
func show() { if let ad = rewardedAd { ad.present(fromRootViewController: self) { let reward = ad.adReward print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)") // TODO: Reward the user. } } else { print("Ad wasn't ready") } }
Objective-C
- (void)show { ... if (self.rewardedAd) { [self.rewardedAd presentFromRootViewController:self userDidEarnRewardHandler:^{ GADAdReward *reward = self.rewardedAd.adReward; // TODO: Reward the user! }]; } else { NSLog(@"Ad wasn't ready"); } }
FAQ
- Bisakah saya mendapatkan detail reward untuk
GADRewardedAd
? - Ya, jika Anda memerlukan jumlah reward sebelum callback
userDidEarnReward
diaktifkan,GADRewardedAd
memiliki propertiadReward
yang dapat Anda periksa untuk memverifikasi jumlah reward setelah iklan dimuat. - Apakah ada waktu tunggu untuk panggilan inisialisasi?
- Setelah 10 detik, Google Mobile Ads SDK akan memanggil
GADInitializationCompletionHandler
yang disediakan untuk metodestartWithCompletionHandler:
, meskipun jaringan mediasi masih belum menyelesaikan inisialisasi. - Bagaimana jika beberapa jaringan mediasi belum siap saat saya mendapatkan callback inisialisasi?
Sebaiknya muat iklan di dalam
GADInitializationCompletionHandler
. Meskipun jaringan mediasi belum siap, Google Mobile Ads SDK tetap akan meminta iklan dari jaringan tersebut. Jadi, jika jaringan mediasi selesai melakukan inisialisasi setelah waktu tunggu habis, jaringan tersebut masih dapat menayangkan permintaan iklan berikutnya di sesi tersebut.Anda dapat terus memeriksa status inisialisasi semua adaptor di sepanjang sesi aplikasi dengan memanggil
GADMobileAds.initializationStatus
.- Bagaimana cara mengetahui mengapa jaringan mediasi tertentu belum siap?
Properti
description
dari objekGADAdapterStatus
menjelaskan alasan adaptor tidak siap melayani permintaan iklan.- Apakah pengendali penyelesaian
userDidEarnRewardHandler
selalu dipanggil sebelum metode delegasiadDidDismissFullScreenContent:
? Untuk iklan Google, semua panggilan
userDidEarnRewardHandler
terjadi sebelumadDidDismissFullScreenContent:
. Untuk iklan yang ditayangkan melalui mediasi, penerapan SDK jaringan iklan pihak ketiga menentukan urutan callback. Untuk SDK jaringan iklan yang menyediakan satu metode delegasi dengan informasi reward, adaptor mediasi memanggiluserDidEarnRewardHandler
sebelumadDidDismissFullScreenContent:
.
Contoh di GitHub
- Contoh iklan reward: Swift | Objective-C
Langkah berikutnya
Pelajari privasi pengguna lebih lanjut.