پیش نیازها
راه اندازی رویدادهای سفارشی را کامل کنید.
درخواست آگهی بینابینی
هنگامی که مورد خط رویداد سفارشی در زنجیره واسطه آبشار به دست میآید،the loadInterstitial:adConfiguration:completionHandler:
method با نام کلاسی که هنگام ایجاد یک رویداد سفارشی ارائه کردهاید فراخوانی میشود. در این مورد، آن متد در SampleCustomEvent
است، که سپسthe loadInterstitial:adConfiguration:completionHandler:
method در SampleCustomEventInterstitial
فراخوانی می کند.
برای درخواست یک تبلیغ بینابینی، کلاسی را ایجاد یا تغییر دهید که GADMediationAdapter
و loadInterstitial:adConfiguration:completionHandler:
اجرا می کند. اگر کلاسی که GADMediationAdapter
را گسترش میدهد از قبل وجود داشته باشد، loadInterstitial:adConfiguration:completionHandler:
در آنجا پیادهسازی کنید. علاوه بر این، یک کلاس جدید برای پیاده سازی GADMediationInterstitialAd
ایجاد کنید.
در مثال رویداد سفارشی ما، SampleCustomEvent
the GADMediationAdapter
interface را پیاده سازی می کند و سپس بهSampleCustomEventInterstitial
واگذار می کند.
سریع
import GoogleMobileAds class SampleCustomEvent: NSObject, GADMediationAdapter { fileprivate var interstitialAd: SampleCustomEventInterstitial? ... func loadInterstitial( for adConfiguration: GADMediationInterstitialAdConfiguration, completionHandler: @escaping GADMediationInterstitialLoadCompletionHandler ) { self.interstitialAd = SampleCustomEventInterstitial() self.interstitialAd?.loadInterstitial( for: adConfiguration, completionHandler: completionHandler) } }
هدف-C
#import "SampleCustomEvent.h" @implementation SampleCustomEvent SampleCustomEventInterstitial *sampleInterstitial; - (void)loadInterstitialForAdConfiguration: (GADMediationInterstitialAdConfiguration *)adConfiguration completionHandler: (GADMediationInterstitialLoadCompletionHandler) completionHandler { sampleInterstitial = [[SampleCustomEventInterstitial alloc] init]; [sampleInterstitial loadInterstitialForAdConfiguration:adConfiguration completionHandler:completionHandler]; }
SampleCustomEventInterstitial
مسئول وظایف زیر است:
بارگیری آگهی بینابینی و فراخوانی
GADMediationInterstitialAdLoadCompletionHandler
method پس از اتمام بارگیریپیاده سازی
GADMediationInterstitialAd
protocolدریافت و گزارش تماسهای رویداد تبلیغاتی به Google Mobile Ads SDK
پارامتر اختیاری تعریف شده در رابط کاربری Ad Manager در پیکربندی آگهی گنجانده شده است. این پارامتر از طریق adConfiguration.credentials.settings[@"parameter"]
قابل دسترسی است. این پارامتر معمولاً یک شناسه واحد تبلیغاتی است که یک SDK شبکه تبلیغاتی هنگام نمونهبرداری از یک شی تبلیغاتی به آن نیاز دارد.
سریع
import GoogleMobileAds class SampleCustomEventInterstitial: NSObject, GADMediationInterstitialAd { /// The Sample Ad Network interstitial ad. var interstitial: SampleInterstitial? /// The ad event delegate to forward ad rendering events to the Google Mobile Ads SDK. var delegate: GADMediationInterstitialAdEventDelegate? var completionHandler: GADMediationInterstitialLoadCompletionHandler? func loadInterstitial( for adConfiguration: GADMediationInterstitialAdConfiguration, completionHandler: @escaping GADMediationInterstitialLoadCompletionHandler ) { interstitial = SampleInterstitial.init( adUnitID: adConfiguration.credentials.settings["parameter"] as? String) interstitial?.delegate = self let adRequest = SampleAdRequest() adRequest.testMode = adConfiguration.isTestRequest self.completionHandler = completionHandler interstitial?.fetchAd(adRequest) } func present(from viewController: UIViewController) { if let interstitial = interstitial, interstitial.isInterstitialLoaded { interstitial.show() } } }
هدف-C
#import "SampleCustomEventInterstitial.h" @interface SampleCustomEventInterstitial () <SampleInterstitialAdDelegate, GADMediationInterstitialAd> { /// The sample interstitial ad. SampleInterstitial *_interstitialAd; /// The completion handler to call when the ad loading succeeds or fails. GADMediationInterstitialLoadCompletionHandler _loadCompletionHandler; /// The ad event delegate to forward ad rendering events to the Google Mobile /// Ads SDK. id <GADMediationInterstitialAdEventDelegate> _adEventDelegate; } @end - (void)loadInterstitialForAdConfiguration: (GADMediationInterstitialAdConfiguration *)adConfiguration completionHandler: (GADMediationInterstitialLoadCompletionHandler) completionHandler { __block atomic_flag completionHandlerCalled = ATOMIC_FLAG_INIT; __block GADMediationInterstitialLoadCompletionHandler originalCompletionHandler = [completionHandler copy]; _loadCompletionHandler = ^id<GADMediationInterstitialAdEventDelegate>( _Nullable id<GADMediationInterstitialAd> ad, NSError *_Nullable error) { // Only allow completion handler to be called once. if (atomic_flag_test_and_set(&completionHandlerCalled)) { return nil; } id<GADMediationInterstitialAdEventDelegate> delegate = nil; if (originalCompletionHandler) { // Call original handler and hold on to its return value. delegate = originalCompletionHandler(ad, error); } // Release reference to handler. Objects retained by the handler will also // be released. originalCompletionHandler = nil; return delegate; }; NSString *adUnit = adConfiguration.credentials.settings[@"parameter"]; _interstitialAd = [[SampleInterstitial alloc] initWithAdUnitID:adUnit]; _interstitialAd.delegate = self; SampleAdRequest *adRequest = [[SampleAdRequest alloc] init]; adRequest.testMode = adConfiguration.isTestRequest; [_interstitialAd fetchAd:adRequest]; }
خواه تبلیغ با موفقیت واکشی شود یا با خطا مواجه شود، با GADMediationInterstitialLoadCompletionHandler
تماس بگیرید. در صورت موفقیت، از کلاسی که GADMediationInterstitialAd
را پیاده سازی می کند با مقدار nil
برای پارامتر خطا عبور دهید. در صورت عدم موفقیت، از خطایی که با آن مواجه شدید عبور کنید.
به طور معمول، این روشها در داخل فراخوانهای SDK شخص ثالثی که آداپتور شما پیادهسازی میکند، پیادهسازی میشود. برای این مثال، Sample SDK دارای SampleInterstitialAdDelegate
با تماسهای مربوطه است:
سریع
func interstitialDidLoad(_ interstitial: SampleInterstitial) { if let handler = completionHandler { delegate = handler(self, nil) } } func interstitial( _ interstitial: SampleInterstitial, didFailToLoadAdWith errorCode: SampleErrorCode ) { let error = SampleCustomEventUtilsSwift.SampleCustomEventErrorWithCodeAndDescription( code: SampleCustomEventErrorCodeSwift .SampleCustomEventErrorAdLoadFailureCallback, description: "Sample SDK returned an ad load failure callback with error code: \(errorCode)" ) if let handler = completionHandler { delegate = handler(nil, error) } }
هدف-C
- (void)interstitialDidLoad:(SampleInterstitial *)interstitial { _adEventDelegate = _loadCompletionHandler(self, nil); } - (void)interstitial:(SampleInterstitial *)interstitial didFailToLoadAdWithErrorCode:(SampleErrorCode)errorCode { NSError *error = SampleCustomEventErrorWithCodeAndDescription( SampleCustomEventErrorAdLoadFailureCallback, [NSString stringWithFormat:@"Sample SDK returned an ad load failure " @"callback with error code: %@", errorCode]); _adEventDelegate = _loadCompletionHandler(nil, error); }
GADMediationInterstitialAd
نیاز به پیاده سازی روش present
برای نمایش آگهی دارد:
سریع
func present(from viewController: UIViewController) { if let interstitial = interstitial, interstitial.isInterstitialLoaded { interstitial.show() } }
هدف-C
- (void)presentFromViewController:(UIViewController *)viewController { if ([_interstitialAd isInterstitialLoaded]) { [_interstitialAd show]; } else { NSError *error = SampleCustomEventErrorWithCodeAndDescription( SampleCustomEventErrorAdNotLoaded, [NSString stringWithFormat:@"The interstitial ad failed to present " @"because the ad was not loaded."]); [_adEventDelegate didFailToPresentWithError:error] } }
رویدادهای میانجی را به Google Mobile Ads SDK بازارسال کنید
هنگامی که GADMediationInterstitialLoadCompletionHandler
را با یک تبلیغ بارگذاری شده فراخوانی کردید، شیء نماینده بازگردانده شده GADMediationInterstitialAdEventDelegate
می تواند توسط آداپتور برای ارسال رویدادهای ارائه از SDK شخص ثالث به Google Mobile Ads SDK استفاده شود. کلاس SampleCustomEventInterstitial
پروتکل SampleInterstitialAdDelegate
را برای ارسال تماسهای برگشتی از شبکه تبلیغات نمونه به Google Mobile Ads SDK پیادهسازی میکند.
مهم است که رویداد سفارشی شما تا آنجایی که ممکن است این تماسهای پاسخگو را فوروارد کند تا برنامه شما این رویدادهای مشابه را از Google Mobile Ads SDK دریافت کند. در اینجا مثالی از استفاده از callback آورده شده است:
سریع
func interstitialWillPresentScreen(_ interstitial: SampleInterstitial) { delegate?.willPresentFullScreenView() delegate?.reportImpression() } func interstitialWillDismissScreen(_ interstitial: SampleInterstitial) { delegate?.willDismissFullScreenView() } func interstitialDidDismissScreen(_ interstitial: SampleInterstitial) { delegate?.didDismissFullScreenView() } func interstitialWillLeaveApplication(_ interstitial: SampleInterstitial) { delegate?.reportClick() }
هدف-C
- (void)interstitialWillPresentScreen:(SampleInterstitial *)interstitial { [_adEventDelegate willPresentFullScreenView]; [_adEventDelegate reportImpression]; } - (void)interstitialWillDismissScreen:(SampleInterstitial *)interstitial { [_adEventDelegate willDismissFullScreenView]; } - (void)interstitialDidDismissScreen:(SampleInterstitial *)interstitial { [_adEventDelegate didDismissFullScreenView]; } - (void)interstitialWillLeaveApplication:(SampleInterstitial *)interstitial { [_adEventDelegate reportClick]; }
این پیاده سازی رویدادهای سفارشی را برای تبلیغات بینابینی تکمیل می کند. نمونه کامل در GitHub موجود است. میتوانید آن را با یک شبکه تبلیغاتی که قبلاً پشتیبانی میشود استفاده کنید یا آن را برای نمایش آگهیهای بینابینی رویداد سفارشی تغییر دهید.