پاسخ به رویدادهای ویدیویی

پلتفرم مورد نظر: اندروید، iOS، اندروید (قدیمی)

پیش‌نیازها

محتوای GADMedia

تبلیغات بومی دسترسی به کلاس GADMediaContent را فراهم می‌کنند که برای دریافت اطلاعات در مورد محتوای رسانه‌ای که می‌تواند یک ویدیو یا یک تصویر باشد، استفاده می‌شود. همچنین برای کنترل پخش تبلیغات ویدیویی و گوش دادن به رویدادهای پخش استفاده می‌شود. می‌توانید از طریق ویژگی .mediaContent در تبلیغ به شیء محتوای رسانه‌ای دسترسی پیدا کنید.

The GADMediaContent object contains information such as the aspect ratio and duration of video. The snippet below shows how to get the aspect ratio and duration of a native ad.

سویفت

if myNativeAd.mediaContent.hasVideoContent {
  let mediaAspectRatio = CGFloat(myNativeAd.mediaContent.aspectRatio)
  let duration = myNativeAd.mediaContent.duration
}

هدف-سی

if(myNativeAd.mediaContent.hasVideoContent) {
  CGFloat mediaAspectRatio = myNativeAd.mediaContent.aspectRatio;
  NSTimeInterval duration = myNativeAd.mediaContent.duration;
}

کنترل‌کننده‌ی ویدئوی GAD

The GADMediaContent object has a reference to a GADVideoController object. The GADVideoController object allows publishers to respond to video events.

Ads served through line items can also be controlled with the GADVideoController .

This GADVideoController object can be obtained by calling GADMediaContent.videoController .

فراخوانی‌های مجدد برای رویدادهای ویدیویی

To handle specific video events you need to write a class that implements the GADVideoControllerDelegate protocol. The methods of the protocol are all optional.

The following example shows how to implement the delegate protocol:

سویفت

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.
  }
}

هدف-سی

@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

Read the Native ads policies and guidelines for more guidance on how to render your native ads.