Imasdk googleapis com что
Перейти к содержимому

Imasdk googleapis com что

  • автор:

Monetization with Ads

Shaka Player provides an API for serving ads to make monetization easier for apps. Our current API is tailored for our integration with the Interactive Media Ads SDKs, but we plan to extend our support to other ad providers in v3.1+. Please note that the current API is likely to undergo significant changes as our support extends.

AWS Elemental MediaTailor Integration

Shaka Player provides an integration with the AWS Elemental MediaTailor. We support Client Side, Server Side and overlays ad insertion.

All ad insertion experiences are available through the shaka.extern.IAdManager object on the Player.

If you’re not using Shaka’s UI library, you will also need to create a over your video element to serve as an ad container.

Start by initializing the server side logic. With Shaka UI:

const video = document.getElementById('video'); const ui = video['ui']; const controls = video.ui.getControls(); // If you're using a non-UI build, this is the div you'll need to create // for your layout. const container = controls.getServerSideAdContainer(); const player = controls.getPlayer(); const netEngine = player.getNetworkingEngine(); const adManager = player.getAdManager(); adManager.initMediaTailor(container, netEngine, video); 

Requesting a Client Side stream:

const mediaTailorUrl = 'https://d305rncpy6ne2q.cloudfront.net/v1/session/94063eadf7d8c56e9e2edd84fdf897826a70d0df/SFP-MediaTailor-VOD-HLS-DASH/out/v1/b94f3611978f419985a18335bac9d9cb/ddb73bf548a44551a0059c346226445a/eaa5485198bf497284559efb8172425e/index.mpd'; const mediaTailorAdsParams = < adsParams: < assetid: 'test2', podduration: '15', >, >; const uri = await adManager.requestMediaTailorStream(mediaTailorUrl, mediaTailorAdsParams); player.load(uri); 

Requesting a Server Side stream:

const mediaTailorUrl = 'https://ad391cc0d55b44c6a86d232548adc225.mediatailor.us-east-1.amazonaws.com/v1/session/d02fedbbc5a68596164208dd24e9b48aa60dadc7/singssai/master.m3u8'; const uri = await adManager.requestMediaTailorStream(mediaTailorUrl); player.load(uri); 

Note: overlays ad insertions is the same as server side.

IMA SDK Integration

Shaka Player provides an integration with the Interactive Media Ads SDKs. We support both Client Side and Server Side ad insertion.

Both the Client Side and the Server Side ad insertion experiences are available through the shaka.extern.IAdManager object on the Player.

const adManager = player.getAdManager(); 

First, you’ll need to include the IMA SDK(s) on your HTML page:

Streaming with Client Side Ads Insertion

To integrate Client Side ads into a presentation, you need to have your ad tag URIs. If you’re not using Shaka’s UI library, you will also need to create a over your video element to serve as an ad container.

Start by initializing the client side logic. With Shaka UI:

const adManager = player.getAdManager(); const video = document.getElementById('video'); const ui = video['ui']; // If you're using a non-UI build, this is the div you'll need to create // for your layout. The ad manager will clear this div, when it unloads, so // don't pass in a div that contains non-ad elements. const container = video.ui.getControls().getClientSideAdContainer(); adManager.initClientSide(container, video); 

With the client side logic initialized, you can request ads at any time during the presentation.

const adsRequest = new google.ima.AdsRequest(); // Your ad tag url should go here. We are using a sample ad tag from the // IMA HTML5 SDK implementation guide for this tutorial. adsRequest.adTagUrl = 'https://pubads.g.doubleclick.net/gampad/ads?' + 'sz=640x480&iu=/124319096/external/single_ad_samples&ciu_szs=300x250&' + 'impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&' + 'cust_params=deployment%3Ddevsite%26sample_ct%3Dlinear&correlator='; adManager.requestClientSideAds(adsRequest); 

See: google.ima.AdsRequest for details on the request object.

Control the rendering of ads:

const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adManager.initClientSide(container, video, adsRenderingSettings); // Updates the ads rendering settings. adManager.updateClientSideAdsRenderingSettings(adsRenderingSettings); 

See: google.ima.AdsRenderingSettings for details on the request object.

Streaming with Server Side Ads Insertion

To integrate Server Side ads into a presentation, you need to have a Google Ad Manager account and host your streams on Google Ad Manager’s servers. To find out more about the Google Ad Manager service or sign up for an account, visit https://admanager.google.com/

If you’re not using Shaka’s UI library, you will also need to create a over your video element to serve as an ad container.

Start by initializing the server side logic. With Shaka UI:

const adManager = player.getAdManager(); const video = document.getElementById('video'); const ui = video['ui']; // If you're using a non-UI build, this is the div you'll need to create // for your layout. const container = video.ui.getControls().getServerSideAdContainer(); adManager.initServerSide(container, video); 

With server side logic initialized, you can request and load streams with dynamically inserted ads.

Requesting a VOD stream:

const streamRequest = new google.ima.dai.api.VODStreamRequest(); // Your stream information will go here. We are using IMA's sample stream info // in this tutorial. streamRequest.contentSourceId = '2528370'; streamRequest.videoId = 'tears-of-steel'; const uri = await adManager.requestServerSideStream(streamRequest); player.load(uri); 

shaka.extern.IAdManager.requestServerSideStream() returns a Promise with a manifest URI that points to a stream with ads inserted.

See google.ima.dai.api.VODStreamRequest for details on the request object.

Requesting a LIVE stream:

const streamRequest = new google.ima.dai.api.LiveStreamRequest(); // Your stream information will go here. We are using IMA's sample stream info // in this tutorial. streamRequest.assetKey = 'sN_IYUG8STe1ZzhIIE_ksA'; const uri = await adManager.requestServerSideStream(streamRequest); player.load(uri); 

See: google.ima.dai.api.LiveStreamRequest for details on the request object.

If you are using Shaka’s UI library, we will automatically hook up our ad UI.

Listening To Ad Events

We unify Server Side and Client Side ad events into our own Shaka ad events and objects. which your application can listen to and interact with. Check out the full list of ad events for details.

Let’s register a simple listener to Shaka’s AD_STARTED event. It will log the start of the ad in the console.

adManager.addEventListener(shaka.ads.AdManager.AD_STARTED, () => < console.log('An ad has started'); >); 

Every shaka ad event contains an original SDK event and an ad object if those are available. Most apps are unlikely to need them, but if you have a use case that requires access to those, here is how to get them:

// Note that unlike in the previous example, we are capturing the AD_STARTED // event object here (the "e" parameter of the lambda function) so we can access // its properties. adManager.addEventListener(shaka.ads.AdManager.AD_STARTED, (e) => < const sdkAdObject = e['sdkAdObject']; const originalEvent = e['originalEvent']; >); 
Accommodating IMA Power Users

If you have an existing IMA integration you want to plug into Shaka, or you want to use more intricate SDK capabilities not exposed through our API, we provide a way to do that. Listen to the shaka.ads.AdManager#event:ImaAdManagerLoadedEvent for Client Side or the shaka.ads.AdManager#event:ImaStreamManagerLoadedEvent for Server Side to get the IMA AdManager or StreamManager objects.

adManager.addEventListener(shaka.ads.AdManager.IMA_AD_MANAGER_LOADED, (e) => < const imaAdManager = e['imaAdManager']; >); adManager.addEventListener(shaka.ads.AdManager.IMA_STREAM_MANAGER_LOADED, (e) => < const imaStreamManager = e['imaStreamManager']; >); 
Disabling Cookies For Serving Limited Ads

The server side IMA SDK allows limited ads to be served when the user does not give or denies consent to cookies. To allow this, set the ltd parameter using StreamRequest.adTagParameters as described in the IMA limited ads guide. To set up cookie-less manifest and segment requests, use an appropriate requestFilter . Please note that request.withCredentials flag is false by default, so you should only need to set this if you’ve enabled it in other parts of your code.

 player.getNetworkingEngine().registerRequestFilter(function(type, request, context) < if (type == shaka.net.NetworkingEngine.RequestType.MANIFEST || type == shaka.net.NetworkingEngine.RequestType.SEGMENT) < request.withCredentials = false; >>); 
Custom Ad Manager Implementations

Our architecture supports custom ad manager implementations. Every ad manager should implement the shaka.extern.IAdManager interface. To make the player use a custom ad manager implementation, invoke the code to set it before instantiating the player.

// myapp.CustomAdManager is a placeholder name for your ad manager implementation. shaka.Player.setAdManagerFactory(() => new myapp.CustomAdManager()); 

Documentation generated by JSDoc 3.6.10 on Wed Jan 24 2024 11:13:52 GMT+0000 (Coordinated Universal Time)

astein / html5_ima_sdk_example.js

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

// video DOM inside creative
//
//
//
// load IMA SDK at init load time
$ . getScript ( ‘//imasdk.googleapis.com/js/sdkloader/ima3.js’ ) ;
// usage: startVideo( /* vast tag url */ );
// set width and height according to video size in creative
var VIDEO_WIDTH = 600 ;
var VIDEO_HEIGHT = 380 ;
var adsManager ;
var adsLoader ;
var adDisplayContainer ;
var intervalTimer ;
var videoContent = document . getElementById ( ‘videoContainer’ ) ;
function startVideo ( vast_tag )
requestAds ( vast_tag ) ;
>
function createAdDisplayContainer ( )
// We assume the adContainer is the DOM id of the element that will house
// the ads.
adDisplayContainer =
new google . ima . AdDisplayContainer (
document . getElementById ( ‘adContainer’ ) , videoContent ) ;
>
function requestAds ( vast_tag )
// Create the ad display container.
createAdDisplayContainer ( ) ;
// Initialize the container. Must be done via a user action on mobile devices.
adDisplayContainer . initialize ( ) ;
videoContent . load ( ) ;
// Create ads loader.
adsLoader = new google . ima . AdsLoader ( adDisplayContainer ) ;
// Set VPAID Mode to Enabled
adsLoader . getSettings ( ) . setVpaidMode ( google . ima . ImaSdkSettings . VpaidMode . ENABLED ) ;
adsLoader . getSettings ( ) . setVpaidMode ( google . ima . ImaSdkSettings . VpaidMode . INSECURE ) ;
// Listen and respond to ads loaded and error events.
adsLoader . addEventListener (
google . ima . AdsManagerLoadedEvent . Type . ADS_MANAGER_LOADED ,
onAdsManagerLoaded ,
false ) ;
adsLoader . addEventListener (
google . ima . AdErrorEvent . Type . AD_ERROR ,
onAdError ,
false ) ;
// Request video ads.
var adsRequest = new google . ima . AdsRequest ( ) ;
// autoplay ad
adsRequest . setAdWillAutoPlay ( true ) ;
adsRequest . adTagUrl = vast_tag ;
// Specify the linear and nonlinear slot sizes. This helps the SDK to
// select the correct creative if multiple are returned.
adsRequest . linearAdSlotWidth = VIDEO_WIDTH ;
adsRequest . linearAdSlotHeight = VIDEO_HEIGHT ;
adsRequest . nonLinearAdSlotWidth = VIDEO_WIDTH ;
adsRequest . nonLinearAdSlotHeight = VIDEO_HEIGHT ;
adsLoader . requestAds ( adsRequest ) ;
>
function onAdsManagerLoaded ( adsManagerLoadedEvent )
// Get the ads manager.
var adsRenderingSettings = new google . ima . AdsRenderingSettings ( ) ;
adsRenderingSettings . restoreCustomPlaybackStateOnAdBreakComplete = true ;
adsRenderingSettings . bitrate = 1000 ;
// videoContent should be set to the content video element.
adsManager = adsManagerLoadedEvent . getAdsManager (
videoContent , adsRenderingSettings ) ;
// Add listeners to the required events.
adsManager . addEventListener (
google . ima . AdErrorEvent . Type . AD_ERROR ,
onAdError ) ;
adsManager . addEventListener (
google . ima . AdEvent . Type . CONTENT_PAUSE_REQUESTED ,
onContentPauseRequested ) ;
adsManager . addEventListener (
google . ima . AdEvent . Type . CONTENT_RESUME_REQUESTED ,
onContentResumeRequested ) ;
adsManager . addEventListener (
google . ima . AdEvent . Type . ALL_ADS_COMPLETED ,
onAdEvent ) ;
adsManager . addEventListener (
google . ima . AdEvent . Type . CLICK ,
onAdEvent ) ;
// Listen to any additional events, if necessary.
adsManager . addEventListener (
google . ima . AdEvent . Type . LOADED ,
onAdEvent ) ;
adsManager . addEventListener (
google . ima . AdEvent . Type . STARTED ,
onAdEvent ) ;
adsManager . addEventListener (
google . ima . AdEvent . Type . COMPLETE ,
onAdEvent ) ;
adsManager . addEventListener (
google . ima . AdEvent . Type . FIRST_QUARTILE ,
onAdEvent ) ;
adsManager . addEventListener (
google . ima . AdEvent . Type . MIDPOINT ,
onAdEvent ) ;
adsManager . addEventListener (
google . ima . AdEvent . Type . THIRD_QUARTILE ,
onAdEvent ) ;
try
// Initialize the ads manager. Ad rules playlist will start at this time.
adsManager . init ( VIDEO_WIDTH , VIDEO_HEIGHT , google . ima . ViewMode . NORMAL ) ;
// Call play to start showing the ad. Single video and overlay ads will
// start at this time; the call will be ignored for ad rules.
adsManager . start ( ) ;
> catch ( adError )
// An error may be thrown if there was a problem with the VAST response.
videoContent . play ( ) ;
>
>
function onAdEvent ( adEvent )
// Retrieve the ad from the event. Some events (e.g. ALL_ADS_COMPLETED)
// don’t have ad object associated.
var ad = adEvent . getAd ( ) ;
switch ( adEvent . type )
case google . ima . AdEvent . Type . LOADED :
// console.log(‘loaded’);
// This is the first event sent for an ad — it is possible to
// determine whether the ad is a video ad or an overlay.
if ( ! ad . isLinear ( ) )
// Position AdDisplayContainer correctly for overlay.
// Use ad.width and ad.height.
videoContent . play ( ) ;
>
break ;
case google . ima . AdEvent . Type . STARTED :
// only hide the content element (video overlay) when ad starts.
$ ( ‘#contentElement’ ) . hide ( ) ;
TXM . api . track ( ‘multimedia’ , ‘video_started’ , ‘vast_video’ ) ;
// This event indicates the ad has started — the video player
// can adjust the UI, for example display a pause button and
// remaining time.
if ( ad . isLinear ( ) )
// For a linear ad, a timer can be started to poll for
// the remaining time.
intervalTimer = setInterval (
function ( )
var remainingTime = adsManager . getRemainingTime ( ) ;
> ,
300 ) ; // every 300ms
>
break ;
case google . ima . AdEvent . Type . COMPLETE :
TXM . api . track ( ‘multimedia’ , ‘video_completed’ , ‘vast_video’ ) ;
if ( ad . isLinear ( ) )
clearInterval ( intervalTimer ) ;
>
break ;
case google . ima . AdEvent . Type . ALL_ADS_COMPLETED :
break ;
case google . ima . AdEvent . Type . CLICK :
( function ( )
var prop ;
var currentAd = adEvent . getAd ( ) ;
var clickThroughUrl ;
// Clickthrough parameter is obfuscated in IMA3. We loopthrough the properties of the
// ad and search for a «clickThroughUrl» attribute. We track it if we find one.
for ( prop in ad )
clickThroughUrl = ad [ prop ] . clickThroughUrl ;
if ( clickThroughUrl !== undefined && clickThroughUrl !== null )
break ;
>
>
if ( clickThroughUrl )
TXM . api . track ( ‘navigation’ , ‘external_page’ , ‘vast_clickthrough’ ) ;
>
> ( ) ) ;
break ;
// video quartile tracking
case google . ima . AdEvent . Type . FIRST_QUARTILE :
TXM . api . track ( ‘multimedia’ , ‘video_first_quartile’ , ‘vast_video’ ) ;
break ;
case google . ima . AdEvent . Type . MIDPOINT :
TXM . api . track ( ‘multimedia’ , ‘video_second_quartile’ , ‘vast_video’ ) ;
break ;
case google . ima . AdEvent . Type . THIRD_QUARTILE :
TXM . api . track ( ‘multimedia’ , ‘video_third_quartile’ , ‘vast_video’ ) ;
break ;
>
>
function onAdError ( adErrorEvent )
adsManager . destroy ( ) ;
>
function onContentPauseRequested ( )
videoContent . pause ( ) ;
>

diglez commented Mar 25, 2020 •

Hi! I am trying to get a VAST tag to autoplay on page load.
I have this for my video content:

and I have set:
adsRequest.setAdWillAutoPlay(true);

but the ad is not autoplaying. I have tried removing and keeping playsinline, I have tried camel case and all lowercase for both playsinline and autoplay, I have tried to add muted, but nothing seems to work.

Any ideas on what it could be?
(this is a react app by the way, if that makes a difference)

Начало работы

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

IMA SDK упрощают интеграцию мультимедийной рекламы на ваши веб-сайты и приложения. IMA SDK могут запрашивать рекламу с любого рекламного сервера , совместимого с VAST, и управлять воспроизведением рекламы в ваших приложениях. С помощью клиентских SDK IMA вы сохраняете контроль над воспроизведением видеоконтента, а SDK управляет воспроизведением рекламы. Реклама воспроизводится в отдельном видеопроигрывателе, расположенном поверх видеопроигрывателя контента приложения.

В этом руководстве показано, как интегрировать IMA SDK в простое приложение видеоплеера. Если вы хотите просмотреть или проследить за завершенным примером интеграции, загрузите BasicExample с GitHub.

Примечание. Информацию об интеграции с другими платформами или использовании SDK IMA DAI см. в разделе SDK интерактивной медиарекламы .

Обзор клиентской части IMA

Реализация IMA на стороне клиента включает четыре основных компонента SDK, которые продемонстрированы в этом руководстве:

  • IMAAdDisplayContainer : объект-контейнер, в котором отображаются объявления.
  • IMAAdsLoader : объект, который запрашивает рекламу и обрабатывает события из ответов на запросы рекламы. Вам следует создать только один экземпляр загрузчика рекламы, который можно будет повторно использовать на протяжении всего срока службы приложения.
  • IMAAdsRequest : объект, определяющий запрос объявления. В запросах объявлений указывается URL-адрес тега объявления VAST, а также дополнительные параметры, например размеры объявления.
  • IMAAdsManager : объект, который содержит ответ на запрос рекламы, управляет воспроизведением рекламы и прослушивает рекламные события, запускаемые SDK.

Предварительные условия

Прежде чем начать, вам необходимо следующее:

  • Xcode 13 или новее
  • CocoaPods (предпочтительно), Swift Package Manager или загруженная копия IMA SDK для iOS.

1. Создайте новый проект Xcode.

В Xcode создайте новый проект iOS, используя Objective-C или Swift. Используйте BasicExample в качестве имени проекта.

2. Добавьте IMA SDK в проект Xcode.

Установите SDK с помощью CocoaPods (рекомендуется)

CocoaPods — это менеджер зависимостей для проектов Xcode, который рекомендуется использовать для установки IMA SDK. Дополнительную информацию об установке или использовании CocoaPods см. в документации CocoaPods . После установки CocoaPods используйте следующие инструкции для установки IMA SDK:

    В том же каталоге, где находится файл BasicExample.xcodeproj , создайте текстовый файл с именем Podfile и добавьте следующую конфигурацию:

source 'https://github.com/CocoaPods/Specs.git' platform :ios, '14' target "BasicExample" do pod 'GoogleAds-IMA-iOS-SDK', '~> 3.19.1' end 

Установите SDK с помощью диспетчера пакетов Swift.

SDK Interactive Media Ads поддерживает Swift Package Manager , начиная с версии 3.18.4. Выполните следующие действия, чтобы импортировать пакет Swift.

  1. В Xcode установите пакет IMA SDK Swift, выбрав «Файл» > «Добавить пакеты. » .
  2. В появившемся окне найдите репозиторий IMA SDK Swift Package GitHub:

https://github.com/googleads/swift-package-manager-google-interactive-media-ads-ios 

Когда вы закончите, Xcode разрешит зависимости вашего пакета и загрузит их в фоновом режиме. Более подробную информацию о том, как добавить зависимости пакета, можно найти в статье Apple .

Загрузите и установите SDK вручную.

Если вы не хотите использовать Swift Package Manager или CocoaPods, вы можете загрузить IMA SDK и вручную добавить его в свой проект.

Показать/скрыть инструкции
  1. Со страницы загрузки iOS IMA загрузите и извлеките последнюю версию iOS IMA SDK.
  2. Откройте BasicExample.xcodeproj .
  3. На левой панели щелкните имя проекта.
    щелкните название проекта
  4. На центральной панели нажмите «Фазы сборки» .
    нажмите «Фазы сборки»
  5. Разверните раздел «Связать двоичный файл с библиотеками» .
  6. Внизу списка библиотек щелкните значок плюса [+] .
  7. Нажмите «Добавить другое» .
  8. В каталоге, куда вы извлекли загруженный SDK, выберите GoogleInteractiveMediaAds.framework и нажмите «Открыть» .
  9. Внизу списка библиотек еще раз щелкните значок плюса [+] .
  10. Убедитесь, что в столбце «Статус» GoogleInteractiveMediaAds.framework установлено значение Required .
  11. Включите флаг компоновщика -ObjC в настройки сборки. Для получения дополнительной информации см. Apple QA1490 .

3. Создайте простой видеоплеер

Сначала реализуем базовый видеоплеер. Изначально этот проигрыватель не использует IMA SDK и еще не содержит методов запуска воспроизведения.

ViewController.m

Цель-C

#import "ViewController.h" #import NSString *const kContentURLString = @"https://storage.googleapis.com/interactive-media-ads/media/stock.mp4"; @interface ViewController () @property(nonatomic) AVPlayerViewController *contentPlayerViewController; @end @implementation ViewController - (void)viewDidLoad < [super viewDidLoad]; self.view.backgroundColor = UIColor.blackColor; [self setupContentPlayer]; >- (void)setupContentPlayer < // Create a content video player. NSURL *contentURL = [NSURL URLWithString:kContentURLString]; AVPlayer *player = [AVPlayer playerWithURL:contentURL]; self.contentPlayerViewController = [[AVPlayerViewController alloc] init]; self.contentPlayerViewController.player = player; self.contentPlayerViewController.view.frame = self.view.bounds; // Attach content video player to view hierarchy. [self showContentPlayer]; >// Add the content video player as a child view controller. - (void)showContentPlayer < [self addChildViewController:self.contentPlayerViewController]; self.contentPlayerViewController.view.frame = self.view.bounds; [self.view insertSubview:self.contentPlayerViewController.view atIndex:0]; [self.contentPlayerViewController didMoveToParentViewController:self]; >// Remove and detach the content video player. - (void)hideContentPlayer < // The whole controller needs to be detached so that it doesn't capture events from the remote. [self.contentPlayerViewController willMoveToParentViewController:nil]; [self.contentPlayerViewController.view removeFromSuperview]; [self.contentPlayerViewController removeFromParentViewController]; >@end

Быстрый

import AVFoundation import UIKit class ViewController: UIViewController < static let ContentURLString = "https://storage.googleapis.com/interactive-media-ads/media/stock.mp4" var playerViewController: AVPlayerViewController! override func viewDidLoad() < super.viewDidLoad() self.view.backgroundColor = UIColor.black setUpContentPlayer() >func setUpContentPlayer() < // Load AVPlayer with path to your content. let contentURL! = URL(string: ViewController.ContentURLString) let player = AVPlayer(url: contentURL) playerViewController = AVPlayerViewController() playerViewController.player = player showContentPlayer() >func showContentPlayer() < self.addChild(playerViewController) playerViewController.view.frame = self.view.bounds self.view.insertSubview(playerViewController.view, at: 0) playerViewController.didMove(toParent:self) >func hideContentPlayer() < // The whole controller needs to be detached so that it doesn't capture // events from the remote. playerViewController.willMove(toParent:nil) playerViewController.view.removeFromSuperview() playerViewController.removeFromParent() >>

4. Импортируйте IMA SDK.

Затем добавьте платформу IMA, используя оператор импорта под существующим импортом.

ViewController.m

Цель-C

#import "ViewController.h" #import #import  NSString *const kContentURLString = @"https://storage.googleapis.com/interactive-media-ads/media/stock.mp4";

Быстрый

import AVFoundation import GoogleInteractiveMediaAds import UIKit class ViewController: UIViewController < static let ContentURLString = "https://storage.googleapis.com/interactive-media-ads/media/stock.mp4"

5. Внедрить трекер воспроизведения контента и наблюдатель конца потока.

Чтобы воспроизводить рекламу в середине ролика, IMA SDK должен отслеживать текущую позицию вашего видеоконтента. Для этого создайте класс, реализующий IMAContentPlayhead . Если вы используете AVPlayer , как показано в этом примере, SDK предоставляет класс IMAAVPlayerContentPlayhead , который сделает это за вас. Если вы не используете AVPlayer , вам необходимо реализовать IMAContentPlayhead в собственном классе.

Вам также необходимо сообщить SDK, когда воспроизведение вашего контента закончится, чтобы он мог отображать рекламу после ролика. Это делается путем вызова contentComplete в IMAAdsLoader с использованием AVPlayerItemDidPlayToEndTimeNotification .

ViewController.m

Цель-C

. @interface ViewController () @property(nonatomic) IMAAVPlayerContentPlayhead *contentPlayhead; @property(nonatomic) AVPlayerViewController *contentPlayerViewController; @end . - (void)setupContentPlayer < // Create a content video player. NSURL *contentURL = [NSURL URLWithString:kContentURLString]; AVPlayer *player = [AVPlayer playerWithURL:contentURL]; self.contentPlayerViewController = [[AVPlayerViewController alloc] init]; self.contentPlayerViewController.player = player; self.contentPlayerViewController.view.frame = self.view.bounds; self.contentPlayhead = [[IMAAVPlayerContentPlayhead alloc] initWithAVPlayer:self.contentPlayerViewController.player]; // Track end of content. AVPlayerItem *contentPlayerItem = self.contentPlayerViewController.player.currentItem; [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(contentDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:contentPlayerItem]; // Attach content video player to view hierarchy. [self showContentPlayer]; > . - (void)contentDidFinishPlaying:(NSNotification *)notification <> - (void)dealloc @end

Быстрый

. class ViewController: UIViewController < static let ContentURLString = "https://storage.googleapis.com/interactive-media-ads/media/stock.mp4" var contentPlayhead: IMAAVPlayerContentPlayhead? var playerViewController: AVPlayerViewController! deinit < NotificationCenter.default.removeObserver(self) >. func setUpContentPlayer() < // Load AVPlayer with path to your content. let contentURL! = URL(string: ViewController.ContentURLString) let player = AVPlayer(url: contentURL) playerViewController = AVPlayerViewController() playerViewController.player = player // Set up your content playhead and contentComplete callback. contentPlayhead = IMAAVPlayerContentPlayhead(avPlayer: player) NotificationCenter.default.addObserver( self, selector: #selector(ViewController.contentDidFinishPlaying(_:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem) showContentPlayer() > . @objc func contentDidFinishPlaying(_ notification: Notification) >

6. Инициализируйте загрузчик рекламы и сделайте запрос рекламы.

Чтобы запросить набор объявлений, вам необходимо создать экземпляр IMAAdsLoader . Этот загрузчик можно использовать для обработки объектов IMAAdsRequest , связанных с указанным URL-адресом тега объявления.

Рекомендуется поддерживать только один экземпляр IMAAdsLoader на протяжении всего жизненного цикла вашего приложения. Чтобы сделать дополнительные запросы объявлений, создайте новый объект IMAAdsRequest , но повторно используйте тот же IMAAdsLoader . Дополнительную информацию см. в разделе Часто задаваемые вопросы по IMA SDK .

ViewController.m

Цель-C

. NSString *const kContentURLString = @"https://storage.googleapis.com/interactive-media-ads/media/stock.mp4"; NSString *const kAdTagURLString = @"https://pubads.g.doubleclick.net/gampad/ads?" @"iu=/21775744923/external/vmap_ad_samples&sz=640x480&" @"cust_params=sample_ar%3Dpremidpostlongpod&" @"ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&" @"env=vp&impl=s&cmsid=496&vid=short_onecue&correlator swift_3" data-text=" Быстрый" tabindex="-1"> Быстрый 
. class ViewController: UIViewController < static let ContentURLString = "https://storage.googleapis.com/interactive-media-ads/media/stock.mp4" static let AdTagURLString = "https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_ad_samples&sz=640x480&cust_params=sample_ct%3Dlinear&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator 7_set_up_an_ads_loader_delegate" data-text=" 7. Настройте делегат загрузчика рекламы" tabindex="-1"> 7. Настройте делегат загрузчика рекламы 

В случае успешного события загрузки IMAAdsLoader вызывает adsLoadedWithData назначенного ему делегата, передавая ему экземпляр IMAAdsManager . Затем вы можете инициализировать менеджер рекламы, который загружает отдельные объявления в соответствии с ответом на URL-адрес тега объявления.

Кроме того, обязательно исправьте любые ошибки, которые могут возникнуть в процессе загрузки. Если реклама не загружается, убедитесь, что воспроизведение мультимедиа продолжается без рекламы, чтобы не мешать работе пользователя.

ViewController.m

Цель-C

. @interface ViewController () @property(nonatomic) IMAAdsLoader *adsLoader; @property(nonatomic) IMAAdsManager *adsManager; @property(nonatomic) IMAAVPlayerContentPlayhead *contentPlayhead; @property(nonatomic) AVPlayerViewController *contentPlayerViewController; @end @implementation ViewController . - (void)setupAdsLoader < self.adsLoader = [[IMAAdsLoader alloc] init]; self.adsLoader.delegate = self; > . #pragma mark - IMAAdsLoaderDelegate - (void)adsLoader:(IMAAdsLoader *)loader adsLoadedWithData:(IMAAdsLoadedData *)adsLoadedData < // Initialize and listen to the ads manager loaded for this request. self.adsManager = adsLoadedData.adsManager; [self.adsManager initializeWithAdsRenderingSettings:nil]; >- (void)adsLoader:(IMAAdsLoader *)loader failedWithErrorData:(IMAAdLoadingErrorData *)adErrorData < // Fall back to playing content. NSLog(@"Error loading ads: %@", adErrorData.adError.message); [self.contentPlayerViewController.player play]; > @end

Быстрый

. class ViewController: UIViewController, IMAAdsLoaderDelegate < . var adsLoader: IMAAdsLoader! var adsManager: IMAAdsManager! var contentPlayhead: IMAAVPlayerContentPlayhead? var playerViewController: AVPlayerViewController! . func setUpAdsLoader() < adsLoader = IMAAdsLoader(settings: nil) adsLoader.delegate = self > . // MARK: - IMAAdsLoaderDelegate func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) < adsManager = adsLoadedData.adsManager adsManager.initialize(with: nil) >func adsLoader(_ loader: IMAAdsLoader!, failedWith adErrorData: IMAAdLoadingErrorData!) >

8. Настройте делегата менеджера по рекламе

Наконец, для управления событиями и изменениями состояния рекламному менеджеру нужен собственный делегат. IMAAdManagerDelegate имеет методы для обработки рекламных событий и ошибок, а также методы для запуска воспроизведения и приостановки вашего видеоконтента.

Начало воспроизведения

Существует множество событий, для обработки которых можно использовать метод didReceiveAdEvent , но в этом базовом примере просто прослушайте событие LOADED , чтобы сообщить менеджеру рекламы о необходимости начать воспроизведение контента и рекламы.

ViewController.m

Цель-C

@interface ViewController () IMAAdsManagerDelegate> . - (void)adsLoader:(IMAAdsLoader *)loader adsLoadedWithData:(IMAAdsLoadedData *)adsLoadedData < // Initialize and listen to the ads manager loaded for this request. self.adsManager = adsLoadedData.adsManager; self.adsManager.delegate = self; [self.adsManager initializeWithAdsRenderingSettings:nil]; > . #pragma mark - IMAAdsManagerDelegate - (void)adsManager:(IMAAdsManager *)adsManager didReceiveAdEvent:(IMAAdEvent *)event < // Play each ad once it has loaded. if (event.type == kIMAAdEvent_LOADED) < [adsManager start]; >> . 

Быстрый

. class ViewController: UIViewController, IMAAdsLoaderDelegate, IMAAdsManagerDelegate < . func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) < // Grab the instance of the IMAAdsManager and set yourself as the delegate. adsManager = adsLoadedData.adsManager adsManager.delegate = self adsManager.initialize(with: nil) > . // MARK: - IMAAdsManagerDelegate func adsManager(_ adsManager: IMAAdsManager!, didReceive event: IMAAdEvent!) < // Play each ad once it has been loaded if event.type == IMAAdEventType.LOADED < adsManager.start() >> . 

Обработка ошибок

Также добавьте обработчик ошибок рекламы. Если возникла ошибка, как на предыдущем шаге, возобновите воспроизведение контента.

ViewController.m

Цель-C

. - (void)adsManager:(IMAAdsManager *)adsManager didReceiveAdError:(IMAAdError *)error < // Fall back to playing content. NSLog(@"AdsManager error: %@", error.message); [self showContentPlayer]; [self.contentPlayerViewController.player play]; > @end

Быстрый

. func adsManager(_ adsManager: IMAAdsManager!, didReceive error: IMAAdError!) < // Fall back to playing content print("AdsManager error: " + error.message) showContentPlayer() playerViewController.player?.play() >

Запуск событий воспроизведения и паузы

Последние два метода делегата, которые вам необходимо реализовать, используются для запуска событий воспроизведения и приостановки базового видеоконтента по запросу IMA SDK. Запуск паузы и воспроизведения по запросу не позволяет пользователю пропустить части видеоконтента при показе рекламы.

ViewController.m

Цель-C

. - (void)adsManagerDidRequestContentPause:(IMAAdsManager *)adsManager < // Pause the content for the SDK to play ads. [self.contentPlayerViewController.player pause]; [self hideContentPlayer]; >- (void)adsManagerDidRequestContentResume:(IMAAdsManager *)adsManager < // Resume the content since the SDK is done playing ads (at least for now). [self showContentPlayer]; [self.contentPlayerViewController.player play]; > @end

Быстрый

. func adsManagerDidRequestContentPause(_ adsManager: IMAAdsManager!) < // Pause the content for the SDK to play ads. playerViewController.player?.pause() hideContentPlayer() >func adsManagerDidRequestContentResume(_ adsManager: IMAAdsManager!) < // Resume the content since the SDK is done playing ads (at least for now). showContentPlayer() playerViewController.player?.play() >>

Вот и все! Теперь вы запрашиваете и показываете рекламу с помощью IMA SDK. Чтобы узнать о дополнительных функциях SDK, ознакомьтесь с другими руководствами или примерами на GitHub .

Следующие шаги

Отправить отзыв

Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.

Последнее обновление: 2024-01-24 UTC.

Начало работы

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

IMA SDK упрощают интеграцию мультимедийной рекламы на ваши веб-сайты и приложения. IMA SDK могут запрашивать рекламу с любого рекламного сервера , совместимого с VAST, и управлять воспроизведением рекламы в ваших приложениях. С помощью клиентских SDK IMA вы сохраняете контроль над воспроизведением видеоконтента, а SDK управляет воспроизведением рекламы. Реклама воспроизводится в отдельном видеопроигрывателе, расположенном поверх видеопроигрывателя контента приложения.

В этом руководстве показано, как интегрировать IMA SDK в простое приложение видеоплеера. Если вы хотите просмотреть или проследить за завершенным примером интеграции, загрузите простой пример с GitHub. Если вас интересует проигрыватель HTML5 с предварительно интегрированным SDK, ознакомьтесь с плагином IMA SDK для Video.js .

Примечание. Информацию об интеграции с другими платформами или использовании SDK IMA DAI см. в разделе SDK интерактивной медиарекламы .

Обзор клиентской части IMA

Реализация IMA на стороне клиента включает четыре основных компонента SDK, которые продемонстрированы в этом руководстве:

  • AdDisplayContainer : объект-контейнер, в котором отображаются объявления.
  • AdsLoader : объект, который запрашивает рекламу и обрабатывает события из ответов на запросы рекламы. Вам следует создать только один экземпляр загрузчика рекламы, который можно будет повторно использовать на протяжении всего срока службы приложения.
  • AdsRequest : объект, определяющий запрос рекламы. В запросах объявлений указывается URL-адрес тега объявления VAST, а также дополнительные параметры, например размеры объявления.
  • AdsManager : объект, который содержит ответ на запрос рекламы, управляет воспроизведением рекламы и прослушивает рекламные события, запускаемые SDK.

Предварительные условия

Прежде чем начать, вам понадобится следующее:

  • Три пустых файла:
    • index.html
    • стиль.css
    • реклама.js

    1. Запустите сервер разработки

    Поскольку IMA SDK загружает зависимости по тому же протоколу, что и страница, с которой он загружается, для тестирования приложения необходимо использовать веб-сервер. Самый простой способ запустить локальный сервер разработки — использовать встроенный сервер Python.

      Используя командную строку, из каталога, содержащего файл index.html, запустите:

    python -m http.server 8000

    Вы также можете использовать любой другой веб-сервер, например HTTP-сервер Apache .

    2. Создайте простой видеоплеер

    Сначала измените index.html , чтобы создать простой видеоэлемент HTML5, содержащийся в элементе-оболочке, и кнопку для запуска воспроизведения. Также добавьте необходимые теги для загрузки файлов style.css иads.js. Затем измените style.css , чтобы видеоплеер реагировал на мобильные устройства. Наконец, вads.js запускает воспроизведение видео при нажатии кнопки воспроизведения.

       IMA HTML5 Simple Demo    

    style.css

    #page-content < position: relative; /* this element's width controls the effective height */ /* of the video container's padding-bottom */ max-width: 640px; margin: 10px auto; >#video-container < position: relative; /* forces the container to match a 16x9 aspect ratio */ /* replace with 75% for a 4:3 aspect ratio, if needed */ padding-bottom: 56.25%; >#video-element < /* forces the contents to fill the container */ position: absolute; top: 0; left: 0; width: 100%; height: 100%; >
    var videoElement; // On window load, attach an event to the play button click // that triggers playback on the video element window.addEventListener('load', function(event) < videoElement = document.getElementById('video-element'); var playButton = document.getElementById('play-button'); playButton.addEventListener('click', function(event) < videoElement.play(); >); >);

    После выполнения этого шага, когда вы открываете index.html в своем браузере (через сервер разработки), вы сможете увидеть элемент видео, и видео должно запускаться при нажатии кнопки воспроизведения.

    3. Импортируйте IMA SDK.

    Затем добавьте платформу IMA, используя тег скрипта в index.html перед ads.js .

    . 

4. Прикрепите обработчики страниц и видеоплееров.

Чтобы изменить поведение видеоплеера с помощью JavaScript, добавьте обработчики событий, которые запускают следующие действия:

  • Когда страница загрузится, инициализируйте IMA SDK.
  • При нажатии кнопки воспроизведения видео загрузите рекламу (если реклама еще не загружена).
  • При изменении размера окна браузера обновите размеры элемента video и adsManager , чтобы страница адаптировалась к мобильным устройствам.
var videoElement; // Define a variable to track whether there are ads loaded and initially set it to false var adsLoaded = false; window.addEventListener('load', function(event) < videoElement = document.getElementById('video-element'); initializeIMA(); videoElement.addEventListener('play', function(event) < loadAds(event); >); var playButton = document.getElementById('play-button'); playButton.addEventListener('click', function(event) < videoElement.play(); >); >); window.addEventListener('resize', function(event) < console.log("window resized"); >); function initializeIMA() < console.log("initializing IMA"); >function loadAds(event) < // Prevent this function from running on if there are already ads loaded if(adsLoaded) < return; >adsLoaded = true; // Prevent triggering immediate playback when ads are loading event.preventDefault(); console.log("loading ads"); > 

5. Создайте рекламный контейнер.

В большинстве браузеров IMA SDK использует специальный элемент рекламного контейнера для отображения как рекламы, так и элементов пользовательского интерфейса, связанных с рекламой. Размер этого контейнера должен соответствовать размеру наложения на видеоэлемент из верхнего левого угла. Высота и ширина объявлений, размещаемых в этом контейнере, задаются adsManager , поэтому вам не нужно задавать эти значения вручную.

Примечание. В настольных средах во избежание случайных щелчков IMA SDK не будет открывать URL-адрес перехода по клику в течение первых двух секунд воспроизведения объявления.

Чтобы реализовать этот элемент рекламного контейнера, сначала создайте новый div внутри элемента video-container . Затем обновите CSS, чтобы расположить элемент в верхнем левом углу video-element . Наконец, определите переменную для контейнера в функции initializeIMA() , которая запускается при загрузке страницы.

style.css

. #ad-container
var videoElement; var adsLoaded = false; var adContainer; . function initializeIMA() < console.log("initializing IMA"); adContainer = document.getElementById('ad-container'); >

6. Инициализируйте AdsLoader и сделайте запрос рекламы.

Чтобы запросить набор объявлений, создайте экземпляр ima.AdsLoader . Этот экземпляр принимает объект AdDisplayContainer в качестве входных данных и может использоваться для обработки объектов ima.AdsRequest , связанных с указанным URL-адресом тега объявления. Рекламный тег, используемый в этом примере, содержит 10-секундную рекламу в начале ролика. Вы можете проверить этот или любой другой URL-адрес рекламного тега с помощью IMA Video Suite Inspector .

Рекомендуется поддерживать только один экземпляр ima.AdsLoader на протяжении всего жизненного цикла страницы. Чтобы сделать дополнительные запросы объявлений, создайте новый объект ima.AdsRequest , но повторно используйте тот же ima.AdsLoader . Дополнительную информацию см. в разделе Часто задаваемые вопросы по IMA SDK .

var videoElement; var adsLoaded = false; var adContainer; var adDisplayContainer; var adsLoader; . function initializeIMA() < console.log("initializing IMA"); adContainer = document.getElementById('ad-container'); adDisplayContainer = new google.ima.AdDisplayContainer(adContainer, videoElement); adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Let the AdsLoader know when the video has ended videoElement.addEventListener('ended', function() < adsLoader.contentComplete(); >); var adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = 'https://pubads.g.doubleclick.net/gampad/ads?' + 'iu=/21775744923/external/single_ad_samples&sz=640x480&' + 'cust_params=sample_ct%3Dlinear&ciu_szs=300x250%2C728x90&' + 'gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator='; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. adsRequest.linearAdSlotWidth = videoElement.clientWidth; adsRequest.linearAdSlotHeight = videoElement.clientHeight; adsRequest.nonLinearAdSlotWidth = videoElement.clientWidth; adsRequest.nonLinearAdSlotHeight = videoElement.clientHeight / 3; // Pass the request to the adsLoader to request ads adsLoader.requestAds(adsRequest); >

7. Слушайте события AdsLoader

При успешной загрузке рекламы ima.AdsLoader генерирует событие ADS_MANAGER_LOADED . Проанализируйте событие, переданное в обратный вызов, чтобы инициализировать объект AdsManager . AdsManager загружает отдельные объявления в соответствии с ответом на URL-адрес тега объявления.

Кроме того, обязательно исправьте любые ошибки, которые могут возникнуть в процессе загрузки. Если реклама не загружается, убедитесь, что воспроизведение мультимедиа продолжается без рекламы, чтобы не мешать работе пользователя.

var videoElement; var adsLoaded = false; var adContainer; var adDisplayContainer; var adsLoader; var adsManager; . function initializeIMA() < console.log("initializing IMA"); adContainer = document.getElementById('ad-container'); adDisplayContainer = new google.ima.AdDisplayContainer(adContainer, videoElement); adsLoader = new google.ima.AdsLoader(adDisplayContainer); adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); . function onAdsManagerLoaded(adsManagerLoadedEvent) < // Instantiate the AdsManager from the adsLoader response and pass it the video element adsManager = adsManagerLoadedEvent.getAdsManager( videoElement); >function onAdError(adErrorEvent) < // Handle the error logging. console.log(adErrorEvent.getError()); if(adsManager) < adsManager.destroy(); >> 

8. Запустите AdsManager.

Чтобы начать воспроизведение рекламы, вам необходимо запустить AdsManager . Для полной поддержки мобильных браузеров это должно запускаться при взаимодействии с пользователем.

. function loadAds(event) < // prevent this function from running on every play event if(adsLoaded) < return; >adsLoaded = true; // prevent triggering immediate playback when ads are loading event.preventDefault(); console.log("loading ads"); // Initialize the container. Must be done via a user action on mobile devices. videoElement.load(); adDisplayContainer.initialize(); var width = videoElement.clientWidth; var height = videoElement.clientHeight; try < adsManager.init(width, height, google.ima.ViewMode.NORMAL); adsManager.start(); >catch (adError) < // Play the video without ads, if an error occurs console.log("AdsManager could not be started"); videoElement.play(); > > .

9. Сделайте AdsManager отзывчивым

Чтобы убедиться, что размер рекламы динамически изменяется в соответствии с размером видеоплеера, если экран меняет размер или ориентацию, событие изменения размера окна должно вызывать adsManager.resize() .

. window.addEventListener('resize', function(event) < console.log("window resized"); if(adsManager) >); .

10. Слушайте события AdsManager

AdsManager также генерирует несколько событий, которые необходимо обработать. Эти события используются для отслеживания изменений состояния, запуска воспроизведения и приостановки видеоконтента, а также регистрации ошибок.

Обработка ошибок

Обработчик ошибок, созданный для AdsLoader может служить обработчиком ошибок для AdsManager , добавив новый обработчик событий с той же функцией обратного вызова.

. function onAdsManagerLoaded(adsManagerLoadedEvent) < adsManager = adsManagerLoadedEvent.getAdsManager( videoElement); adsManager.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); > .

Запуск событий воспроизведения и паузы

Когда AdsManager готов вставить рекламу для показа, он запускает событие CONTENT_PAUSE_REQUESTED . Обработайте это событие, вызвав паузу в базовом видеопроигрывателе. Аналогично, когда объявление завершается, AdsManager запускает событие CONTENT_RESUME_REQUESTED . Обработайте это событие, перезапустив воспроизведение основного видеоконтента.

. function onAdsManagerLoaded(adsManagerLoadedEvent) < adsManager = adsManagerLoadedEvent.getAdsManager( videoElement); adsManager.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); > . function onContentPauseRequested() < videoElement.pause(); >function onContentResumeRequested()

Запуск функции «нажми на паузу» на мобильных устройствах

Поскольку AdContainer накладывает элемент видео, пользователи не могут напрямую взаимодействовать с основным проигрывателем. Это может сбить с толку пользователей мобильных устройств, которые ожидают, что смогут нажать на видеоплеер, чтобы приостановить воспроизведение. Чтобы решить эту проблему, IMA SDK передает все клики, которые не обрабатываются IMA, из наложения объявления в элемент AdContainer , где они могут быть обработаны. Это не относится к линейным объявлениям в немобильных браузерах, поскольку при нажатии на объявление открывается ссылка перехода.

Чтобы реализовать функцию «нажми на паузу», добавьте в AdContainer обработчик кликов и запускайте события воспроизведения или паузы в базовом видео.

. function initializeIMA() < console.log("initializing IMA"); adContainer = document.getElementById('ad-container'); adContainer.addEventListener('click', adContainerClick); adDisplayContainer = new google.ima.AdDisplayContainer(adContainer, videoElement); adsLoader = new google.ima.AdsLoader(adDisplayContainer); . function adContainerClick(event) < console.log("ad container clicked"); if(videoElement.paused) < videoElement.play(); >else < videoElement.pause(); >> .

Запуск воспроизведения нелинейной рекламы

AdsManager приостанавливает видеоконтент, когда реклама готова к воспроизведению, но такое поведение не учитывает нелинейную рекламу, где контент должен продолжать воспроизводиться во время отображения рекламы. Для поддержки нелинейных объявлений слушайте, как AdsManager генерирует событие LOADED . Затем проверьте, является ли объявление линейным, и если нет, возобновите воспроизведение видеоэлемента.

. function onAdsManagerLoaded(adsManagerLoadedEvent) < adsManager = adsManagerLoadedEvent.getAdsManager( videoElement); adsManager.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.LOADED, onAdLoaded); > . function onAdLoaded(adEvent) < var ad = adEvent.getAd(); if (!ad.isLinear()) < videoElement.play(); >> 

Вот и все! Теперь вы запрашиваете и показываете рекламу с помощью IMA SDK. Чтобы узнать о более продвинутых функциях SDK, ознакомьтесь с другими руководствами или примерами на GitHub .

Отправить отзыв

Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.

Последнее обновление: 2024-01-24 UTC.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *