Quảng cáo gốc dạng video
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Chọn nền tảng:
Android
iOS
Điều kiện tiên quyết
GADMediaContent
Quảng cáo gốc cung cấp quyền truy cập vào một lớp GADMediaContent
được dùng để lấy thông tin về nội dung nghe nhìn. Nội dung này có thể là video hoặc hình ảnh. Nội dung này cũng được dùng để kiểm soát hoạt động phát quảng cáo dạng video và nghe các sự kiện phát. Bạn có thể truy cập vào đối tượng nội dung nghe nhìn thông qua thuộc tính .mediaContent
trên quảng cáo.
Đối tượng GADMediaContent
chứa các thông tin, chẳng hạn như tỷ lệ khung hình và thời lượng của video. Đoạn mã dưới đây cho biết cách lấy tỷ lệ khung hình và thời lượng của quảng cáo gốc.
Swift
if myNativeAd.mediaContent.hasVideoContent {
let mediaAspectRatio = CGFloat(myNativeAd.mediaContent.aspectRatio)
let duration = myNativeAd.mediaContent.duration
}
Objective-C
if(myNativeAd.mediaContent.hasVideoContent) {
CGFloat mediaAspectRatio = myNativeAd.mediaContent.aspectRatio;
NSTimeInterval duration = myNativeAd.mediaContent.duration;
}
GADVideoController
Đối tượng GADMediaContent
tham chiếu đến đối tượng GADVideoController
. Đối tượng GADVideoController
cho phép nhà xuất bản phản hồi các sự kiện video.
Bạn cũng có thể kiểm soát những quảng cáo được phân phát thông qua mục riêng bằng GADVideoController
.
Bạn có thể lấy đối tượng GADVideoController
này bằng cách gọi GADMediaContent.videoController
.
Lệnh gọi lại cho các sự kiện video
Để xử lý các sự kiện video cụ thể, bạn cần viết một lớp triển khai giao thức GADVideoControllerDelegate
. Các phương thức của giao thức đều là không bắt buộc.
Ví dụ sau đây minh hoạ cách triển khai giao thức uỷ quyền:
Swift
class ViewController: NativeAdLoaderDelegate, VideoControllerDelegate {
private var adLoader: AdLoader?
func viewDidLoad() {
super.viewDidLoad()
let videoOptions = VideoOptions()
videoOptions.customControlsRequested = true
adLoader = AdLoader(
adUnitID: "ca-app-pub-3940256099942544/3986624511",
rootViewController: self,
adTypes: [.native],
options: [videoOptions])
adLoader?.delegate = self
adLoader?.load(AdManagerRequest())
}
func adLoader(
_ adLoader: AdLoader?,
didReceive nativeAd: NativeAd?
) {
// Set the videoController's delegate to be notified of video events.
nativeAd?.mediaContent.videoController.delegate = self
}
// VideoControllerDelegate methods
func videoControllerDidPlayVideo(_ videoController: VideoController) {
// Implement this method to receive a notification when the video controller
// begins playing the ad.
}
func videoControllerDidPauseVideo(_ videoController: VideoController) {
// Implement this method to receive a notification when the video controller
// pauses the ad.
}
func videoControllerDidEndVideoPlayback(_ videoController: VideoController) {
// Implement this method to receive a notification when the video controller
// stops playing the ad.
}
func videoControllerDidMuteVideo(_ videoController: VideoController) {
// Implement this method to receive a notification when the video controller
// mutes the ad.
}
func videoControllerDidUnmuteVideo(_ videoController: VideoController) {
// Implement this method to receive a notification when the video controller
// unmutes the ad.
}
}
Objective-C
@interface ViewController () <GADNativeAdLoaderDelegate,
GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GADVideoOptions *videoOptions = [[GADVideoOptions alloc] init];
videoOptions.customControlsRequested = YES;
self.adLoader =
[[GADAdLoader alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
rootViewController:self
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ videoOptions ]];
self.adLoader.delegate = self;
[self.adLoader loadRequest:[GAMRequest request]];
}
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveNativeAd:(GADNativeAd *)nativeAd {
// Set the videoController's delegate to be notified of video events.
nativeAd.mediaContent.videoController.delegate = self;
}
// GADVideoControllerDelegate methods
- (void)videoControllerDidPlayVideo:(nonnull GADVideoController *)videoController {
// Implement this method to receive a notification when the video controller
// begins playing the ad.
}
- (void)videoControllerDidPauseVideo:(nonnull GADVideoController *)videoController {
// Implement this method to receive a notification when the video controller
// pauses the ad.
}
- (void)videoControllerDidEndVideoPlayback:(nonnull GADVideoController *)videoController {
// Implement this method to receive a notification when the video controller
// stops playing the ad.
}
- (void)videoControllerDidMuteVideo:(nonnull GADVideoController *)videoController {
// Implement this method to receive a notification when the video controller
// mutes the ad.
}
- (void)videoControllerDidUnmuteVideo:(nonnull GADVideoController *)videoController {
// Implement this method to receive a notification when the video controller
// unmutes the ad.
}
@end
Bạn có thể đọc Nguyên tắc và chính sách về Quảng cáo gốc để biết thêm thông tin hướng dẫn về cách hiển thị quảng cáo gốc.
Trừ phi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.
Cập nhật lần gần đây nhất: 2025-08-27 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-08-27 UTC."],[[["\u003cp\u003eNative ads provide a \u003ccode\u003eGADMediaContent\u003c/code\u003e object for accessing and controlling video or image content, including playback and information like aspect ratio and duration.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eGADVideoController\u003c/code\u003e, accessible via \u003ccode\u003eGADMediaContent\u003c/code\u003e, allows publishers to manage video ad playback and respond to events like play, pause, and mute.\u003c/p\u003e\n"],["\u003cp\u003eTo receive video event notifications, implement the \u003ccode\u003eGADVideoControllerDelegate\u003c/code\u003e protocol in your class and set the \u003ccode\u003evideoController\u003c/code\u003e's delegate.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eGADVideoControllerDelegate\u003c/code\u003e protocol includes optional methods like \u003ccode\u003evideoControllerDidPlayVideo\u003c/code\u003e and \u003ccode\u003evideoControllerDidPauseVideo\u003c/code\u003e for handling various video events.\u003c/p\u003e\n"],["\u003cp\u003ePublishers should adhere to the Native ads policies and guidelines for proper ad rendering.\u003c/p\u003e\n"]]],["Native ads use `GADMediaContent` to access media information, like aspect ratio and video duration. `GADVideoController`, accessible via `GADMediaContent`, allows publishers to respond to video events, including play, pause, mute, and unmute. To handle these events, implement the `GADVideoControllerDelegate` protocol, setting the video controller's delegate in the `adLoader`'s `didReceiveNativeAd` method. This method allows you to define actions for when a video starts, pauses, ends, or changes its mute state.\n"],null,["# Native video ads\n\nSelect platform: [Android](/ad-manager/mobile-ads-sdk/android/native/video-ads \"View this page for the Android platform docs.\") [iOS](/ad-manager/mobile-ads-sdk/ios/native/video-ads \"View this page for the iOS platform docs.\")\n\n\u003cbr /\u003e\n\nPrerequisites\n-------------\n\n- Integrate the [Native ad format](/ad-manager/mobile-ads-sdk/ios/native).\n\nGADMediaContent\n---------------\n\nNative ads provide access to a `GADMediaContent` class that is used to get\ninformation about media content which could be a video or an image. It is also\nused to control the video ad playback listen for playback events. You can access\nthe media content object via the `.mediaContent` property on the ad.\n\nThe\n[`GADMediaContent`](/ad-manager/mobile-ads-sdk/ios/api/reference/Classes/GADMediaContent)\nobject contains information such as the aspect ratio and duration of video. The\nsnippet below shows how to get the aspect ratio and duration of a native ad. \n\n### Swift\n\n```swift\nif myNativeAd.mediaContent.hasVideoContent {\n let mediaAspectRatio = CGFloat(myNativeAd.mediaContent.aspectRatio)\n let duration = myNativeAd.mediaContent.duration\n}\n```\n\n### Objective-C\n\n```objective-c\nif(myNativeAd.mediaContent.hasVideoContent) {\n CGFloat mediaAspectRatio = myNativeAd.mediaContent.aspectRatio;\n NSTimeInterval duration = myNativeAd.mediaContent.duration;\n}\n```\n\nGADVideoController\n------------------\n\nThe `GADMediaContent` object has a reference to a\n[`GADVideoController`](/ad-manager/mobile-ads-sdk/ios/api/reference/Classes/GADVideoController)\nobject. The `GADVideoController` object allows publishers to respond to video\nevents.\n\nAds served through [line items](//support.google.com/admanager/answer/82236) can\nalso be controlled with the `GADVideoController`.\n\nThis `GADVideoController` object can be obtained by calling\n[`GADMediaContent.videoController`](/ad-manager/mobile-ads-sdk/ios/api/reference/Classes/GADMediaContent#videocontroller).\n\nCallbacks for video events\n--------------------------\n\nTo handle specific video events you need to write a class that implements the\n[`GADVideoControllerDelegate`](/ad-manager/mobile-ads-sdk/ios/api/reference/Protocols/GADVideoControllerDelegate)\nprotocol. The methods of the protocol are all optional.\n\nThe following example shows how to implement the delegate protocol: \n\n### Swift\n\n```swift\nclass ViewController: NativeAdLoaderDelegate, VideoControllerDelegate {\n private var adLoader: AdLoader?\n\n func viewDidLoad() {\n super.viewDidLoad()\n\n let videoOptions = VideoOptions()\n videoOptions.customControlsRequested = true\n adLoader = AdLoader(\n adUnitID: \"ca-app-pub-3940256099942544/3986624511\",\n rootViewController: self,\n adTypes: [.native],\n options: [videoOptions])\n adLoader?.delegate = self\n adLoader?.load(AdManagerRequest())\n\n }\n\n func adLoader(\n _ adLoader: AdLoader?,\n didReceive nativeAd: NativeAd?\n ) {\n // Set the videoController's delegate to be notified of video events.\n nativeAd?.mediaContent.videoController.delegate = self\n }\n\n // VideoControllerDelegate methods\n func videoControllerDidPlayVideo(_ videoController: VideoController) {\n // Implement this method to receive a notification when the video controller\n // begins playing the ad.\n }\n\n func videoControllerDidPauseVideo(_ videoController: VideoController) {\n // Implement this method to receive a notification when the video controller\n // pauses the ad.\n }\n\n func videoControllerDidEndVideoPlayback(_ videoController: VideoController) {\n // Implement this method to receive a notification when the video controller\n // stops playing the ad.\n }\n\n func videoControllerDidMuteVideo(_ videoController: VideoController) {\n // Implement this method to receive a notification when the video controller\n // mutes the ad.\n }\n\n func videoControllerDidUnmuteVideo(_ videoController: VideoController) {\n // Implement this method to receive a notification when the video controller\n // unmutes the ad.\n }\n}\n```\n\n### Objective-C\n\n```objective-c\n@interface ViewController () \u003cGADNativeAdLoaderDelegate,\n GADVideoControllerDelegate\u003e\n@property(nonatomic, strong) GADAdLoader *adLoader;\n\n@end\n\n@implementation ViewController\n- (void)viewDidLoad {\n [super viewDidLoad];\n\n GADVideoOptions *videoOptions = [[GADVideoOptions alloc] init];\n videoOptions.customControlsRequested = YES;\n self.adLoader =\n [[GADAdLoader alloc] initWithAdUnitID:@\"ca-app-pub-3940256099942544/3986624511\"\n rootViewController:self\n adTypes:@[ GADAdLoaderAdTypeNative ]\n options:@[ videoOptions ]];\n self.adLoader.delegate = self;\n [self.adLoader loadRequest:[GAMRequest request]];\n\n}\n\n- (void)adLoader:(GADAdLoader *)adLoader\n didReceiveNativeAd:(GADNativeAd *)nativeAd {\n // Set the videoController's delegate to be notified of video events.\n nativeAd.mediaContent.videoController.delegate = self;\n}\n\n// GADVideoControllerDelegate methods\n- (void)videoControllerDidPlayVideo:(nonnull GADVideoController *)videoController {\n // Implement this method to receive a notification when the video controller\n // begins playing the ad.\n}\n\n- (void)videoControllerDidPauseVideo:(nonnull GADVideoController *)videoController {\n // Implement this method to receive a notification when the video controller\n // pauses the ad.\n}\n\n- (void)videoControllerDidEndVideoPlayback:(nonnull GADVideoController *)videoController {\n // Implement this method to receive a notification when the video controller\n // stops playing the ad.\n}\n\n- (void)videoControllerDidMuteVideo:(nonnull GADVideoController *)videoController {\n // Implement this method to receive a notification when the video controller\n // mutes the ad.\n}\n\n- (void)videoControllerDidUnmuteVideo:(nonnull GADVideoController *)videoController {\n // Implement this method to receive a notification when the video controller\n // unmutes the ad.\n}\n\n@end\n```\n\nRead the [Native ads policies and\nguidelines](//support.google.com/admob/answer/6329638) for more guidance on how\nto render your native ads."]]