โฆษณาเนทีฟคือชิ้นงานโฆษณาที่แสดงต่อผู้ใช้ผ่านคอมโพเนนต์ UI ที่ เป็นของแพลตฟอร์มนั้นๆ โดยจะแสดงโดยใช้คลาสเดียวกันกับที่คุณใช้ในสตอรี่บอร์ดอยู่แล้ว และสามารถจัดรูปแบบให้ตรงกับการออกแบบภาพของแอปได้
เมื่อโฆษณาเนทีฟโหลด แอปจะได้รับออบเจ็กต์โฆษณาที่มีชิ้นงานของโฆษณา และแอป (ไม่ใช่ Google Mobile Ads SDK) จะเป็นผู้รับผิดชอบ ในการแสดงโฆษณา
โดยทั่วไปแล้ว การใช้โฆษณาเนทีฟให้ประสบความสำเร็จมี 2 ส่วน ได้แก่ การโหลดโฆษณาโดยใช้ SDK แล้วแสดงเนื้อหาโฆษณาในแอป
หน้านี้แสดงวิธีใช้ SDK เพื่อโหลดโฆษณาเนทีฟ
ข้อกำหนดเบื้องต้น
- ทำตามคู่มือเริ่มต้นใช้งาน
ทดสอบด้วยโฆษณาทดสอบเสมอ
เมื่อสร้างและทดสอบแอป โปรดใช้โฆษณาทดสอบแทน โฆษณาจริงที่ใช้งานจริง
วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบเฉพาะสำหรับ โฆษณาเนทีฟใน iOS
/21775744923/example/native
ซึ่งได้รับการกำหนดค่าเป็นพิเศษให้แสดงโฆษณาทดสอบสำหรับทุกคำขอ และคุณสามารถ ใช้ในแอปของคุณเองขณะเขียนโค้ด ทดสอบ และแก้ไขข้อบกพร่อง เพียงตรวจสอบว่าคุณได้ แทนที่ด้วยรหัสหน่วยโฆษณาของคุณเองก่อนเผยแพร่แอป
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีทำงานของโฆษณาทดสอบของ Google Mobile Ads SDK ได้ที่ โฆษณาทดสอบ
โหลดโฆษณา
โฆษณาเนทีฟจะโหลดด้วยคลาส
GADAdLoader
ซึ่งจะส่งข้อความไปยังผู้รับมอบสิทธิ์ตามโปรโตคอล
GADAdLoaderDelegate
นอกเหนือจากรูปแบบโฆษณาเนทีฟที่ระบบกำหนดแล้ว คุณยังสร้างรูปแบบโฆษณาเนทีฟที่กำหนดเอง
ซึ่งใช้กับโฆษณาเนทีฟที่ขายโดยตรงได้ด้วย รูปแบบโฆษณาเนทีฟที่กำหนดเองช่วยให้คุณ
ส่ง Structured Data ที่กำหนดเองไปยังแอปได้ โฆษณาเหล่านี้แสดงโดยคลาส GADCustomNativeAd
เริ่มต้น AdLoader
คุณต้องเริ่มต้นใช้งาน AdLoader ก่อนจึงจะโหลดโฆษณาได้
โค้ดต่อไปนี้แสดงวิธีเริ่มต้น GADAdLoader
Swift
adLoader = AdLoader(adUnitID: "/21775744923/example/native",
// The UIViewController parameter is optional.
rootViewController: rootViewController,
adTypes: [ .native ],
options: [ ... ad loader options objects ... ])
adLoader.delegate = self
Objective-C
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"/21775744923/example/native"
// The UIViewController parameter is nullable.
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;
คุณจะต้องมีรหัสหน่วยโฆษณา (คุณใช้รหัสทดสอบได้) ค่าคงที่ที่จะส่งในอาร์เรย์
adTypes
เพื่อระบุรูปแบบโฆษณาเนทีฟที่ต้องการขอ และตัวเลือก
ที่ต้องการตั้งค่าในพารามิเตอร์ options
ดูรายการค่าที่เป็นไปได้สำหรับพารามิเตอร์ options
ได้ในหน้าการตั้งค่าตัวเลือกโฆษณาเนทีฟ
อาร์เรย์ adTypes
ควรมีค่าคงที่ต่อไปนี้อย่างน้อย 1 รายการ
ใช้ตัวแทนการโหลดโฆษณา
ผู้มอบสิทธิ์ของ AdLoader ต้องใช้โปรโตคอลที่เฉพาะเจาะจงกับประเภทโฆษณาของคุณ
สำหรับโฆษณาเนทีฟ โปรโตคอล GADNativeAdLoaderDelegate
จะมีข้อความ
ที่ส่งไปยังผู้รับมอบสิทธิ์เมื่อโฆษณาเนทีฟโหลดแล้ว
Swift
public func adLoader(_ adLoader: AdLoader,
didReceive nativeAd: NativeAd)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveNativeAd:(GADNativeAd *)nativeAd;
โปรโตคอล GADCustomNativeAdLoaderDelegate
มีข้อความที่ส่งไปยังผู้รับมอบสิทธิ์เมื่อโฆษณาเทมเพลตที่กำหนดเองโหลดแล้ว
Swift
func adLoader(_ adLoader: AdLoader,
Receive customNativeAd: CustomNativeAd)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveCustomNativeAd:(GADCustomNativeAd *) customNativeAd;
ส่งคำขอแสดงโฆษณา
เมื่อเริ่มต้น GADAdLoader
แล้ว ให้เรียกใช้เมธอด loadRequest:
เพื่อขอโฆษณา
Swift
adLoader.load(AdManagerRequest())
Objective-C
[self.adLoader loadRequest:[GAMRequest request]];
เมธอด
loadRequest:
ใน
GADAdLoader
ยอมรับออบเจ็กต์
GAMRequest
เดียวกันกับแบนเนอร์และโฆษณาคั่น คุณสามารถใช้ออบเจ็กต์คำขอเพื่อเพิ่ม
ข้อมูลการกำหนดเป้าหมายได้เช่นเดียวกับ
โฆษณารูปแบบอื่นๆ
โหลดโฆษณาหลายรายการ (ไม่บังคับ)
หากต้องการโหลดโฆษณาหลายรายการในคำขอเดียว ให้ตั้งค่าออบเจ็กต์
GADMultipleAdsAdLoaderOptions
เมื่อเริ่มต้น GADAdLoader
Swift
let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = AdLoader(adUnitID: "/21775744923/example/native",
// The UIViewController parameter is optional.
rootViewController: self,
adTypes: [ .native ],
options: [ multipleAdOptions ])
Objective-C
GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
[[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"/21775744923/example/native"
// The UIViewController parameter is nullable.
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ multipleAdsOptions ]];
จำนวนโฆษณาต่อคำขอจะจำกัดไว้ที่ 5 รายการ และไม่มีการรับประกันว่า SDK จะแสดงโฆษณาตามจำนวนที่ขออย่างแน่นอน
โฆษณา Google ที่แสดงจะแตกต่างกันทั้งหมด แม้ว่าโฆษณาจาก พื้นที่โฆษณาที่สงวนไว้หรือผู้ซื้อบุคคลที่สามจะไม่รับประกันว่าจะไม่ซ้ำกัน
อย่าใช้คลาส GADMultipleAdsAdLoaderOptions
หากคุณใช้สื่อกลาง
เนื่องจากคำขอโฆษณาเนทีฟหลายรายการใช้ไม่ได้กับรหัสหน่วยโฆษณาที่
กำหนดค่าไว้สำหรับสื่อกลาง
การพิจารณาว่าการโหลดเสร็จสิ้นเมื่อใด
หลังจากที่แอปเรียกใช้ loadRequest:
แล้ว แอปจะรับผลลัพธ์ของคำขอได้โดยใช้การเรียกไปยัง
adLoader:didFailToReceiveAdWithError:
ในGADAdLoaderDelegate
adLoader:didReceiveNativeAd:
ในGADNativeAdLoaderDelegate
คำขอโฆษณารายการเดียวจะทำให้เกิดการเรียกใช้เมธอดใดเมธอดหนึ่งดังกล่าว 1 ครั้ง
คำขอโฆษณาหลายรายการจะส่งผลให้มีการเรียกกลับไปยังเมธอดข้างต้นอย่างน้อย 1 ครั้ง แต่ไม่เกินจำนวนโฆษณาสูงสุดที่ขอ
นอกจากนี้ GADAdLoaderDelegate
ยังมีadLoaderDidFinishLoading
การโทรกลับ เมธอดผู้รับมอบสิทธิ์นี้บ่งชี้ว่า AdLoader โหลดโฆษณาเสร็จแล้ว และจะไม่มีการรายงานโฆษณาหรือข้อผิดพลาดอื่นๆ สำหรับคำขอ ต่อไปนี้คือ
ตัวอย่างวิธีใช้เมื่อโหลดโฆษณาเนทีฟหลายรายการพร้อมกัน
Swift
class ViewController: UIViewController, NativeAdLoaderDelegate {
var adLoader: GADAdLoader!
override func viewDidLoad() {
super.viewDidLoad()
let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = AdLoader(adUnitID: "/21775744923/example/native",
// The UIViewController parameter is optional.
rootViewController: rootViewController,
adTypes: [ .native ],
options: [ multipleAdOptions ])
adLoader.delegate = self
adLoader.load(Request())
}
func adLoader(_ adLoader: AdLoader,
didReceive nativeAd: NativeAd) {
// A native ad has loaded, and can be displayed.
}
func adLoaderDidFinishLoading(_ adLoader: AdLoader) {
// The adLoader has finished loading ads, and a new request can be sent.
}
}
Objective-C
@interface ViewController () <GADNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
[[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"/21775744923/example/native"
// The UIViewController parameter is nullable.
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ multipleAdsOptions ]];
self.adLoader.delegate = self;
[self.adLoader loadRequest:[GADRequest request]];
}
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveNativeAd:(GADNativeAd *)nativeAd {
// A native ad has loaded, and can be displayed.
}
- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
// The adLoader has finished loading ads, and a new request can be sent.
}
@end
การจัดการคำขอที่ไม่สำเร็จ
โปรโตคอลข้างต้นขยายโปรโตคอล GADAdLoaderDelegate
ซึ่งกำหนดข้อความที่ส่งเมื่อโหลดโฆษณาไม่สำเร็จ
Swift
public func adLoader(_ adLoader: AdLoader,
didFailToReceiveAdWithError error: NSError)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader
didFailToReceiveAdWithError:(NSError *)error;
รับการแจ้งเตือนเกี่ยวกับเหตุการณ์โฆษณาเนทีฟ
หากต้องการรับการแจ้งเตือนเกี่ยวกับเหตุการณ์ที่เกี่ยวข้องกับการโต้ตอบโฆษณาเนทีฟ ให้ตั้งค่าพร็อพเพอร์ตี้ delegate ของโฆษณาเนทีฟ
Swift
nativeAd.delegate = self
Objective-C
nativeAd.delegate = self;
จากนั้นใช้
GADNativeAdDelegate
เพื่อรับการเรียกที่ได้รับมอบสิทธิ์ต่อไปนี้
Swift
func nativeAdDidRecordImpression(_ nativeAd: NativeAd) {
// The native ad was shown.
}
func nativeAdDidRecordClick(_ nativeAd: NativeAd) {
// The native ad was clicked on.
}
func nativeAdWillPresentScreen(_ nativeAd: NativeAd) {
// The native ad will present a full screen view.
}
func nativeAdWillDismissScreen(_ nativeAd: NativeAd) {
// The native ad will dismiss a full screen view.
}
func nativeAdDidDismissScreen(_ nativeAd: NativeAd) {
// The native ad did dismiss a full screen view.
}
func nativeAdWillLeaveApplication(_ nativeAd: NativeAd) {
// The native ad will cause the app to become inactive and
// open a new app.
}
Objective-C
- (void)nativeAdDidRecordImpression:(GADNativeAd *)nativeAd {
// The native ad was shown.
}
- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
// The native ad was clicked on.
}
- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd {
// The native ad will present a full screen view.
}
- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd {
// The native ad will dismiss a full screen view.
}
- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd {
// The native ad did dismiss a full screen view.
}
- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd {
// The native ad will cause the app to become inactive and
// open a new app.
}
แนวทางปฏิบัติแนะนำ
ทำตามกฎต่อไปนี้เมื่อโหลดโฆษณา
แอปที่ใช้โฆษณาเนทีฟในรายการควรแคชรายการโฆษณาล่วงหน้า
เมื่อแคชโฆษณาล่วงหน้า ให้ล้างแคชและโหลดซ้ำหลังจากผ่านไป 1 ชั่วโมง
อย่าเรียกใช้
loadRequest:
อีกครั้งในGADAdLoader
จนกว่าคำขอก่อนหน้าจะโหลดเสร็จ ซึ่งระบุโดยadLoaderDidFinishLoading:
จำกัดการแคชโฆษณาเนทีฟให้มีเฉพาะสิ่งที่จำเป็น เช่น เมื่อแคชล่วงหน้า ให้แคชเฉพาะโฆษณาที่มองเห็นได้ทันทีบนหน้าจอ โฆษณาเนทีฟ ใช้หน่วยความจำมาก และการแคชโฆษณาเนทีฟโดยไม่ทำลายโฆษณา จะทำให้มีการใช้หน่วยความจำมากเกินไป
ทำลายโฆษณาเนทีฟเมื่อไม่ได้ใช้งานแล้ว
แสดงโฆษณา
เมื่อโหลดโฆษณาแล้ว สิ่งที่เหลืออยู่คือการแสดงโฆษณาต่อผู้ใช้ โปรดไปที่คู่มือขั้นสูงเกี่ยวกับโฆษณาเนทีฟเพื่อดูวิธี