ข้อกำหนดเบื้องต้น
ทำการตั้งค่าเหตุการณ์ที่กำหนดเองให้เสร็จ
ขอโฆษณาเนทีฟ
เมื่อมีการเข้าถึงรายการโฆษณาของเหตุการณ์ที่กำหนดเองในเชนสื่อกลาง Waterfall ระบบจะเรียกใช้the loadNativeAd:adConfiguration:completionHandler:
method ตามชื่อคลาสที่คุณระบุไว้เมื่อสร้างเหตุการณ์ที่กำหนดเอง ในกรณีนี้ วิธีการนี้จะอยู่ใน SampleCustomEvent
ซึ่งจะเรียกใช้the loadNativeAd:adConfiguration:completionHandler:
method ใน SampleCustomEventNative
หากต้องการขอโฆษณาเนทีฟ ให้สร้างหรือแก้ไขคลาสที่ใช้งาน GADMediationAdapter
และ loadNativeAd:adConfiguration:completionHandler:
หากมีคลาสที่ขยาย GADMediationAdapter
อยู่แล้ว ให้ใช้ loadNativeAd:adConfiguration:completionHandler:
ที่นั่น นอกจากนี้ ให้สร้างคลาสใหม่เพื่อใช้ GADMediationNativeAd
ในตัวอย่างเหตุการณ์ที่กำหนดเอง SampleCustomEvent
ใช้งานthe GADMediationAdapter
interface แล้วมอบสิทธิ์ให้กับSampleCustomEventNative
Swift
import GoogleMobileAds class SampleCustomEvent: NSObject, GADMediationAdapter { fileprivate var nativeAd: SampleCustomEventNativeAd? func loadNativeAd( for adConfiguration: GADMediationNativeAdConfiguration, completionHandler: @escaping GADMediationNativeAdLoadCompletionHandler ) { self.nativeAd = SampleCustomEventNativeAd() self.nativeAd?.loadNativeAd( for: adConfiguration, completionHandler: completionHandler) } }
Objective-C
#import "SampleCustomEvent.h" @implementation SampleCustomEvent SampleCustomEventNativeAd *sampleNativeAd; - (void)loadNativeAdForAdConfiguration: (GADMediationNativeAdConfiguration *)adConfiguration completionHandler: (GADMediationNativeAdLoadCompletionHandler) completionHandler { sampleNative = [[SampleCustomEventNativeAd alloc] init]; [sampleNative loadNativeAdForAdConfiguration:adConfiguration completionHandler:completionHandler]; }
SampleCustomEventNative
มีหน้าที่ดังต่อไปนี้
กำลังโหลดโฆษณาเนทีฟ
การใช้
GADMediationNativeAd
protocolการรับและการรายงานการเรียกกลับของเหตุการณ์โฆษณาไปยัง SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google
พารามิเตอร์ที่ไม่บังคับที่กำหนดไว้ใน Ad Manager UI จะรวมอยู่ในการกำหนดค่าโฆษณา
คุณเข้าถึงพารามิเตอร์นี้ได้ผ่านทาง adConfiguration.credentials.settings[@"parameter"]
พารามิเตอร์นี้มักจะเป็นตัวระบุหน่วยโฆษณาที่ SDK เครือข่ายโฆษณาต้องใช้เมื่อเริ่มต้นออบเจ็กต์โฆษณา
Swift
class SampleCustomEventNativeAd: NSObject, GADMediationNativeAd { /// The Sample Ad Network native ad. var nativeAd: SampleNativeAd? /// The ad event delegate to forward ad rendering events to the Google Mobile /// Ads SDK. var delegate: GADMediationNativeAdEventDelegate? /// Completion handler called after ad load var completionHandler: GADMediationNativeLoadCompletionHandler? func loadNativeAd( for adConfiguration: GADMediationNativeAdConfiguration, completionHandler: @escaping GADMediationNativeLoadCompletionHandler ) { let adLoader = SampleNativeAdLoader() let sampleRequest = SampleNativeAdRequest() // The Google Mobile Ads SDK requires the image assets to be downloaded // automatically unless the publisher specifies otherwise by using the // GADNativeAdImageAdLoaderOptions object's disableImageLoading property. If // your network doesn't have an option like this and instead only ever // returns URLs for images (rather than the images themselves), your adapter // should download image assets on behalf of the publisher. This should be // done after receiving the native ad object from your network's SDK, and // before calling the connector's adapter:didReceiveMediatedNativeAd: method. sampleRequest.shouldDownloadImages = true sampleRequest.preferredImageOrientation = NativeAdImageOrientation.any sampleRequest.shouldRequestMultipleImages = false let options = adConfiguration.options for loaderOptions: GADAdLoaderOptions in options { if let imageOptions = loaderOptions as? GADNativeAdImageAdLoaderOptions { sampleRequest.shouldRequestMultipleImages = imageOptions.shouldRequestMultipleImages // If the GADNativeAdImageAdLoaderOptions' disableImageLoading property is // YES, the adapter should send just the URLs for the images. sampleRequest.shouldDownloadImages = !imageOptions.disableImageLoading } else if let mediaOptions = loaderOptions as? GADNativeAdMediaAdLoaderOptions { switch mediaOptions.mediaAspectRatio { case GADMediaAspectRatio.landscape: sampleRequest.preferredImageOrientation = NativeAdImageOrientation.landscape case GADMediaAspectRatio.portrait: sampleRequest.preferredImageOrientation = NativeAdImageOrientation.portrait default: sampleRequest.preferredImageOrientation = NativeAdImageOrientation.any } } } // This custom event uses the server parameter to carry an ad unit ID, which // is the most common use case. adLoader.delegate = self adLoader.adUnitID = adConfiguration.credentials.settings["parameter"] as? String self.completionHandler = completionHandler adLoader.fetchAd(sampleRequest) } }
Objective-C
#import "SampleCustomEventNativeAd.h" @interface SampleCustomEventNativeAd () <SampleNativeAdDelegate, GADMediationNativeAd> { /// The sample native ad. SampleNativeAd *_nativeAd; /// The completion handler to call when the ad loading succeeds or fails. GADMediationNativeLoadCompletionHandler _loadCompletionHandler; /// The ad event delegate to forward ad rendering events to the Google Mobile /// Ads SDK. id<GADMediationNativeAdEventDelegate> _adEventDelegate; } @end - (void)loadNativeAdForAdConfiguration: (GADMediationNativeAdConfiguration *)adConfiguration completionHandler:(GADMediationNativeLoadCompletionHandler) completionHandler { __block atomic_flag completionHandlerCalled = ATOMIC_FLAG_INIT; __block GADMediationNativeLoadCompletionHandler originalCompletionHandler = [completionHandler copy]; _loadCompletionHandler = ^id<GADMediationNativeAdEventDelegate>( _Nullable id<GADMediationNativeAd> ad, NSError *_Nullable error) { // Only allow completion handler to be called once. if (atomic_flag_test_and_set(&completionHandlerCalled)) { return nil; } id<GADMediationNativeAdEventDelegate> 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; }; SampleNativeAdLoader *adLoader = [[SampleNativeAdLoader alloc] init]; SampleNativeAdRequest *sampleRequest = [[SampleNativeAdRequest alloc] init]; // The Google Mobile Ads SDK requires the image assets to be downloaded // automatically unless the publisher specifies otherwise by using the // GADNativeAdImageAdLoaderOptions object's disableImageLoading property. If // your network doesn't have an option like this and instead only ever returns // URLs for images (rather than the images themselves), your adapter should // download image assets on behalf of the publisher. This should be done after // receiving the native ad object from your network's SDK, and before calling // the connector's adapter:didReceiveMediatedNativeAd: method. sampleRequest.shouldDownloadImages = YES; sampleRequest.preferredImageOrientation = NativeAdImageOrientationAny; sampleRequest.shouldRequestMultipleImages = NO; sampleRequest.testMode = adConfiguration.isTestRequest; for (GADAdLoaderOptions *loaderOptions in adConfiguration.options) { if ([loaderOptions isKindOfClass:[GADNativeAdImageAdLoaderOptions class]]) { GADNativeAdImageAdLoaderOptions *imageOptions = (GADNativeAdImageAdLoaderOptions *)loaderOptions; sampleRequest.shouldRequestMultipleImages = imageOptions.shouldRequestMultipleImages; // If the GADNativeAdImageAdLoaderOptions' disableImageLoading property is // YES, the adapter should send just the URLs for the images. sampleRequest.shouldDownloadImages = !imageOptions.disableImageLoading; } else if ([loaderOptions isKindOfClass:[GADNativeAdMediaAdLoaderOptions class]]) { GADNativeAdMediaAdLoaderOptions *mediaOptions = (GADNativeAdMediaAdLoaderOptions *)loaderOptions; switch (mediaOptions.mediaAspectRatio) { case GADMediaAspectRatioLandscape: sampleRequest.preferredImageOrientation = NativeAdImageOrientationLandscape; break; case GADMediaAspectRatioPortrait: sampleRequest.preferredImageOrientation = NativeAdImageOrientationPortrait; break; default: sampleRequest.preferredImageOrientation = NativeAdImageOrientationAny; break; } } else if ([loaderOptions isKindOfClass:[GADNativeAdViewAdOptions class]]) { _nativeAdViewAdOptions = (GADNativeAdViewAdOptions *)loaderOptions; } } // This custom event uses the server parameter to carry an ad unit ID, which // is the most common use case. NSString *adUnit = adConfiguration.credentials.settings[@"parameter"]; adLoader.adUnitID = adUnit; adLoader.delegate = self; [adLoader fetchAd:sampleRequest]; }
ไม่ว่าจะดึงข้อมูลโฆษณาได้สำเร็จหรือพบข้อผิดพลาด คุณก็เรียก GADMediationNativeAdLoadCompletionHandler
ในกรณีที่ดำเนินการสำเร็จ ให้ส่งผ่านคลาสที่ใช้ GADMediationNativeAd
ด้วยค่า nil
สำหรับพารามิเตอร์ข้อผิดพลาด ในกรณีที่ดำเนินการไม่สำเร็จ ให้ส่งผ่านข้อผิดพลาดที่คุณพบ
โดยปกติแล้ว วิธีการเหล่านี้จะใช้ภายในโค้ดเรียกกลับจาก SDK ของบุคคลที่สามที่อะแดปเตอร์ใช้ ในตัวอย่างนี้ Sample SDK มี SampleNativeAdDelegate
ที่มีโค้ดเรียกกลับที่เกี่ยวข้อง ดังนี้
Swift
func adLoader( _ adLoader: SampleNativeAdLoader, didReceive nativeAd: SampleNativeAd ) { extraAssets = [ SampleCustomEventConstantsSwift.awesomenessKey: nativeAd.degreeOfAwesomeness ?? "" ] if let image = nativeAd.image { images = [GADNativeAdImage(image: image)] } else { let imageUrl = URL(fileURLWithPath: nativeAd.imageURL) images = [GADNativeAdImage(url: imageUrl, scale: nativeAd.imageScale)] } if let mappedIcon = nativeAd.icon { icon = GADNativeAdImage(image: mappedIcon) } else { let iconURL = URL(fileURLWithPath: nativeAd.iconURL) icon = GADNativeAdImage(url: iconURL, scale: nativeAd.iconScale) } adChoicesView = SampleAdInfoView() self.nativeAd = nativeAd if let handler = completionHandler { delegate = handler(self, nil) } } func adLoader( _ adLoader: SampleNativeAdLoader, 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) } }
Objective-C
- (void)adLoader:(SampleNativeAdLoader *)adLoader didReceiveNativeAd:(SampleNativeAd *)nativeAd { if (nativeAd.image) { _images = @[ [[GADNativeAdImage alloc] initWithImage:nativeAd.image] ]; } else { NSURL *imageURL = [[NSURL alloc] initFileURLWithPath:nativeAd.imageURL]; _images = @[ [[GADNativeAdImage alloc] initWithURL:imageURL scale:nativeAd.imageScale] ]; } if (nativeAd.icon) { _icon = [[GADNativeAdImage alloc] initWithImage:nativeAd.icon]; } else { NSURL *iconURL = [[NSURL alloc] initFileURLWithPath:nativeAd.iconURL]; _icon = [[GADNativeAdImage alloc] initWithURL:iconURL scale:nativeAd.iconScale]; } // The sample SDK provides an AdChoices view (SampleAdInfoView). If your SDK // provides image and click through URLs for its AdChoices icon instead of an // actual UIView, the adapter is responsible for downloading the icon image // and creating the AdChoices icon view. _adChoicesView = [[SampleAdInfoView alloc] init]; _nativeAd = nativeAd; _adEventDelegate = _loadCompletionHandler(self, nil); } - (void)adLoader:(SampleNativeAdLoader *)adLoader 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); }
แมปโฆษณาเนทีฟ
SDK ต่างๆ มีรูปแบบที่เป็นของตัวเองสำหรับโฆษณาเนทีฟ รายการหนึ่งอาจแสดงผล ออบเจ็กต์ที่มีช่อง "title" ขณะที่อีกรายการอาจมี "บรรทัดแรก" นอกจากนี้ วิธีที่ใช้ติดตามการแสดงผลและกระบวนการคลิกอาจแตกต่างกันไปสำหรับ SDK แต่ละ SDK
ในการแก้ไขปัญหาเหล่านี้ เมื่อเหตุการณ์ที่กำหนดเองได้รับออบเจ็กต์โฆษณาเนทีฟจาก SDK ที่ใช้สื่อกลาง เหตุการณ์นั้นควรใช้คลาสที่ใช้งาน GADMediationNativeAd
เช่น SampleCustomEventNativeAd
เพื่อ "แมป" ออบเจ็กต์โฆษณาเนทีฟของ SDK ที่ใช้สื่อกลางเพื่อให้ตรงกับอินเทอร์เฟซที่ SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google คาดหวัง
ตอนนี้เราไปดูรายละเอียดการใช้งานของ SampleCustomEventNativeAd
กันอย่างละเอียดยิ่งขึ้น
จัดเก็บการแมป
GADMediationNativeAd
ควรใช้พร็อพเพอร์ตี้บางอย่างที่แมปจากพร็อพเพอร์ตี้ของ SDK อื่นๆ ดังนี้
Swift
var nativeAd: SampleNativeAd? var headline: String? { return nativeAd?.headline } var images: [GADNativeAdImage]? var body: String? { return nativeAd?.body } var icon: GADNativeAdImage? var callToAction: String? { return nativeAd?.callToAction } var starRating: NSDecimalNumber? { return nativeAd?.starRating } var store: String? { return nativeAd?.store } var price: String? { return nativeAd?.price } var advertiser: String? { return nativeAd?.advertiser } var extraAssets: [String: Any]? { return [ SampleCustomEventConstantsSwift.awesomenessKey: nativeAd?.degreeOfAwesomeness ?? "" ] } var adChoicesView: UIView? var mediaView: UIView? { return nativeAd?.mediaView }
Objective-C
/// Used to store the ad's images. In order to implement the /// GADMediationNativeAd protocol, we use this class to return the images /// property. NSArray<GADNativeAdImage *> *_images; /// Used to store the ad's icon. In order to implement the GADMediationNativeAd /// protocol, we use this class to return the icon property. GADNativeAdImage *_icon; /// Used to store the ad's ad choices view. In order to implement the /// GADMediationNativeAd protocol, we use this class to return the adChoicesView /// property. UIView *_adChoicesView; - (nullable NSString *)headline { return _nativeAd.headline; } - (nullable NSArray<GADNativeAdImage *> *)images { return _images; } - (nullable NSString *)body { return _nativeAd.body; } - (nullable GADNativeAdImage *)icon { return _icon; } - (nullable NSString *)callToAction { return _nativeAd.callToAction; } - (nullable NSDecimalNumber *)starRating { return _nativeAd.starRating; } - (nullable NSString *)store { return _nativeAd.store; } - (nullable NSString *)price { return _nativeAd.price; } - (nullable NSString *)advertiser { return _nativeAd.advertiser; } - (nullable NSDictionary<NSString *, id> *)extraAssets { return @{SampleCustomEventExtraKeyAwesomeness : _nativeAd.degreeOfAwesomeness}; } - (nullable UIView *)adChoicesView { return _adChoicesView; } - (nullable UIView *)mediaView { return _nativeAd.mediaView; } - (BOOL)hasVideoContent { return self.mediaView != nil; }
เครือข่ายที่เป็นสื่อกลางบางเครือข่ายสามารถให้เนื้อหาเพิ่มเติมนอกเหนือจากที่ SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google กำหนดไว้ โปรโตคอล GADMediationNativeAd
มีเมธอดชื่อ extraAssets
ซึ่ง SDK โฆษณาบนอุปกรณ์เคลื่อนที่ของ Google ใช้ในการดึงเนื้อหา "เพิ่มเติม" เหล่านี้จากผู้แมปของคุณ
จับคู่ชิ้นงานรูปภาพ
การแมปชิ้นงานรูปภาพมีความซับซ้อนกว่าการแมปประเภทข้อมูลที่ง่ายกว่า เช่น NSString
หรือ double
ระบบอาจดาวน์โหลดรูปภาพโดยอัตโนมัติหรือแสดงผลเป็นค่า URL ความหนาแน่นของพิกเซลอาจแตกต่างกันไปด้วย
SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google มีคลาส GADNativeAdImage
เพื่อช่วยคุณจัดการรายละเอียดเหล่านี้ ควรส่งข้อมูลชิ้นงานรูปภาพ (ไม่ว่าจะเป็นออบเจ็กต์ UIImage
จริงหรือค่า NSURL
เท่านั้น) ไปยัง SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google โดยใช้คลาสนี้
ต่อไปนี้คือวิธีที่คลาสผู้ทำแผนที่จัดการกับการสร้าง GADNativeAdImage
เพื่อเก็บรูปภาพไอคอน
Swift
if let image = nativeAd.image { images = [GADNativeAdImage(image: image)] } else { let imageUrl = URL(fileURLWithPath: nativeAd.imageURL) images = [GADNativeAdImage(url: imageUrl, scale: nativeAd.imageScale)] }
Objective-C
if (nativeAd.image) { _images = @[ [[GADNativeAdImage alloc] initWithImage:nativeAd.image] ]; } else { NSURL *imageURL = [[NSURL alloc] initFileURLWithPath:nativeAd.imageURL]; _images = @[ [[GADNativeAdImage alloc] initWithURL:imageURL scale:nativeAd.imageScale] ]; }
เหตุการณ์การแสดงผลและการคลิก
ทั้ง SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google และ SDK ที่ใช้สื่อกลางจำเป็นต้องทราบเมื่อมีการแสดงผลหรือการคลิก แต่มี SDK เพียง 1 รายการที่ต้องติดตามเหตุการณ์เหล่านี้ คุณสามารถใช้เหตุการณ์ที่กำหนดเองได้ 2 วิธี ขึ้นอยู่กับว่า SDK ที่ใช้สื่อกลางรองรับการติดตามการแสดงผลและการคลิกด้วยตัวเองหรือไม่
ติดตามคลิกและการแสดงผลด้วย Google Mobile Ads SDK
หาก SDK ที่ใช้สื่อกลางไม่ได้แสดงผลและติดตามการคลิกของตนเอง แต่ให้วิธีการบันทึกคลิกและการแสดงผล SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google จะติดตามเหตุการณ์เหล่านี้และแจ้งอะแดปเตอร์ได้
GADMediationNativeAd
protocol ประกอบด้วย 2 วิธี ดังนี้
didRecordImpression:
และ didRecordClickOnAssetWithName:view:viewController:
เหตุการณ์ที่กำหนดเองสามารถใช้เพื่อเรียกเมธอดที่เกี่ยวข้องในออบเจ็กต์โฆษณาเนทีฟที่ใช้สื่อกลางได้
Swift
func didRecordImpression() { nativeAd?.recordImpression() } func didRecordClickOnAsset( withName assetName: GADUnifiedNativeAssetIdentifier, view: UIView, wController: UIViewController ) { nativeAd?.handleClick(on: view) }
Objective-C
- (void)didRecordImpression { if (self.nativeAd) { [self.nativeAd recordImpression]; } } - (void)didRecordClickOnAssetWithName:(GADUnifiedNativeAssetIdentifier)assetName view:(UIView *)view viewController:(UIViewController *)viewController { if (self.nativeAd) { [self.nativeAd handleClickOnView:view]; } }
เนื่องจากคลาสที่ใช้ GADMediationNativeAd
protocolโปรโตคอลมีการอ้างอิงไปยังออบเจ็กต์โฆษณาเนทีฟของ Sample SDK จึงสามารถเรียกเมธอดที่เหมาะสมบนออบเจ็กต์นั้นเพื่อรายงานการคลิกหรือการแสดงผล โปรดทราบว่าเมธอดdidRecordClickOnAssetWithName:view:viewController:
จะใช้พารามิเตอร์เดียว นั่นคือ ออบเจ็กต์ View
ที่สอดคล้องกับชิ้นงานโฆษณาเนทีฟที่ได้รับการคลิก
ติดตามการคลิกและการแสดงผลด้วย SDK ที่ใช้สื่อกลาง
SDK ที่ใช้สื่อกลางบางรายการอาจต้องการติดตามการคลิกและการแสดงผลด้วยตนเอง ในกรณีดังกล่าว คุณควรใช้เมธอด handlesUserClicks
และ handlesUserImpressions
ดังที่แสดงในข้อมูลโค้ดด้านล่าง การส่งคืน YES
หมายความว่าคุณระบุว่าเหตุการณ์ที่กำหนดเองเป็นผู้รับผิดชอบในการติดตามเหตุการณ์เหล่านี้ และจะแจ้ง SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google เมื่อเหตุการณ์เหล่านี้เกิดขึ้น
เหตุการณ์ที่กำหนดเองซึ่งลบล้างการติดตามการคลิกและการแสดงผลสามารถใช้ข้อความ didRenderInView:
เพื่อส่งมุมมองของโฆษณาเนทีฟไปยังออบเจ็กต์โฆษณาเนทีฟของ SDK ที่ใช้สื่อกลางเพื่อให้ SDK ที่ใช้สื่อกลางทำการติดตามจริงได้ ตัวอย่าง SDK จากโปรเจ็กต์ตัวอย่างเหตุการณ์ที่กำหนดเองของเรา (ซึ่งใช้ข้อมูลโค้ดของคู่มือนี้) ไม่ได้ใช้วิธีนี้ แต่หากใช้ โค้ดเหตุการณ์ที่กำหนดเองจะเรียกเมธอด setNativeAdView:view:
ดังที่แสดงในข้อมูลโค้ดด้านล่าง
Swift
func handlesUserClicks() -> Bool { return true } func handlesUserImpressions() -> Bool { return true } func didRender( in view: UIView, clickableAssetViews: [GADNativeAssetIdentifier: UIView], nonclickableAssetViews: [GADNativeAssetIdentifier: UIView], viewController: UIViewController ) { // This method is called when the native ad view is rendered. Here you would pass the UIView // back to the mediated network's SDK. self.nativeAd?.setNativeAdView(view) }
Objective-C
- (BOOL)handlesUserClicks { return YES; } - (BOOL)handlesUserImpressions { return YES; } - (void)didRenderInView:(UIView *)view clickableAssetViews:(NSDictionary<GADNativeAssetIdentifier, UIView *> *) clickableAssetViews nonclickableAssetViews:(NSDictionary<GADNativeAssetIdentifier, UIView *> *) nonclickableAssetViews viewController:(UIViewController *)viewController { // This method is called when the native ad view is rendered. Here you would // pass the UIView back to the mediated network's SDK. Playing video using // SampleNativeAd's playVideo method [_nativeAd setNativeAdView:view]; }
ส่งต่อเหตุการณ์สื่อกลางไปยัง SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google
เมื่อคุณเรียกใช้ GADMediationNativeLoadCompletionHandler
ด้วยโฆษณาที่โหลดแล้ว อะแดปเตอร์จะใช้ออบเจ็กต์การมอบสิทธิ์ GADMediationNativeAdEventDelegate
ที่ส่งคืนเพื่อส่งต่อเหตุการณ์การนำเสนอจาก SDK ของบุคคลที่สามไปยัง SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google ได้
เหตุการณ์ที่กำหนดเองของคุณจะต้องส่งต่อโค้ดเรียกกลับเหล่านี้ให้มากที่สุดเท่าที่จะเป็นไปได้ เพื่อให้แอปได้รับเหตุการณ์ที่เทียบเท่าเหล่านี้จาก SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google ต่อไปนี้คือตัวอย่างของการใช้โค้ดเรียกกลับ
เท่านี้ก็ติดตั้งใช้งานเหตุการณ์ที่กำหนดเองสำหรับโฆษณาเนทีฟแล้ว ดูตัวอย่างแบบเต็มได้ใน GitHub