Menu Zavřít

Podpora v nezaměstnanosti v roce 2025: Každý nezaměstnaný na ni nárok nemá, je nutné splnit určité podmínky

10. 10. 2022
Doba čtení: 5 minut
Autor: Depositphotos

Ztráta zaměstnání a finanční nejistota může postihnout každého. Proto existuje podpora v nezaměstnanosti, kterou stát člověku vyplácí v období, kdy je nezaměstnaný a hledá si novou práci. Na podporu v nezaměstnanosti ovšem dosáhnou jen ti, kteří splní určité podmínky. Dávky lze navíc pobírat jen pět až jedenáct měsíců.

Co je podpora v nezaměstnanosti?

Podpora v nezaměstnanosti je sociální dávka, kterou stát vyplácí nezaměstnaným jedincům, pokud přišli kvůli ztrátě zaměstnání o veškeré své příjmy. Někdy se pak tato sociální dávka nesprávně označuje také jako ,příspěvek v nezaměstnanosti.

Podpora v nezaměstnanosti se vyplácí v pravidelných intervalech každý měsíc a slouží k tomu, aby člověku pomohla překlenout těžké období, kdy je bez finančních prostředků, hledá si novou práci a potřebuje se znovu postavit na vlastní nohy.

Délka podpory v nezaměstnanosti

Podporu v nezaměstnanosti by měl člověk pobírat jen po nezbytně nutnou dobu. Délka podpůrčí doby se navíc liší i podle věku pobírajícího (ve chvíli, kdy o dávku žádá):

  • pět měsíců – osoby mladší 50 let,
  • osm měsíců – osoby ve věku 50 až 55 let,
  • jedenáct měsíců – osoby starší 55 let.

Podmínky podpory v nezaměstnanosti

Jak si zajistit nárok na podporu v nezaměstnanosti? Aby člověk mohl pobírat dávky, nestačí pouze přijít o zaměstnání, a tím zároveň také o veškeré příjmy. Podmínky podpory v nezaměstnanosti jsou v současné době tři.

První nezbytnou podmínkou je registrace na Úřadu práce České republiky (ÚP ČR), kde musí být zájemce evidován jako uchazeč o zaměstnání. Do evidence uchazečů o zaměstnání je zařazen, pokud splní zákonem dané podmínky a odevzdá na příslušný úřad práce (podle trvalého bydliště) správně vyplněný formulář ,Žádost o zprostředkování zaměstnání.

Druhou podmínkou, kterou musí splnit, je minimální doba účasti na důchodovém pojištění (12 měsíců) v posledních dvou letech. To znamená, že člověk musel být minimálně rok zaměstnán nebo vykonávat samostatně výdělečnou činnost. Do účasti na důchodovém pojištění se ovšem započítává i takzvaná náhradní doba zaměstnání, což může být:

  • osobní péče o dítě ve věku do čtyř let,
  • pobírání invalidního důchodu (pro invaliditu třetího stupně),
  • příprava osoby se zdravotním postižením k práci,
  • osobní péče o fyzickou osobu se stupněm závislosti I, II nebo III, pokud s uchazečem o zaměstnání trvale žije a společně uhrazují náklady na své potřeby,
  • osobní péče o fyzickou osobu mladší 10 let, která se považuje za osobu s lehkou závislostí na pomoci jiné fyzické osoby,
  • výkon dlouhodobé dobrovolnické služby na základě smlouvy dobrovolníka s vysílající organizací, které byla udělena akreditace Ministerstva vnitra.

Naprostou samozřejmostí pak je, že člověk žádající o podporu v nezaměstnanosti je občan s trvalým pobytem na území České republiky.

Kdo nemá nárok na podporu v nezaměstnanosti?

Na podporu v nezaměstnanosti nemohou dosáhnout:

  • osoby ve starobním důchodu,
  • občané pobírající nemocenské dávky,
  • osoby ve vazbě a výkonu trestu,
  • osoby s nárokem na výsluhový příspěvek, jehož výše přesahuje výši případné podpory v nezaměstnanosti.

Žádost o podporu v nezaměstnanosti

Pokud člověk splní všechny podmínky a má nárok na podporu v nezaměstnanosti, musí ještě vyplnit formulář a podat oficiálně žádost o podporu v nezaměstnanosti. Tento formulář je k dostání na každém úřadu práce i online na stránkách Ministerstva práce a sociálních věcí.

Žádost lze podat buď osobně na podatelně úřadu práce, poštou (doporučeným dopisem), anebo elektronicky – prostřednictvím datové schránky nebo e-mailem s ověřeným podpisem.

Podpora v nezaměstnanosti v průběhu let

Výše podpory v nezaměstnanosti se podobně jako u ostatních sociálních dávek odvíjí od hranice životního minimaMaximální výše měsíční podpory v nezaměstnanosti představuje 58 % z průměrné mzdy stanovené MPSV (při rekvalifikaci jde o 65 %). V roce 2025 tedy činí maximální podpora v nezaměstnanosti 26 163 korun, zatímco maximální podpora při rekvalifikaci je 29 320 korun.

Rok Maximální měsíční podpora v nezaměstnanosti Maximální měsíční podpora při rekvalifikaci
2025 26 163 Kč 29 320 Kč
2024 24 608 Kč 27 578 Kč
2023 22 798 Kč 24 081 Kč
2022 21 488 Kč 24 081 Kč
2021 20 075 Kč 22 469 Kč
2020 19 398 Kč 21 729 Kč
2019 18 111 Kč 20 297 Kč

Zdroj: Ministerstvo práce a sociálních věcí

Výši podpory v zaměstnanosti definuje v České republice zákon č. 435/2004 Sb., o zaměstnanosti.

MM25_10_6

Výpočet podpory v nezaměstnanosti

Výše podpory v nezaměstnanosti závisí také na tom, jakou čistou měsíční mzdu člověk pobíral v posledním zaměstnání. Z toho se výše podpory vypočítává jako procentuální část. Také záleží na tom, jak dlouho člověk dávku pobírá – podpora v nezaměstnanosti se s ubíhajícími měsíci snižuje, až ji stát přestane vyplácet úplně.

První dva měsíce člověk pobírá 65 procent z průměrného čistého měsíčního výdělku. Další dva následující měsíce 50 procent. Ve zbývajících měsících výše podpory klesne až na 45 procent.

Délka podpory v nezaměstnanosti Procentuální výše podpory
První dva měsíce 65 procent
Třetí a čtvrtý měsíc  50 procent
Zbylé měsíce (pátý až jedenáctý) 45 procent

Zdroj: Ministerstvo práce a sociálních věcí

Úřad práce ovšem bude zajímat i to, jakým způsobem člověk přišel o své zaměstnání. Pokud k tomu nedošlo z vážných důvodů nebo byl pracovní poměr ukončen dohodou, máte již od prvních dní nárok pouze na podporu ve výši 45 procent čistého měsíčního výdělku.

Podpora v nezaměstnanosti a OSVČ

Nárok na podporu v nezaměstnanosti mají pochopitelně i osoby samostatně výdělečně činné, a to ve stejné procentuální výši jako zaměstnanci. Platí pro ně úplně stejné podmínky, což znamená, že musí splnit dvanáctiměsíční účast na důchodovém pojištění v posledních dvou letech a musí se registrovat na ÚP ČR.

Jediný drobný rozdíl bude v tomto případě ve výpočtu – výše podpory v nezaměstnanosti se bude vypočítávat z měsíčního vyměřovacího základu.

Výplata podpory v nezaměstnanosti

Podporu v nezaměstnanosti vyplácí příslušný úřad práce podle trvalého bydliště pobírajícího (půjde tedy o ten samý úřad, kde podával žádost). Dávky se vyplácí každý měsíc zpětně buď složenkou, nebo převodem na účet. Konkrétní termín výplaty pak závisí na příslušném pracovišti ÚP.

Výhodné je zaregistrovat se na ÚP ČR a podat žádost o podporu v nezaměstnanosti co nejrychleji, nejlépe do tří dnů po ztrátě zaměstnání, protože pak vyplácení dávek plynule naváže na ukončený pracovní poměr.

K čemu slouží podpora v nezaměstnanosti?
Podpora v nezaměstnanosti je sociální dávka, kterou stát vyplácí nezaměstnaným lidem, kteří přišli o práci, jsou bez příjmů a hledají si nové zaměstnání. Vyplácená finanční podpora jim pomůže překlenout těžké období a postavit se na vlastní nohy.
Kdo může podat žádost o podporu v nezaměstnanosti?
Žádost o podporu v nezaměstnanosti může podat každý nezaměstnaný člověk, který se v uplynulých dvou letech účastnil minimálně 12 měsíců na důchodovém pojištění a který je zaregistrován na Úřadu práce ČR v evidenci uchazečů o zaměstnání.
Z čeho se počítá podpora v nezaměstnanosti?
Pro výpočet podpory v nezaměstnanosti je nutné znát průměrnou čistou mzdu z posledního zaměstnání. Výše dávky se pak stanovuje procentuálně z této hodnoty.
Kdy chodí podpora v nezaměstnanosti?
Podpora v nezaměstnanosti patří mezi sociální dávky, které jsou vypláceny v pravidelných intervalech každý měsíc. Vyplácí se vždy měsíc zpětně. Přesný termín výplaty podpory v nezaměstnanosti ovšem není nijak striktně stanoven. Každý úřad si datum výplaty může nastavit individuálně.
  • Našli jste v článku chybu?
'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // 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); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // 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); // 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); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, 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(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // 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); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, 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(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // 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); // 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); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.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(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // 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 () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »