รูปแบบโฆษณาที่กำหนดเอง
ระบบจะโหลดรูปแบบโฆษณาเนทีฟที่กำหนดเองโดยใช้ออบเจ็กต์ GADAdLoader
รายการ เช่นเดียวกับรูปแบบที่ระบบกำหนด การรวมค่าคงที่ GADAdLoaderAdTypeCustomNative
ในอาร์เรย์ adTypes
เมื่อเริ่มต้น GADAdLoader
จะกำหนดค่าให้ขอรูปแบบโฆษณาเนทีฟที่กำหนดเองเมื่อโหลดโฆษณา
GADCustomNativeAdLoaderDelegate
โปรโตคอลสำหรับการโหลดรูปแบบที่กำหนดเองมี 2 วิธี GADAdLoader
จะใช้รหัสรูปแบบแรกเพื่อดูว่าควรขอรหัสรูปแบบใด
Swift
public func customNativeAdFormatIDs(for adLoader: GADAdLoader) -> [Any]
Objective-C
- (NSArray *)customNativeAdFormatIDsForAdLoader:(GADAdLoader *)adLoader;
รูปแบบโฆษณาเนทีฟที่กำหนดเองทุกรูปแบบจะมีรหัสรูปแบบที่สอดคล้องกันซึ่งใช้ระบุตัวตน เมื่อมีการเรียกเมธอดนี้ แอปของคุณควรแสดงผลอาร์เรย์ที่มีรหัสรูปแบบของโฆษณาที่เตรียมจะแสดง
ข้อความที่ 2 จะส่งเมื่อโหลดโฆษณาเนทีฟที่กำหนดเองแล้ว ซึ่งคล้ายกับรูปแบบที่ระบบกำหนด ดังนี้
Swift
public func adLoader(_ adLoader: GADAdLoader, didReceive customNativeAd: GADCustomNativeAd)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader didReceiveCustomNativeAd:(GADCustomNativeAd *)customNativeAd;
รหัสรูปแบบ
รหัสรูปแบบที่ใช้ในการอ้างถึงรูปแบบโฆษณาเนทีฟที่กำหนดเองแบบไม่ซ้ำกันได้ใน Ad Manager UI ในส่วนโฆษณาเนทีฟภายในเมนูแบบเลื่อนลงการแสดงโฆษณา
รหัสรูปแบบของโฆษณาเนทีฟที่กำหนดเองแต่ละรายการจะปรากฏข้างชื่อโฆษณา การคลิกชื่อใดชื่อหนึ่งจะนำคุณไปยังหน้าจอรายละเอียดที่แสดงข้อมูลเกี่ยวกับช่องของรูปแบบ ดังนี้
คุณจะเพิ่ม แก้ไข และนำช่องแต่ละช่องออกได้จากที่นี่ จดชื่อของแต่ละเนื้อหา ชื่อเป็นคีย์ที่ใช้รับข้อมูลของเนื้อหาแต่ละรายการ เมื่อแสดงรูปแบบโฆษณาเนทีฟที่กำหนดเองของคุณ
การแสดงรูปแบบโฆษณาเนทีฟที่กำหนดเอง
รูปแบบโฆษณาเนทีฟที่กำหนดเองแตกต่างจากรูปแบบที่ระบบกำหนดตรงที่ผู้เผยแพร่โฆษณาจะมีอำนาจในการกำหนดรายการเนื้อหาที่ประกอบขึ้นเป็นโฆษณาของตนเอง ด้วยเหตุนี้ ขั้นตอนการแสดงโฆษณาเนทีฟที่กำหนดเองจึงแตกต่างจากรูปแบบที่ระบบกำหนดดังนี้
- เนื่องจาก
GADCustomNativeAd
มีไว้เพื่อจัดการรูปแบบโฆษณาเนทีฟที่กำหนดเองที่คุณสร้างขึ้น จึงไม่มีผู้เข้าถึงชิ้นงานที่มีชื่อ แต่จะมีเมธอดอย่างเช่นimageForKey:
และstringForKey:
ที่ใช้ชื่อของช่องเป็นอาร์กิวเมนต์ - ไม่มีคลาสการดูโฆษณาเฉพาะอย่าง
GADNativeAdView
เพื่อใช้กับGADCustomNativeAd
คุณสามารถใช้มุมมองใดก็ได้ที่เหมาะกับประสบการณ์ของผู้ใช้ - เนื่องจากไม่มีคลาสการดูโฆษณาเฉพาะ คุณจึงไม่จำเป็นต้องบันทึกมุมมองใดๆ ที่คุณใช้เพื่อแสดงเนื้อหาของโฆษณา
ต่อไปนี้เป็นตัวอย่างมุมมองโฆษณาที่สามารถแสดงโฆษณาเนทีฟที่กำหนดเองแบบง่าย
MySimpleNativeAdView.h
Swift
import UIKit import GoogleMobileAds /// Custom native ad view class with format ID 10063170. class MySimpleNativeAdView: UIView { /// Weak references to this ad's asset views. @IBOutlet weak var headlineView: UILabel! @IBOutlet weak var mainImageView: UIImageView! @IBOutlet weak var captionView: UILabel! ... /// Populates the ad view with the custom native ad object. func populateWithCustomNativeAd(_ customNativeAd: GADCustomNativeAd) { ... } }
Objective-C
@import UIKit; @import GoogleMobileAds; /// View representing a custom native ad format with format ID 10063170. @interface MySimpleNativeAdView : UIView // Weak references to this ad's asset views. @property(weak, nonatomic) IBOutlet UILabel *headlineView; @property(weak, nonatomic) IBOutlet UIImageView *mainImageView; @property(weak, nonatomic) IBOutlet UILabel *captionView; /// Populates the ad view with the custom native ad object. - (void)populateWithCustomNativeAd:(GADCustomNativeAd *)customNativeAd; @end
MyEasyNativeAdView.m (ตัดออก)
Swift
... func populateWithCustomNativeAd(_ customNativeAd: GADCustomNativeAd) { self.customNativeAd = customNativeAd // Populate the custom native ad assets. headlineView.text = self.customNativeAd.stringForKey("Headline") mainImageView.image = self.customNativeAd.imageForKey("MainImage")?.image captionView.text = self.customNativeAd.stringForKey("Caption") } ...
Objective-C
... - (void)populateWithCustomNativeAd:(GADCustomNativeAd *)customNativeAd { self.customNativeAd = customNativeAd; // Populate the custom native ad assets. self.headlineView.text = [customNativeAd stringForKey:@"Headline"]; self.mainImageView.image = [customNativeAd imageForKey:@"MainImage"].image; self.captionView.text = [customNativeAd stringForKey:@"Caption"]; } ...
วิดีโอเนทีฟสำหรับรูปแบบโฆษณาเนทีฟที่กำหนดเอง
เมื่อสร้างรูปแบบที่กำหนดเอง คุณจะมีตัวเลือกในการทำให้รูปแบบดังกล่าวมีสิทธิ์แสดงในวิดีโอ
เมื่อใช้งานแอป คุณสามารถใช้พร็อพเพอร์ตี้ GADCustomNativeAd.mediaView
เพื่อดูมุมมองของวิดีโอ จากนั้นให้เพิ่มมุมมองนี้ลงในลำดับชั้นการแสดงผล หากโฆษณาไม่มีเนื้อหาวิดีโอ ให้วางแผนอื่นเพื่อแสดงโฆษณาโดยไม่มีวิดีโอ
ตัวอย่างด้านล่างจะตรวจสอบว่าโฆษณามีเนื้อหาวิดีโอหรือไม่ และแสดงรูปภาพแทนที่ในกรณีที่วิดีโอไม่พร้อมใช้งาน
Swift
... /// Populates the ad view with the custom native ad object. func populate(withCustomNativeAd customNativeAd: GADCustomNativeAd) { if customNativeAd.videoController.hasVideoContent(), let mediaView = customNativeAd.mediaView { updateMainView(mediaView) } else { // Assumes your native format has an image asset with the name MainImage. let image: UIImage? = customNativeAd.image(forKey: "MainImage")?.image updateMainView(UIImageView(image: image)) } } private func updateMainView(_ mainView:UIView) { // Assumes you have a placeholder view for your media content. // Remove all the placeholder's subviews. for subview: UIView in mainPlaceholder.subviews { subview.removeFromSuperview() } mainPlaceholder.addSubview(mainView) // Size the media view to fill our container size. mainView.translatesAutoresizingMaskIntoConstraints = false let viewDictionary: [AnyHashable: Any] = ["mainView":mainView] mainPlaceholder.addConstraints(NSLayoutConstraint.constraints( withVisualFormat: "H:|[mainView]|", options: [], metrics: nil, views: viewDictionary as? [String : Any] ?? [String : Any]())) mainPlaceholder.addConstraints(NSLayoutConstraint.constraints( withVisualFormat: "V:|[mainView]|", options: [], metrics: nil, views: viewDictionary as? [String : Any] ?? [String : Any]())) } ...
Objective-C
... - (void)populateWithCustomNativeAd:(GADCustomNativeAd *)ad { UIView *mainView = nil; if (ad.videoController.hasVideoContent) { mainView = ad.mediaView; } else { // Assumes your native format has an image asset with the name MainImage. UIImage *image = [ad imageForKey:@"MainImage"].image; mainView = [[UIImageView alloc] initWithImage:image]; } // Assumes you have a placeholder view for your media content. for (UIView *subview in self.mainPlaceholder.subviews) { [subview removeFromSuperview]; } [self.mainPlaceholder addSubview:mainView]; // Size the main view to fill our container size. [mainView setTranslatesAutoresizingMaskIntoConstraints:NO]; NSDictionary *viewDictionary = NSDictionaryOfVariableBindings(mainView); [self.mainPlaceholder addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[mainView]|" options:0 metrics:nil views:viewDictionary]]; [self.mainPlaceholder addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[mainView]|" options:0 metrics:nil views:viewDictionary]]; } ...
ไปที่ GADVideoController เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีปรับแต่งประสบการณ์การใช้งานวิดีโอของโฆษณาเนทีฟที่กำหนดเอง
ดาวน์โหลดตัวอย่างการแสดงผลที่กำหนดเองของ Ad Manager เพื่อดูตัวอย่างการทำงานของวิดีโอเนทีฟจริง
การจัดการการคลิกและการแสดงผลของโฆษณาเนทีฟที่กำหนดเอง
สำหรับรูปแบบโฆษณาเนทีฟที่กำหนดเอง แอปของคุณจะมีหน้าที่บันทึกการแสดงผล และการรายงานเหตุการณ์การคลิกไปยัง SDK
กำลังบันทึกการแสดงผล
หากต้องการบันทึกการแสดงผลสำหรับโฆษณาเนทีฟที่กำหนดเอง เพียงเรียกเมธอด recordImpression
ใน GADCustomNativeAd
ที่เกี่ยวข้องดังนี้
Swift
myCustomNativeAd.recordImpression()
Objective-C
[myCustomNativeAd recordImpression];
SDK จะป้องกันไม่ให้ระบบบันทึกการแสดงผลที่ซ้ำกันสำหรับคำขอเดียว หากแอปเรียกใช้เมธอดนี้หลายครั้งสำหรับโฆษณาเดียวกันโดยไม่ได้ตั้งใจ
การรายงานจำนวนคลิก
หากต้องการรายงานไปยัง SDK ว่ามีการคลิกในเนื้อหา ให้เรียกเมธอด performClickOnAssetWithKey:
ใน GADCustomNativeAd
ที่เกี่ยวข้อง แล้วส่งผ่านชื่อของเนื้อหาที่มีการคลิก
ตัวอย่างเช่น หากคุณมีเนื้อหาในรูปแบบที่กำหนดเองชื่อ "MainImage" และต้องการรายงานการคลิกบนข้อมูลพร็อพเพอร์ตี้ที่เกี่ยวข้องกับเนื้อหานั้น โค้ดของคุณจะมีลักษณะดังนี้
Swift
myCustomNativeAd.performClickOnAsset(withKey: "MainImage")
Objective-C
[myCustomNativeAd performClickOnAssetWithKey:@"MainImage"];
โปรดทราบว่าคุณไม่จำเป็นต้องเรียกใช้เมธอดนี้สำหรับทุกๆ มุมมองเนื้อหาที่เชื่อมโยงกับโฆษณาของคุณ เช่น หากคุณมีเนื้อหาอื่นที่เรียกว่า "คำบรรยายแทนเสียง" ซึ่งเป็นเนื้อหาที่มีการแสดง
แต่ผู้ใช้ไม่คลิกหรือแตะเนื้อหา แอปก็จะไม่ต้องเรียกใช้ performClickOnAssetWithKey:
สำหรับข้อมูลพร็อพเพอร์ตี้นั้น
การตอบสนองต่อการดำเนินการคลิกที่กำหนดเอง
GADCustomNativeAd
มีพร็อพเพอร์ตี้ customClickHandler
ซึ่งเป็นประเภท GADNativeAdCustomClickHandler
Swift
typealias GADNativeAdCustomClickHandler = (assetID: String) -> Void
Objective-C
typedef void (^GADNativeAdCustomClickHandler)(NSString *assetID);
นี่คือบล็อก (Objective-C) / การปิด (Swift) ที่ยอมรับ assetID
เป็นพารามิเตอร์อินพุต ซึ่งจะระบุเนื้อหาที่มีการคลิก
เมื่อมีการคลิกบนโฆษณาเนทีฟที่กำหนดเอง SDK จะมีการตอบสนองที่เป็นไปได้ 3 แบบ โดยจะพยายามตามลำดับต่อไปนี้
- เรียกใช้บล็อก
customClickHandler
ใน Objective-C หรือปิดใน Swift หากมีการตั้งค่าไว้ - วนซ้ำ URL ของ Deep Link ของโฆษณา แล้วเปิดแอปแรกที่จะพบแอปที่ตรงกัน
- เปิดเบราว์เซอร์และไปที่ URL ปลายทางแบบเดิมของโฆษณา
พร็อพเพอร์ตี้ customClickHandler
ยอมรับการบล็อกใน Objective-C และการปิดใน Swift หากคุณตั้งค่าการบล็อกหรือการปิด SDK จะเรียกใช้ SDK ดังกล่าวและไม่ดําเนินการใดๆ เพิ่มเติม แต่หากตั้งค่าเป็น nil SDK จะกลับไปใช้ URL Deep Link และ/หรือ URL ปลายทางที่ลงทะเบียนไว้กับโฆษณา
ตัวแฮนเดิลคลิกที่กำหนดเองช่วยให้แอปเลือกการดำเนินการที่ดีที่สุดเพื่อตอบสนองต่อการคลิกได้ ไม่ว่าจะเป็นการอัปเดต UI, การนำเสนอตัวควบคุมมุมมองอื่น หรือแค่การบันทึกการคลิก นี่คือตัวอย่างที่แสดง การแจ้งเตือน
Swift
myCustomNativeAd.customClickHandler = { assetID in if assetID == "MainImage" { let alertView = UIAlertView(title: "Custom Click", message: "You just clicked on the image!", delegate: self, cancelButtonTitle: "OK") alertView.alertViewStyle = .default alertView.show() } } myCustomNativeAd.performClickOnAsset(withKey: "MainImage")
Objective-C
[self.customNativeAd setCustomClickHandler:^(NSString *assetID){ if ([assetID isEqualToString:@"MainImage"]) { [[[UIAlertView alloc] initWithTitle:@"Custom Click" message:@"You just clicked on the image!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; } }]; [self.customNativeAd performClickOnAssetWithKey:@"MainImage"];
การทดสอบโค้ดโฆษณาเนทีฟ
โฆษณาแบบขายตรง
หากต้องการทดสอบว่าโฆษณาเนทีฟแบบขายตรงเป็นอย่างไร คุณสามารถใช้ Ad Manager รหัสหน่วยโฆษณานี้
/6499/example/native
โฆษณานี้ได้รับการกำหนดค่าให้แสดงตัวอย่างโฆษณาเพื่อการติดตั้งแอปและเนื้อหา รวมถึงรูปแบบโฆษณาเนทีฟที่กำหนดเองด้วยเนื้อหาต่อไปนี้
- บรรทัดแรก (ข้อความ)
- รูปภาพหลัก (รูปภาพ)
- คำบรรยายภาพ (ข้อความ)
โฆษณาเนทีฟทดแทน
หากต้องการทดสอบลักษณะการทำงานของโฆษณาทดแทนเนทีฟ ให้ใช้หน่วยโฆษณาAd Manager นี้
/6499/example/native-backfill
โดยจะแสดงตัวอย่างโฆษณาเพื่อการติดตั้งแอปและโฆษณาแบบคอนเทนต์ ที่มีการวางซ้อน "ตัวเลือกโฆษณาอื่นๆ"
อย่าลืมอัปเดตโค้ดให้อ้างอิงถึงหน่วยโฆษณาและรหัสรูปแบบจริงของคุณก่อนนำไปใช้จริง