Adaptor mediasi menerima pesan dan permintaan dari Google Mobile Ads SDK dan berkomunikasi dengan SDK jaringan pihak ketiga untuk memenuhi permintaan tersebut.
Panduan ini ditujukan bagi jaringan iklan yang ingin membuat adaptor mediasi iklan reward untuk Mediasi Google Mobile Ads. SDK Sampel digunakan dalam cuplikan kode di bawah untuk tujuan demonstrasi. Anda dapat menemukan penerapan lengkap adaptor yang dibuat untuk SDK contoh ini dalam project MediasiiOS kami. Panduan ini menjelaskan cara membuat adaptor.
Menentukan nama class adaptor dan parameter server
Jaringan iklan yang dimediasi melalui platform mediasi AdMob biasanya memerlukan satu atau beberapa ID untuk mengidentifikasi penayang. ID ini ditampilkan sebagai parameter server dan ditentukan saat mengonfigurasi jaringan iklan pihak ketiga untuk mediasi pada UI AdMob.
Sebelum mengembangkan adaptor mediasi, Anda harus memberi Google nama class adaptor dan parameter lain yang diperlukan untuk mendapatkan akses ke jaringan iklan Anda.
Sesuai dengan protokol GADMediationAdapter
Langkah pertama adalah membuat class adaptor Anda mengimplementasikan
protokol
GADMediationAdapter
:
#import <Foundation/Foundation.h>
#import <GoogleMobileAds/GoogleMobileAds.h>
#import <SampleAdSDK/SampleAdSDK.h>
@interface GADMediationAdapterSampleAdNetwork : NSObject <GADMediationAdapter>
@end
Perubahan ini memastikan class Anda mengimplementasikan beberapa metode yang dibahas di bawah ini.
Melaporkan kelas tambahan
Jika jaringan pihak ketiga ingin mengizinkan penayang meneruskan parameter opsional tambahan untuk permintaan iklan, class extras
harus ditampilkan dari metode networkExtrasClass
. Tampilkan Nil
jika pihak ketiga tidak mendukung
tambahan yang diberikan penayang.
#import <GoogleMobileAds/GoogleMobileAds.h>
@interface SampleExtras : NSObject<GADAdNetworkExtras>
/// Use this to indicate if debug mode is on for logging.
@property(nonatomic) BOOL debugLogging;
/// Use this to indicate whether to mute audio for video ads.
@property(nonatomic) BOOL muteAudio;
@end
#import "GADMediationAdapterSampleAdNetwork.h"
@implementation GADMediationAdapterSampleAdNetwork
...
+ (Class<GADAdNetworkExtras>)networkExtrasClass {
return [SampleExtras class];
}
...
@end
Laporkan nomor versi
Adaptor harus melaporkan versi adaptor itu sendiri dan versi SDK pihak ketiga ke Google Mobile Ads SDK. Versi dilaporkan
menggunakan GADVersionNumber
.
Adaptor open source dan
berversi Google
menggunakan skema versi adaptor 4 digit, tetapi GADVersionNumber
hanya mengizinkan 3 digit. Untuk mengatasi hal ini, sebaiknya gabungkan
dua digit terakhir ke dalam versi patch, seperti ditunjukkan di bawah:
#import "GADMediationAdapterSampleAdNetwork.h"
@implementation GADMediationAdapterSampleAdNetwork
...
+ (GADVersionNumber)adSDKVersion {
NSString *versionString = SampleSDKVersion;
NSArray *versionComponents = [versionString componentsSeparatedByString:@"."];
GADVersionNumber version = {0};
if (versionComponents.count >= 3) {
version.majorVersion = [versionComponents[0] integerValue];
version.minorVersion = [versionComponents[1] integerValue];
version.patchVersion = [versionComponents[2] integerValue];
}
return version;
}
+ (GADVersionNumber)version {
NSString *versionString = SampleAdapterVersion;
NSArray *versionComponents = [versionString componentsSeparatedByString:@"."];
GADVersionNumber version = {0};
if (versionComponents.count >= 4) {
version.majorVersion = [versionComponents[0] integerValue];
version.minorVersion = [versionComponents[1] integerValue];
// Adapter versions have 2 patch versions. Multiply the first patch by 100.
version.patchVersion =
[versionComponents[2] integerValue] * 100 + [versionComponents[3] integerValue];
}
return version;
}
...
@end
Melakukan inisialisasi adaptor
Saat aplikasi melakukan inisialisasi Google Mobile Ads SDK, setUpWithConfiguration:completionHandler:
dipanggil di semua adaptor yang dikonfigurasi untuk aplikasi dalam UI AdMob.
Argumen GADMediationServerConfiguration
memberikan informasi tentang semua penempatan yang dikonfigurasi untuk aplikasi dalam UI AdMob. Gunakan informasi ini untuk
menginisialisasi SDK jaringan iklan Anda. Setelah SDK jaringan iklan diinisialisasi, panggil argumen GADMediationAdapterSetUpCompletionBlock
. Pemblokiran ini memungkinkan Anda melaporkan inisialisasi yang berhasil atau gagal ke Google Mobile Ads SDK dengan memanggil pengendali penyelesaian dengan objek nil
atau NSError
.
#import "SampleAdapter.h"
@implementation SampleAdapter
...
+ (void)setUpWithConfiguration:(GADMediationServerConfiguration *)configuration
completionHandler:(GADMediationAdapterSetUpCompletionBlock)completionHandler {
// Since the Sample SDK doesn't need to be initialized, the completion
//handler is called directly here.
completionHandler(nil);
}
...
@end
Meminta iklan reward
Saat aplikasi memuat iklan reward dengan Google Mobile Ads SDK, loadRewardedAdForAdConfiguration:completionHandler:
dipanggil di adaptor jika jaringan iklan Anda dijangkau di waterfall mediasi.
GADRewardedLoadCompletionHandler
memungkinkan Anda melaporkan pemuatan iklan yang berhasil ke Google Mobile Ads SDK dengan memberikan referensi ke objek yang sesuai dengan protokol GADMediationRewardedAd
, atau pemuatan iklan yang gagal dengan memberikan referensi nil
dan objek NSError
. Pemanggilan pengendali penyelesaian beban akan menampilkan GADMediationRewardedAdEventDelegate
yang harus dipertahankan oleh adaptor Anda selama siklus proses iklan untuk memberi tahu Google Mobile Ads SDK tentang peristiwa berikutnya.
#import "SampleAdapter.h"
@interface SampleAdapter () <GADMediationRewardedAd> {
/// Rewarded ads from Sample SDK.
SampleRewardedAd *_rewardedAd;
/// Handles any callback when the sample rewarded ad finishes loading.
GADMediationRewardedLoadCompletionHandler _loadCompletionHandler;
/// Delegate for receiving rewarded ad notifications.
__weak id<GADMediationRewardedAdEventDelegate> _rewardedAdDelegate;
}
@end
@implementation SampleAdapter
...
- (void)loadRewardedAdForAdConfiguration:(GADMediationRewardedAdConfiguration *)adConfiguration
completionHandler:
(GADMediationRewardedLoadCompletionHandler)completionHandler {
_loadCompletionHandler = completionHandler;
NSString *adUnit = adConfiguration.credentials.settings[SampleSDKAdUnitIDKey];
SampleExtras *extras = adConfiguration.extras;
_rewardedAd = [[SampleRewardedAd alloc] initWithAdUnitID:adUnit];
_rewardedAd.enableDebugLogging = extras.enableDebugLogging;
/// Check the extras to see if the request should be customized.
SampleAdRequest *request = [[SampleAdRequest alloc] init];
request.mute = extras.muteAudio;
/// Set the delegate on the rewarded ad to listen for callbacks from the Sample SDK.
_rewardedAd.delegate = self;
[_rewardedAd fetchAd:request];
}
...
@end
Peristiwa pemuatan iklan relai
Adaptor bertanggung jawab untuk memproses callback SDK pihak ketiga dan memetakannya ke callback Google Mobile Ads SDK yang sesuai.
Laporkan keberhasilan atau kegagalan peristiwa pemuatan iklan pihak ketiga dengan memanggil
loadCompletionHandler
bersama iklan atau error. Jika pengendali penyelesaian dipanggil dengan iklan dan tidak ada error, objek delegasi peristiwa iklan akan ditampilkan. Simpan
referensi ke delegasi ini agar adaptor Anda dapat menyampaikan peristiwa presentasi
nanti.
- (void)rewardedAdDidReceiveAd:(nonnull SampleRewardedAd *)rewardedAd {
_rewardedAdDelegate = _loadCompletionHandler(self, nil);
}
- (void)rewardedAdDidFailToLoadWithError:(SampleErrorCode)errorCode {
_loadCompletionHandler(nil, [NSError errorWithDomain:kAdapterErrorDomain
code:GADErrorNoFill
userInfo:nil]);
}
Menampilkan iklan
Saat aplikasi meminta Google Mobile Ads SDK untuk menampilkan iklan reward, SDK akan memanggil metode presentFromViewController:
pada instance GADMediationRewardedAd
yang diberikan dalam panggilan ke pengendali penyelesaian pemuatan. Di sini,
Anda harus menampilkan iklan reward:
- (void)presentFromViewController:(nonnull UIViewController *)viewController {
if (!_rewardedAd.isReady) {
NSError *error =
[NSError errorWithDomain:kAdapterErrorDomain
code:0
userInfo:@{NSLocalizedDescriptionKey : @"Unable to display ad."}];
[_rewardedAdDelegate didFailToPresentWithError:error];
return;
}
[_rewardedAd presentFromRootViewController:viewController];
}
Melaporkan peristiwa iklan ke Mobile Ads SDK
Setelah menampilkan iklan, adaptor harus melaporkan peristiwa siklus proses presentasi iklan menggunakan delegasi peristiwa iklan yang sama yang ditampilkan pada waktu pemuatan iklan yang berhasil.
- (void)rewardedAdDidPresent:(nonnull SampleRewardedAd *)rewardedAd {
[_rewardedAdDelegate willPresentFullScreenView];
[_rewardedAdDelegate didStartVideo];
[_rewardedAdDelegate reportImpression];
}
- (void)rewardedAdDidDismiss:(nonnull SampleRewardedAd *)rewardedAd {
[_rewardedAdDelegate willDismissFullScreenView];
[_rewardedAdDelegate didEndVideo];
[_rewardedAdDelegate didDismissFullScreenView];
}
- (void)rewardedAd:(nonnull SampleRewardedAd *)rewardedAd userDidEarnReward:(NSUInteger)reward {
GADAdReward *aReward =
[[GADAdReward alloc] initWithRewardType:@"GADMediationAdapterSampleAdNetwork"
rewardAmount:[NSDecimalNumber numberWithUnsignedInt:reward]];
[_rewardedAdDelegate didRewardUserWithReward:aReward];
}
Peristiwa iklan yang harus dilaporkan ke Google Mobile Ads SDK dijelaskan di bawah:
Peristiwa iklan | Deskripsi |
---|---|
willPresentFullScreenView | Memberi tahu Google Mobile Ads SDK bahwa iklan akan ditampilkan. |
didStartVideo | Memberi tahu Google Mobile Ads SDK bahwa iklan reward mulai diputar. |
reportImpression | Memberi tahu Google Mobile Ads SDK bahwa tayangan terjadi pada iklan. |
didEndVideo | Memberi tahu Google Mobile Ads SDK bahwa iklan reward selesai diputar. |
didRewardUserWithReward | Memberi tahu Google Mobile Ads SDK bahwa pengguna telah memperoleh reward. |
reportClick | Memberi tahu Google Mobile Ads SDK bahwa iklan telah diklik. |
willDismissFullScreenView | Memberi tahu Google Mobile Ads SDK bahwa iklan akan ditutup. |
didDismissFullScreenView | Memberi tahu Google Mobile Ads SDK bahwa iklan telah ditutup. |